为什么我需要在Controller中使用Init功能?

时间:2012-03-13 18:43:17

标签: php zend-framework

我是PHP的新手,我有几个问题:

我是否需要init函数或者我可以在没有init函数的情况下完成工作(无论我需要在代码中做什么)?

我这样说是因为NetBeans“有点”在我的项目中自动创建/添加了init()函数。

在我的代码中,我想在其中创建CRUD功能。

如果我不使用它,我可能遇到的问题和缺点是什么?

4 个答案:

答案 0 :(得分:4)

正如official docs所说:

  

init()方法主要用于扩展构造函数。通常,构造函数应该只设置对象状态,而不是执行太多逻辑。这可能包括初始化控制器中使用的资源(例如模型,配置对象等),或者分配从前端控制器,引导程序或注册表中检索的值。

您可以让控制器不覆盖init()方法,但无论如何都会在工作表下调用它。

答案 1 :(得分:2)

如果您是PHP新手,不要先使用框架。相反,你应该学习语言本身。

init()功能没有任何重要意义。它不是PHP中的类的要求。地狱..甚至__construct()在PHP中不是强制性的。

也就是说,Zend Framework在创建控制器后立即执行。如果您使用ZF,则需要它。 您可以阅读更多相关信息here

答案 2 :(得分:1)

Zend_Framework中的

init()用于大多数实际目的,您可以放置​​所需的代码来影响该控制器中的所有操作。(至少要测试所有操作)。 / p>

例如,我经常使用init()方法设置flashmessenger助手并设置我想要使用的会话命名空间。:

public function init() {

        if ($this->_helper->FlashMessenger->hasMessages()) {
            $this->view->messages = $this->_helper->FlashMessenger->getMessages();
        }
        //set the session namespace to property for easier access
        $this->_session  = new Zend_Session_Namespace('location');

    }

Netbeans也没有制作这种方法或控制器,Zend_Tool制作了控制器和利用Netbeans提供的接口的方法。这就是为什么在Netbeans的PHP设置中,你必须提供ZF.bat文件的路径,如果更改ZF安装,请单击注册提供程序按钮。

还有一件事......请注意,控制器可以使用更多方法,这些方法可以为调度周期的不同部分提供挂钩。你可能不经常需要它们,但你需要知道它们在那里。

答案 3 :(得分:0)

只是它的一个构造函数(控制器)......

init(){
$this->a = 1; //If we set something like this in the init
}

public function fooAction(){
echo $this->a; //1
}
public function barAction(){
echo $this->a; //1
}

即在init中初始化的变量,对象......将可用于该控制器中的所有操作