我有一个新的PHP类,我想从控制器调用。在CakePHP文件夹结构中,我应该放置这个新类,以及从控制器调用或使用它的过程是什么?预先感谢您的合作!在CakePHP 3中放置自定义PHP类的位置?
回答
从我的角度来看,你可以重复使用任何自己的类以及任何第三方类作为实用类。如果是这样,那么你可以将该类放入src/Utility
文件夹中。请使用适当的命名空间。之后,您可以在CakPHP 3.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的对待那些作为“第三方依赖”(概念),他们建议把他们在“供应商”文件夹中。当新内容是您自己的实用程序项目时,您可以忽略他们的建议,以便不编辑该文件夹中的内容。
对于加载,使用良好的旧的php的require
功能家族。
http://book.cakephp.org/3.0/en/core-libraries/app.html
如果你碰巧在应用程序中不使用作曲家来,你将需要手动加载所有的供应商库自己。
您可以使用CakePHP全局常量/函数来构建require
所需的路径。
http://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html
APP
,APP_DIR
,WWW_ROOT
等
“*对于加载,请使用良好的旧php功能。*” - CakePHP使用名称空间和PSR自动加载器。除了使用古代代码之外,几乎没有必要再使用require。只要确保命名空间和路径匹配,并且在使用时会自动找到该类。 – burzum
当然,假设他会创建一个闪亮的现代文件,他可以使用自动加载。但是,如果他没有使用一整套现代化的公用设施,那么也许像使用旧式的第三方图书馆那样使用旧式的“包含”会更容易一些?如果他确定要写一个函数而不是一个类呢? OP的问题是以课程为中心,但更常见的情况是“我将要从一个文件中加载任何东西,甚至可能使用一套精心制作的旧套库来加载任何不适合的数据/图像/声音/视频PSR自动加载“。 – starlocke
你可以把它放在任何地方,你在/ src目录/文件夹需要。你可以收集你的自定义类的文件夹,如:界面,DTO,实用程序,自定义或其他。由于cakePHP 3.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包和作曲家包括它,所以它会被存储in“/ vendor”
- 1. 在CakePHP中放置自定义函数的位置
- 2. 在MVC 3中放置自定义视图模板的位置?
- 3. 在Laravel中放置自定义/新类文件的位置?
- 4. CakePHP 3 - 在哪里放置自定义的SQL代码
- 5. Rails 3:放置自定义验证器类的最佳位置在哪里?
- 6. 放置自定义数据的位置
- 7. 放置元素(自定义位置)
- 8. 将元素放置在Android中的自定义位置
- 9. 在Symfony2中放置自定义初始化代码的位置?
- 10. 在django中放置自定义验证器的位置?
- 11. 把装置放在自定义插件中的位置?
- 12. 在自定义的位置
- 13. Rails 3自定义方法位置
- 14. 在cakephp 3.0.11中存储自定义异常的位置?
- 15. 如何将窗口放置在Android上的自定义位置?
- 16. 如何将JScrollPane的滚动条放置在自定义位置?
- 17. 我可以自定义CakePHP配置文件夹位置吗?
- 18. 在Symfony Encore中放置tsconfig.json以定义TypeScript配置的位置?
- 19. 在MVC3中放置自定义配置文件提供程序的位置
- 20. 自定义UIControl子类在IB中为iOS设置位置
- 21. 将弹出窗口放置在自定义位置
- 22. Qt将小部件放置在自定义位置
- 23. 如何设置自定义UIView的大小/位置以将其放置在自定义UITableViewCell中?
- 24. Android位置无法返回自定义类别的位置
- 25. Linkify在textView中的自定义位置?
- 26. 在UITableView中自定义组的位置
- 27. UILabel在自定义UITableViewCell中的位置
- 28. 自定义UIPageControl的位置
- 29. p:growl的自定义位置
- 30. CakePHP在自定义数组中设置输入类型
如果你想从控制器中使用它,为什么你不能创建一个组件? – ADmad
是您为CakePHP应用程序或第三方资源编写的类吗? – drmonkeyninja
@drmonkeyninja是第三方课程。它有什么区别? – Jorge