0

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

4

1 回答 1

2

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

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

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

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

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

App::uses('fancyVendor', 'Vendor');
于 2012-12-19T21:51:19.647 回答