これは私を夢中にさせています (わいせつな量のコーヒーを飲み、一晩中働くことは役に立ちません) アプリケーション内のどこからでもクラスにアクセスしたいと考えています。インデックス ページ内でクラスをインスタンス化します (lib/classes が自動的に読み込まれます) が、グローバル アクセスを取得できないようです。これは私のインデックスページです:
function __autoload($class)
{
require LIBS . $class .'.php';
}
$Core = new Core($server, $user, $pass, $db);
これにより、Lib/classes が完全に自動ロードされ、Core がインスタンス化されます (これは、Lib/core.php 内で自動ロードされます)。
次に、コア内で、通常のデータベース接続を作成し、URL を取得して確認し、いくつかのクラス (自動ロードされます) をインスタンス化する場所で、__construct を作成します。ここでテンプレート クラスをインスタンス化します。コントローラーとモデル内のクラスにアクセスするためのグローバル アクセスが必要です。
class Core {
function __construct(DATABASE VARIABLES IN HERE)
{
$this->Template = new Template();
}
}
わかりましたので、親モデルと親コントローラー内で次のことを行うことで、テンプレート オブジェクトにアクセスできると考えました。
class Controller
{
public $Core;
function __construct()
{
global $Core;
$this->Core = &$Core;
}
}
$this->Core->Template->get_data();
コントローラーはすべてのコントローラーを拡張する親であるため、テンプレートメソッドにアクセスするために書くだけでよいと思いましたか? これはエラーをスローするようです。
誰かが私に手を差し伸べてくれるなら、それは私が見落としていた単純なものに違いないと確信しています. この問題は私を夢中にさせています。
また、__construct 内の子コントローラー内の補足事項として、Parent を構築します。parent::_construct();
エラーは と のようNotice: Trying to get property of non-object
ですFatal error: Call to a member function get_data() on a non-object
。