我有一个新的PHP类,我想从控制器调用它。在CakePHP文件夹结构中,我应该把这个新类放在哪里?从控制器调用或使用它的过程是什么?提前感谢您的合作!
从我的角度来看,您可以将任何自己的类以及任何第三方类重用为实用程序类。如果是,则可以将类放入src/Utility
文件夹中。请使用正确的命名空间。之后,您可以在CakPHP3.x.中的任何位置使用该类
如何放置:
假设您有一个名为Jorge
的类,使用文件名Jorge.php
将其保存到src/Utility
文件夹中。将namespace App'Utility;
语句放在Jorge.php
文件的顶部。
如何使用:
在要使用此类的文件中,只需放入use App'Utility'Jorge;
即可。之后,您可以将该类调用到该文件中。
替代解决方案:
如果你有很多课程的第三方套餐,那么你可以按照https://stackoverflow.com/a/28527683/1787600
您创建的大多数CakePHP派生代码都属于文档中列出的结构。
http://book.cakephp.org/3.0/en/intro/cakephp-folder-structure.html
对于"完全任意的实用程序类",我猜你的意思是,CakePHP将它们视为"第三方依赖项"(概念上),并建议将它们放在"vendor"文件夹中。当新内容是您自己的实用程序项目时,您可以忽略他们不编辑该文件夹中内容的建议。
对于加载,请使用好的老php的require
函数家族。
http://book.cakephp.org/3.0/en/core-libraries/app.html
如果您碰巧没有在应用程序中使用Composer,则需要自己手动加载所有供应商库。
您可以使用CakePHP全局常量/函数来构建require
所需的路径。
http://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html
APP
、APP_DIR
、WWW_ROOT
等
您可以将它放在/src/文件夹中任意位置。您可以在以下文件夹中收集自定义类:Interface、DTO、Utility、custom或其他任何文件夹。由于cakeHP3.x使用PSR-4自动加载器,因此一旦使用该类就会被实例化。您只需要记住添加正确的命名空间。例如,如果您想使用自定义界面,请添加文件src/custom/Owned.php
<?php
namespace App'Custom;
interface Owned
{
/**
* Find username owning object by object primary id
* @param $id
* @return string|int
*/
public function owner($id) : string;
}
...
然后你可以立即使用它:
...
class UsersTable extends Table implements Owned
{
...
如果你要重用你的类,更好的解决方案是创建你自己的packagist包,并由composer包含它,这样它就会存储在"/vvendor"中