gpt4 book ai didi

symfony - 将附加对象类添加到我的 symfony2 Controller 文件的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 22:17:52 25 4
gpt4 key购买 nike

我是 Symfony2 的新手,所以我边做边学。我的 Controller 类越来越大。我想用 functions() 或 objects->method() 来分解它。不幸的是,我不知道把代码放在哪里。 (实际上它非常简单的功能......但我可以将其包装在一个对象中......)

--我无法将它添加到我的 DefaultController.php 文件的底部。它出错了,而且不是漂亮的引导代码,无论是在 { } 的内部还是外部。

--我不能简单地将新的 NewObject.php 文件添加到 Controller 目录。那出错了。错误:FatalErrorException:...未找到 NewObject。

--我玩过 ../app/autoload.php 的手动模组,但这对于将一个简单的类添加到我的 ./SRC/包中没有任何意义。也许我应该构建一个 ./src/autoload.php 文件(类似于 ./vender/autoload.php),但该文件的内容对我来说根本没有意义。我根本无法弄清楚 AnnotationRegistry Loader 是如何工作的。

我错过了什么吗?这似乎太难了..我想要的是一个包装的“include”,这样我就可以在开发中和部署后使用这个类。

如何在我的代码中包含 NewObject.php(以及随附的 $newObject->function() )?

我被告知我可以添加一项服务,但对于这样一个看似简单的任务来说,这似乎是一个离谱的开销(同样,我想要做的就是清理我很长的 Controller php 代码......)

提前感谢您的建议。

最佳答案

所以您的项目结构看起来像这样,对吧?

project
-- app
-- bin
-- src
-- SomeName
-- SomeBundle
-- Controller
-- Entity
-- Resources
-- ...
-- vendor
-- web

而您只是希望在您的整个包中使用某种“助手”类。对吗?

如果是这样,那么你真的可以把它放在你的 src/ 目录中的任何地方......只要确保类名与文件名匹配,并且文件的路径匹配您在 PHP 代码顶部定义的命名空间。

有时当我这样做时,我会在我的包下创建一个名为“Helper/”的简单目录。其他时候,当应用程序更复杂时,我可能会更明确一点。但这是第一个案例的样子......

首先,将您的 /Helper 目录添加到您的包下,并创建类文件:

project
-- app
-- bin
-- src
-- SomeName
-- SomeBundle
-- Controller
-- Entity
-- Helper
-- SomeHelper.php
-- Resources
-- ...
-- vendor
-- web

SomeHelper.php 的内容可能如下所示:

<?php
namespace SomeName\SomeBundle\Helper;

class SomeHelper
{
public function doSomething()
{
...
}
}

因为您的命名空间与文件路径相匹配,它会自动加载,因此您无需担心 include 语句。只要包含 use 语句,您就可以在包中的任何位置实例化该类:

<?php
namespace SomeName\SomeBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use SomeName\SomeBundle\Helper\SomeHelper;

class DefaultController extends Controller
{
public function indexAction()
{
...
$helper = new SomeHelper();
$helper->doSomething();
...
}
}

关于服务的使用...是的,这可能有点矫枉过正,具体取决于您使用它的目的。当类需要了解它周围的应用程序时,创建服务很有帮助。例如,如果您正在创建一个向用户发送电子邮件的服务,它可能希望通过 Doctrine 服务访问您的数据库,或者它可能希望通过 Monolog 服务记录电子邮件事件。

但是,如果您的类不需要了解应用程序(称为“服务容器”),例如,如果它只是用于传输数据,那么辅助类可能更合适。

关于symfony - 将附加对象类添加到我的 symfony2 Controller 文件的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com