私のアプリケーションには単一のエントリポイントがあり、それを呼び出しましょうindex.php
。
そのindex.php
中で、以下のようなクラスをインスタンス化します。
final class Griff {
public $a, $b, $c, $d, $e;
public function __construct() {
spl_autoload_register(array($this, 'autoload',));
$this->a = 'a';
// blah blah blah
new RouterGriff($this);
}
private function autoload($name) {
// autoload function
}
}
new Griff();
RouterGriff
内部Griff::__construct()
でインスタンス化されていることに気付くでしょうRouterGriff
。以下のようになります。
final class RouterGriff {
private $griff;
public function __construct(Griff $griff) {
$this->griff = $griff;
$this->griff->b = 'b';
$this->griff->c = 'c';
}
}
私の質問は次のとおりです。アプリケーションにレジストリのような構造が必要であるが、シングルトンを使用したくないため、Griff
から格納されるプロパティの変数を設定していることに気付くでしょう。RouterGriff
RouterGriff
代わりにプロパティを設定した方がいいでしょうGriff
か?または、アプリケーションが何かを出力する前に10クラス深くなる可能性があることを考えると、Griff
すべてのクラスに物事を行うための有効な方法を渡すことはできますか?
私は理にかなっていると思いますそしてありがとう
編集
逆に、私はこのようにそれを行うことをメンションします、
final class Griff {
public $a;
public function __construct() {
spl_autoload_register(array($this, 'autoload',));
$this->a = 'a';
// blah blah blah
new RouterGriff();
}
private function autoload($name) {
// autoload function
}
}
new Griff();
final class RouterGriff {
public $b, $c;
public function __construct() {
$this->b = 'b';
$this->c = 'c';
}
}