gpt4 book ai didi

php - 在我的自定义类中注入(inject) Silex $app

转载 作者:行者123 更新时间:2023-12-02 07:33:25 25 4
gpt4 key购买 nike

我在一个 Silex 项目上,我使用类来处理不同的问题:

$connection = new Connection($app);
$app->match('/connection', function () use ($app, $connection) {
$connexion->connectMember();
return $app->redirect($app['url_generator']->generate('goHome'));
})->method('GET|POST')->bind('doConnection');

在我的“Connection”类的函数“connectMember()”中,我有:

   [...]
if($isMember){
[...]
}else{
return $this->_app['twig']->render(
'message.twig',
array('msg' => "This member does not exist.", 'class' => 'Warning'));
}
[...]

但是render()方法不起作用。我想显示的错误消息没有显示,而是启动了“$ app-> redirect (...)”。

如何让我的类使用当前对象 Silex\Application ?有没有更好的方法将自定义类绑定(bind)到 Silex 应用程序的实例?

非常感谢您的回答!


版本:添加信息

如果我使用:

return $connexion->connectMember();

显示错误消息。但这不是一个好的解决方案。 'connection' 类调用也使用此代码的其他类:

$this->_app['twig']->render(...). 

如何使 $ this->_app(存在于我的类中)对应于在我的 Controller 中创建的变量 $app?

最佳答案

Connection(或Connexion??)类创建服务并注入(inject)应用程序:

use Silex\Application;

class Connection
{
private $_app;

public function __construct(Application $app)
{
$this->_app = $app;
}

// ...
}
$app['connection'] = function () use ($app) {
return new Connection($app); // inject the app on initialization
};

$app->match('/connection', function () use ($app) {
// $app['connection'] executes the closure which creates a Connection instance (which is returned)
return $app['connection']->connectMember();

// seems useless now?
return $app->redirect($app['url_generator']->generate('goHome'));
})->method('GET|POST')->bind('doConnection');

silex 的文档中阅读更多相关信息和 pimple (疙瘩是silex用的容器)。

关于php - 在我的自定义类中注入(inject) Silex $app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19565709/

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