PHP构造函数变量无法在以下函数中访问

时间:2018-10-26 09:37:39

标签: php class constructor class-constructors

我已经在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文档和其他一些答案,但是他们所做的只是让我感到困惑,而不是帮助我。

请帮助我弄清楚这一点,因为我本人还是科技界的初学者。

5 个答案:

答案 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,然后只能由其他函数体访问