php 构造函数变量未在以下函数中访问

php constructor variable not getting accessed in the functions below

我已经在 PHP class 的 __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 文档和此处关于堆栈溢出的一些其他答案,但他们所做的只是让我感到困惑,而不是帮助我。

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

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

您似乎也在尝试 运行 构造函数中的 classes 父构造函数。但是 class 没有父项。

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

// 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;

  }
}

同时检查您的 class 定义 - 如果 parent::__construct() 被调用,那么您的 class 可能 inherits 一些基础 class。如果不是这种情况,请删除 parent::__construct() 调用。

为了能够在您的 class 中使用 $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;

  }
}

此外,根据其他人的通知,您将构建父级 class 而您的 class 'Demo' 不会扩展任何其他 class.

您正在调用 parent::__construct(new PaymentModel);在 class 上,它不扩展任何基础 class。

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