Creación de una instancia de una clase de proveedor en el constructor de clases

En mi aplicación CakePHP 2 tengo tal vendedor. Necesito crear una instancia de esta clase de proveedor dentro de mi clase de controlador. Así que usaré esa instancia dentro de las diferentes funciones de mi controlador.

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(); } } 

Dentro de mi función showMe , no puedo obtener el valor que configuré dentro de mi función beforeFilter . ¿Hay una manera adecuada de instanciarlo?

Necesitas aprender sobre el scope . Has inicializado una variable en el ámbito beforeFilter() y luego intentas usarla en el ámbito showMe . Los dos son completamente diferentes.

Puedes hacer una variable que esté dentro del scope de toda la clase, normalmente llamada propiedad …

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

Otro punto a tener en cuenta es que puede usar el método App::uses() para cargar la clase. Según su nombre funcionaría. (la clase está cargada perezosa de esta manera)

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