Phalcon 3.4:在控制器操作中注入组件而不使用调度程序事件

我正在尝试使用 laravel 方式在控制器操作中注入组件,请参阅 laravel 中的此示例:


class UserController extends Controller {


    /**

     * Store a new user.

     *

     * @param  Request  $request

     * @return Response

     */

    public function store(Request $request)

    {

        $name = $request->input('name');


        //

    }

}

他们使用称为“服务容器”的东西来解决操作参数,这适用于 Phalcon 吗?


我确实尝试过手动制作,但没有运气!


我需要这个功能来避免将每个组件定义为 Phalcon DI 中的服务。



largeQ
浏览 108回答 1
1回答

墨色风雨

我提供了 Phalcon 文档中描述的解决方案,但进行了一些调整以满足我的需求。我提出的解决方案是向服务容器添加新的调度事件侦听器以处理操作依赖关系,例如:$di->setShared('dispatcher', function() {    $evManager->attach("dispatch:beforeDispatch", function (Event $event, Dispatcher $dispatcher) {        try {            $methodReflection = new ReflectionMethod(                $dispatcher->getControllerClass(),                $dispatcher->getActiveMethod()            );            foreach ($methodReflection->getParameters() as $parameter) {                $parameterClass = $parameter->getClass();                if ($parameterClass instanceof ReflectionClass) {                    $dispatcher->setParam($parameter->name, new $parameterClass->name);                }            }        } catch (Exception $exception) {            throw new \Exception('', Dispatcher::EXCEPTION_HANDLER_NOT_FOUND);        }    });    $dispatcher = new Dispatcher();    $dispatcher->setEventsManager($evManager);    return $dispatcher;}每个框架都有自己的机制,所以如果你需要制作一些特别的东西,你必须手动制作。
打开App,查看更多内容
随时随地看视频慕课网APP