我对codeigniter非常陌生,我想知道控制器中构造函数的含义。我在codeigniter教程中看到了以下代码-
class upload extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->helper(form);
}
// rest of the class...
我的问题是构造函数是什么时候被调用的--它是在控制器每次服务请求时被调用的吗(例如,控制器类是为它收到的每个请求实例化的)?
发布于 2012-11-26 06:59:07
嗯,这是一个更一般的PHP问题。无论如何,正如您在手册中看到的那样,每次实例化该类时都会(自动)调用神奇的方法__construct():http://www.php.net/manual/en/language.oop5.decon.php
通常,在CI中调用构造函数是不必要的,除非您确实需要一个构造函数。在您发布的示例中,代码在类的每个实例化时加载帮助器-这与在每个方法中加载帮助器相同,只是节省了大量的输入并确保不会忘记。你也可以把你想要的库/helper/model放在config/autoload.php中的相应的autoload数组中(检查CI手册中的"autoloading“)
一旦您在子控制器中定义了一个构造函数,您就必须调用父构造函数(邮件CI_Controller类的),因为有创建主CI对象和加载所有类的位置,并且您的子控制器中也需要这些构造函数;如果做不到这一点,您的子类将单独构造并且不会继承。
我希望我说得很清楚,英语不是我的母语:)
发布于 2012-11-27 02:17:36
构造函数是的魔术方法,字面意思就是它叫做魔术方法。让构造器变得很酷的是,它会在任何方法之前为你做事情。因此,如果你有一个admin类,并且有人应该登录才能访问它--你可以在构造函数中检查登录,如果他们没有被授权,就把他们弹出。
在构造函数中,您可以加载您的类所需的模型、库、帮助器等,它们将可用于类中的任何方法。
您可以加载方法使用的变量。这对于模型来说真的很有用。
发布于 2016-11-29 12:22:03
不要在最新的apache和codeigniter中使用_construct()
函数
使用helperlin in index()
函数
https://stackoverflow.com/questions/13555822
复制相似问题