我正在尝试使用专有 mvc 处理项目,我们有一个名为 global.php 的文件,其中包含与此类似的代码...
<?php
session_start();
require('config/config.php');
require('classes/pdo_extender.php');
require('classes/mainClass.php');
require('classes/utilities.php');
$mainClass = new mainClass;
?>
然后我们在根目录中有一个页面,其中有以下代码
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/globals/global.php');
$mainClass->init();
?>
init 函数中的代码仅包含一个基于当前查看页面名称的文件...
public function init() {
$section=explode("/",$_SERVER['SCRIPT_NAME']);
$section=explode(".",$section[count($section)-1]);
include("controllers/".$section[0].".php");
}
假设我们在根 login.php 中,它包含 global.php 并调用 init 函数,而我不必重新声明 $mainClass,因此它包含 controllers/login.php 但现在在此页面上我必须重新声明 $mainClass = 新主类;
有没有办法让init函数中包含的文件仍然可以访问global.php中设置的初始$mainClass?
编辑:除了接受之外,我发现的另一个解决方案如下:
public function init() {
$section=explode("/",$_SERVER['SCRIPT_NAME']);
$section=explode(".",$section[count($section)-1]);
$mainClass= $this;
include("controllers/".$section[0].".php");
}