PHP - require_once是否启动所需类的__construct方法

时间:2018-03-08 18:36:29

标签: php

我正在学习PHP并尝试自己构建自己的框架,我将有一个前端控制器方法(index.php),我想知道我何时需要我的文件(在我的情况下,不同的类如Globals.php ,BaseController.php)my classe的构造方法将在需要时执行。

的index.php

<?php
//1 - Includes global variables
require_once 'config/Globals.php';
 
//2 - Includes Base Controller
require_once 'core/ControladorBase.php';
 
//Front Controller functions
require_once 'core/ControladorFrontal.func.php';
 
//Launch actions through controllers
if(isset($_GET["controller"])){
    $controllerObj=loadController($_GET["controller"]);
    launchAction($controllerObj);
}else{
    $controllerObj=loadController(default_controller);
    launchAction($controllerObj);
}
?>

BaseController

<?php
class BaseController{
 
    public function __construct() {
        require_once 'Connect.php';
        require_once 'BaseEntity.php';
         
        //Include all models
        foreach(glob("model/*.php") as $file){
            require_once $file;
        }
    }
     
    //Plugins and functionalities
     
    public function view($view,$data){
        foreach ($data as $assoc_id => $value) {
            ${$assoc_id}=$value; 
        }
         
        require_once 'core/ViewsHelper.php';
        $helper=new ViewsHelper();
     
        require_once 'view/'.$view.'View.php';
    }
     
    public function redirect($controller=default_controller,$action=default_action){
        header("Location:index.php?controller=".$controller."&action=".$action);
    }
     
    //Methods for the controllers
 
}
?>

1 个答案:

答案 0 :(得分:1)

不。

运行require_once时,PHP只会将此文件添加到当前代码中,允许您访问这些文件中的类/变量。但__construct()方法仅在您创建类的新实例时执行,例如$user = new User();