【问题标题】:Instantiating a vendor class in class constructor在类构造函数中实例化供应商类
【发布时间】:2012-12-10 06:05:54
【问题描述】:

在我的 CakePHP 2 应用程序中,我有这样的供应商。我需要在我的控制器类中创建这个供应商类的实例。因此,我将在控制器的不同功能中使用该实例。

App::import('Vendor', 'fancyVendor', array('file' => 'fancyVendor.php'));

class MyController extends AppController {

    public $fancyVendor;

    function beforeFilter() {
       $fancyVendor = new fancyVendor();
       $fancyVendor->setValue("12");
    }

    function showMe() {
       echo $fancyVendor->getValue();
    }
}

在我的 showMe 函数中,我无法获得我在 beforeFilter 函数中设置的值。有没有合适的方法来实例化它?

【问题讨论】:

    标签: php cakephp cakephp-2.0 instantiation


    【解决方案1】:

    您需要了解scope。您已经在beforeFilter() 范围内初始化了一个变量,然后尝试在showMe 范围内使用它。两者完全不同。

    您可以创建一个作用域为整个类的变量,通常称为属性...

    function beforeFilter() {
       $this->fancyVendor = new fancyVendor();
       $this->fancyVendor->setValue("12");
    }
    
    function showMe() {
       echo $this->fancyVendor->getValue();
    }
    

    还有一点需要注意的是可以使用App::uses()方法来加载类。根据您的命名,它会起作用。 (这种方式是懒加载的)

    App::uses('fancyVendor', 'Vendor');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      相关资源
      最近更新 更多