在CakePHP 3中放置自定义PHP类的位置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CakePHP 3中放置自定义PHP类的位置?相关的知识,希望对你有一定的参考价值。

我有一个新的php类,我想从Controller调用。在CakePHP文件夹结构中,我应该放置这个新类,以及从控制器调用或使用它的过程是什么?在此先感谢您的合作!

答案

从我的角度来看,您可以重用任何自己的类以及任何第三方类作为实用程序类。如果是这样,那么您可以将该类放入src/Utility文件夹中。请使用正确的命名空间。之后,您可以在CakPHP 3.x中的任何位置使用该类。

如何放置:

比如说,你有一个名为Jorge的类,使用文件名src/Utility将其保存到Jorge.php文件夹中。把namespace AppUtility;语句放在你的Jorge.php文件的顶部。

如何使用:

你想在哪个文件中使用这个类,只需要输入use AppUtilityJorge;。之后,您可以将该类调用到该文件中。

替代解决方案:

如果您有许多课程的第三方包,那么您可以关注https://stackoverflow.com/a/28527683/1787600

另一答案

您创建的大多数CakePHP派生代码都属于文档概述的结构。

http://book.cakephp.org/3.0/en/intro/cakephp-folder-structure.html

对于“完全随意的实用程序类”,我猜你的意思,CakePHP将这些视为“第三方依赖”(概念上),他们建议将它们放在“vendors”文件夹中。当新内容是您自己的实用程序项目时,您可以忽略他们的建议,即不编辑该文件夹中的内容。

要加载,请使用旧的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

APPAPP_DIRWWW_ROOT

另一答案

您可以将它放在/ src /文件夹中的任何位置。您可以在以下文件夹中收集自定义类:Interface,DTO,Utility,Custom或其他。由于cakePHP 3.x使用PSR-4自动加载器,因此一旦使用,该类将被实例化。您只需要记住添加正确的命名空间。例如,如果要使用自定义界面添加文件src / Custom / Owned.php

<?php
namespace AppCustom;
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包含它,所以它将存储在“/ vendor”中

以上是关于在CakePHP 3中放置自定义PHP类的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Code 中放置自定义输入以进行调试

如何在同一个xib中放置自定义单元格和表格视图?

我可以在 iPhone 的 CLLocationManager 中设置自定义位置吗

CakePHP 3.x创建表单模板

php Wordpress在单词中设置自定义excrept长度。

CAKEPHP 3 和 Dompdf - 缺少 Cpdf.php 类