将文件中的函数导入 Symfony 中的类控制器的问题
Posted
技术标签:
【中文标题】将文件中的函数导入 Symfony 中的类控制器的问题【英文标题】:Problem to import a function in a file to a class controller in Symfony 【发布时间】:2020-03-20 23:14:55 【问题描述】:我想将我的函数 handleParameters()
添加到我的 AuthController
中,但我有“期望找到一个类......同时从资源导入服务......但它没有找到!”
HandleParameters.php
<?php
function handleParameters(array $aRequired, &$aRes, $requestMethod) ...
?>
AuthController.php
<?php
class AuthController extends Controller
public function getAuth()
require_once (dirname(__DIR__, 1) .'/Common/HandleParameters.php');
handleParameters($aRequired, $this->aRes, $_SERVER['REQUEST_METHOD']);
...
【问题讨论】:
消息来自 autowire,默认情况下,它会尝试打开它遇到的任何 php 文件并连接里面的类。只需将 HandleParameters.php 添加到 config/services.yaml 中的忽略部分。虽然跑题了,但实际上没有理由去做你在 Symfony 应用程序中所做的事情。 我正在学习 Symfony,所以如果您有其他更好的解决方案,我很乐意听取您的意见。我可以将 handleParameters 函数放入 AuthController 但因为它是其他 web 服务类的共享函数,所以我想将它分离到另一个文件中。 【参考方案1】:你可以使用 trait,例如: - 在 src/ 中创建一个 Tool/ 文件夹。 - 在此文件夹中创建一个文件HandleParametersTrait.php,名称必须以Trait结尾。HandleParametersTrait.php
<?php
namespace App\Tool;
trait HandleParametersTrait
public function handleParameters($message)
echo $message;
AuthController.php
<?php
namespace App\Controller;
use App\Tool\HandleParametersTrait;
class AuthController extends Controller
use HandleParametersTrait;
public function getAuth()
$this->handleParameters('hi');
...
【讨论】:
谢谢亚辛。我想过,但我的厨师希望它是一个简单的php函数,所以我正在寻找解决方案。【参考方案2】:默认情况下你所有的 php 文件必须是一个类所以如果你有错误
“期望找到一个类”
这是因为你的 HandleParameters.php
不是一个类
你有两个解决方案。
如果函数特定于您的 AuthController,您可以在控制器类中定义它,就像定义 getAuth()
一样。
否则:另一种方法是将特定的class MyService
定义为服务,然后您可以将该服务注入到您想要的任何类的构造函数中。
【讨论】:
以上是关于将文件中的函数导入 Symfony 中的类控制器的问题的主要内容,如果未能解决你的问题,请参考以下文章