在类构造函数中实例化供应商类

时间:2012-12-19 20:50:27

标签: php cakephp cakephp-2.0 instantiation

在我的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 函数中设置的值。有没有正确的实例化方法?

1 个答案:

答案 0 :(得分:2)

您需要了解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');