2014-12-07 69 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