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 然后只能被其他函数体访问
我已经在 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 然后只能被其他函数体访问