CakePHP - Include class from a directory outside t

2019-05-23 20:59发布

I am trying to include a miscellaneous library class from outside my app (it gets used by different apps).

My app is located at:

/var/www/websites/my_website/app/

And the class is located at:

/var/www/websites/libs/CakePHP/MyClass.php

In my bootstrap I'm struggling to figure out how to add the path for loading the classes from that directory:

App::build(array('Lib' => array('/var/www/websites/lib/')));

App::uses('MyClass', 'CakePHP');

$myClass = new MyClass();

1条回答
贼婆χ
2楼-- · 2019-05-23 21:13

Loading shouldn't be done in your bootstrap, but in your AppController's beforeFilter method instead.

Also, there is a reserved place for non-Cake libraries, being the app/Vendor directory. You can place all your classes in there and then load team easily with:

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

If it really needs to be in an alternative path, you need to specify and call the full path instead. And make sure to use the same names. Right now, you're specifying Lib, yet calling CakePHP as if that was a build by itself (which it's not). This won't work. It should look like this instead:

App::build(array('Lib' => array('/var/www/websites/lib')));
App::uses('MyClass', 'Lib/CakePHP'); // Define the subdirectory here

Also check the documentation on loading vendor files, it has quite some examples.

查看更多
登录 后发表回答