0

我在 PHP 类的 __construct(){} 方法中初始化了一个库的新实例,并将其等同于一个变量,

但现在我想使用这个变量来访问另一个函数内的库方法,但 PHP 不允许我这样做。

class Demo 
{

public function __construct()
    {

    parent::__construct(new PaymentModel);

    $this->api = new Api(config("razorpay", "key_id"), config("razorpay", "key_secret"));

    }

public function createOrder()
  {
    $order = $api->order->create();
    echo '<pre>';
    var_dump($order); die;

  }
}

我查看了 __construct 文档和其他关于堆栈溢出的答案,但他们所做的只是让我感到困惑,而不是帮助我。

请帮助我解决这个问题,因为我自己是技术领域的初学者。

4

5 回答 5

1

为了能够在你的类中使用 $this->api,你需要将它设置为一个属性。

所以 :

class Demo 
{
private $api;

public function __construct()
    {

    parent::__construct(new PaymentModel);

    $this->api = new Api(config("razorpay", "key_id"), config("razorpay", "key_secret"));

    }

public function createOrder()
  {
    $order = $this->api->order->create();
    echo '<pre>';
    var_dump($order); die;

  }
}

此外,正如其他人通知的那样,您将构建一个父类,而您的类“Demo”不扩展任何其他类。

于 2018-10-26T09:42:44.457 回答
0

在一个类中声明变量 $api 然后只能被其他函数体访问

于 2018-11-02T12:45:03.343 回答
0

要访问对象变量,您需要使用 $this。在您的情况下,将 createOrder() 中的第一行更改为$order = $this->api->order->create();

此外,您似乎正在尝试在构造函数中运行类父构造函数。但是该班级没有父母。

于 2018-10-26T09:41:27.960 回答
0

您已定义api为类变量(属性)。用于$this->api在您的类的其他方法中访问此类变量(属性)。

// This class probably inherits some base class
class Demo extends BaseDemo 
{

public function __construct()
    {

    parent::__construct(new PaymentModel);

    $this->api = new Api(config("razorpay", "key_id"), config("razorpay", "key_secret"));

    }

public function createOrder()
  {
    $order = $this->api->order->create();
    echo '<pre>';
    var_dump($order); die;

  }
}

还要检查你的类定义——如果parent::__construct()被调用,那么你的类可能继承了一些基类。如果不是这种情况,请删除parent::__construct()呼叫。

于 2018-10-26T09:41:35.330 回答
0

您正在调用 parent::__construct(new PaymentModel); 在不扩展任何基类的类上。

于 2018-10-26T09:49:03.473 回答