PHPでクラスライブラリを動的に構築/ロードする
-
06-07-2019 - |
質問
私はオブジェクト指向プログラミングにかなり慣れていません...
最終的には、サイト全体で使用されるクラスの大きなライブラリになるものを構築しています。明らかに、すべてのページにライブラリ全体をロードすることは時間とエネルギーの無駄です...
したがって、私がしたいことは、単一の" config"が必要です。各ページのphpクラスファイル、および「呼び出し」できるようにします。または&load; quot;必要に応じて他のクラス-したがって、必要に応じてクラスを拡張します。
私が知っていることから、スコープの問題のため、configクラスの関数を使用して他のファイルを単純にinclude()することはできません。
私のオプションは何ですか?開発者は通常、この問題をどのように処理し、最も安定しているのは何ですか?
解決
__ autoload()
を使用するか、ロードするオブジェクトファクトリを作成できます。必要なときに必要なファイル。
余談ですが、ライブラリファイルにスコープの問題がある場合は、おそらくレイアウトをリファクタリングする必要があります。ほとんどのライブラリは、任意のスコープでインスタンス化できるクラスのセットです。
以下は、非常に基本的なオブジェクトファクトリの例です。
class ObjectFactory {
protected $LibraryPath;
function __construct($LibraryPath) {
$this->LibraryPath = $LibraryPath;
}
public function NewObject($Name, $Parameters = array()) {
if (!class_exists($Name) && !$this->LoadClass($Name))
die('Library File `'.$this->LibraryPath.'/'.$Name.'.Class.php` not found.');
return new $Name($this, $Parameters);
}
public function LoadClass($Name) {
$File = $this->LibraryPath.'/'.$Name.'.Class.php'; // Make your own structure.
if (file_exists($File))
return include($File);
else return false;
}
}
// All of your library files should have access to the factory
class LibraryFile {
protected $Factory;
function __construct(&$Factory, $Parameters) {
$this->Factory = $Factory;
}
}
他のヒント
所属していません StackOverflow