我是PHP的新手,我有几个问题:
我是否需要init函数或者我可以在没有init函数的情况下完成工作(无论我需要在代码中做什么)?
我这样说是因为NetBeans“有点”在我的项目中自动创建/添加了init()函数。
在我的代码中,我想在其中创建CRUD功能。
如果我不使用它,我可能遇到的问题和缺点是什么?
答案 0 :(得分:4)
正如official docs所说:
init()方法主要用于扩展构造函数。通常,构造函数应该只设置对象状态,而不是执行太多逻辑。这可能包括初始化控制器中使用的资源(例如模型,配置对象等),或者分配从前端控制器,引导程序或注册表中检索的值。
您可以让控制器不覆盖init()方法,但无论如何都会在工作表下调用它。
答案 1 :(得分:2)
如果您是PHP新手,不要先使用框架。相反,你应该学习语言本身。
init()
功能没有任何重要意义。它不是PHP中的类的要求。地狱..甚至__construct()
在PHP中不是强制性的。
也就是说,Zend Framework在创建控制器后立即执行。如果您使用ZF,则需要它。 您可以阅读更多相关信息here。
答案 2 :(得分:1)
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中初始化的变量,对象......将可用于该控制器中的所有操作