我正在学习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
}
?>
答案 0 :(得分:1)
不。
运行require_once
时,PHP只会将此文件添加到当前代码中,允许您访问这些文件中的类/变量。但__construct()
方法仅在您创建类的新实例时执行,例如$user = new User();
。