Phalcon Initialize() 不工作

sra*_*vis 2 phalcon

我有 2 个控制器,TEST1Controller并且TEST2Controller

TEST2Controller我有initialize()一个属性的函数设置值。

如果我尝试TEST2Controller直接从浏览器访问,则一切正常。

但是,当我TEST2Controller从调用方法时TEST1Controller,似乎initialize()没有在 中调用该函数TEST2Controller

TEST1Controller

namespace Modcont\Controller;

use Modcont\Controller\Test2Controller;

class Test1Controller extends BaseController
{

    function gettestAction()
    {
       $t = new Test2Controller(); // calling TEST2 Controller Method Within TEST1 Controller
       echo $t->dotestAction(" MYAPP ");
    }    
}
Run Code Online (Sandbox Code Playgroud)

TEST2Controller

namespace Modcont\Controller;

class Test2Controller extends BaseController
{   
    public $prefix;
    function initialize()
    {
        $this->prefix = 'your name is';
    }

    function dotestAction($name)
    {
        return $this->prefix.' : '.$name; 
    } 

}
Run Code Online (Sandbox Code Playgroud)

kbt*_*tzr 5

Phalcon 提供了两种初始化控制器的方式,分别是initializeonContruct方法。这两种方法的基本区别在于,只有在框架创建控制器以继续执行操作时initialize才会调用。由于您实例化了一个控制器对象ad-hoc,不会被调用,只会被调用。所以你需要把你的初始化逻辑放在那里:initializeonConstruct

function onConstruct()
{
    $this->prefix = 'your name is';
}
Run Code Online (Sandbox Code Playgroud)

此外,在控制器实现本地构造不鼓励,但如果你这样做,一定要调用父类的构造函数在自己的构造函数:parent::__construct();

所有这些信息都可以在 Docs 中找到。