私は独自の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が含まれ、$ mainClassを再宣言せずにinit関数を呼び出すため、controllers / login.phpが含まれますが、このページでは$mainClassを再宣言する必要があります。 =新しい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");
}