我已经在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文档和其他一些答案,但是他们所做的只是让我感到困惑,而不是帮助我。
请帮助我弄清楚这一点,因为我本人还是科技界的初学者。
答案 0 :(得分:0)
要访问对象变量,您需要使用$ this。您的情况将createOrder()的第一行更改为// clang-format off
void codeThatWontBeFormatted() // my very long comment that won't be formatted
{
}
// clang-format on
您似乎还试图在构造函数中运行类parents构造函数。但是班上没有父母。
答案 1 :(得分:0)
您已将api
定义为类变量(property)。使用$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()
,则您的类可能是inherits一些基类。如果不是这种情况,请删除parent::__construct()
呼叫。
答案 2 :(得分:0)
要在您的课程中使用$ 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;
}
}
另外,正如其他人所通知的,您将构造一个父类,而您的“演示”类不会扩展任何其他类。
答案 3 :(得分:0)
您正在呼叫parent :: __ construct(new PaymentModel);在不扩展任何基类的类上。
答案 4 :(得分:0)
在类中声明变量$ api,然后只能由其他函数体访问