【问题标题】:Get DI from within class in Phalcon从 Phalcon 的类中获取 DI
【发布时间】:2014-12-07 07:26:34
【问题描述】:

如何从自定义类中获取服务定位器(或依赖对象)?

我有:

class CustomerHelper extends Phalcon\Tag
{

}

并且需要获取flash 服务以在自定义函数中使用

【问题讨论】:

标签: php dependency-injection phalcon


【解决方案1】:

您始终可以使用此静态方法来获取任何类中的 DI:

$di = Phalcon\DI::getDefault();

如果您正在扩展 Phalcon\Tag,您还可以在静态上下文中使用 $this->getDI()self::getDI()

您可以在此处查看更多示例:http://docs.phalconphp.com/en/latest/reference/di.html

【讨论】:

  • 谢谢。如果我使用$di = Phalcon\DI::getDefault(); $messages = $di->get("flash")->getMessages();,它可以工作,但是如果我使用$this->getDI()self::getDI(),我会得到`调用非对象上的成员函数get()`
  • 那么你应该在你的应用程序启动时添加Phalcon\Tag::setDI($di)
【解决方案2】:

使用插件作为扩展类

例子:

<?php

use Phalcon\Mvc\User\Plugin, Phalcon\Tag;

class ClassName extends Plugin
{
    public function yourMethod()
    {
       $this->flash->error('msg');
       $this->flash->success('msg');
    }
}

希望这能解决您的问题...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多