2014-12-07 74 views
2

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

我:

class CustomerHelper extends Phalcon\Tag 
{ 

} 

,并需要获得使用flash服务于一体的自定义函数

+0

而是注射服务定位器,为什么不直接注入'flash'服务的? – 2014-12-08 01:06:35

+0

我该怎么做呢? – Lock 2014-12-08 01:54:57

+0

这一切都在文档中:http://docs.phalconphp.com/en/latest/reference/di.html – 2014-12-08 02:06:32

回答

0

使用插件的扩展分类

例子:

<?php 

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

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

希望这解决了你的问题...

2

您可以随时使用这个静态方法来获取DI任何类:

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

如果要扩展尔康\标签,有你也可以在一个静态的环境中使用$this->getDI()self::getDI()

你可以在这里看到更多的例子:http://docs.phalconphp.com/en/latest/reference/di.html

+0

谢谢。如果我使用'$ di = Phalcon \ DI :: getDefault(); $ message = $ di-> get(“flash”) - > getMessages();',但是如果我使用'$ this-> getDI()'或'self :: getDI()',调用一个非对象的成员函数get()# – Lock 2014-12-07 22:40:14

+0

然后,当应用程序启动时,您应该添加'Phalcon \ Tag :: setDI($ di)'。 – zsilbi 2014-12-08 07:55:35