を作成しているとして、我々は次のクラス(簡体字)を持っていると仮定しますコールクラスメソッドはすぐにそれが拡張するオブジェクトが
class SuperConfig {
public $mainDir;
public function setDir() {
$this->mainDir = "path/to/dir";
}
}
このクラスは、プロジェクト内の他のすべてのクラスで拡張されることになって、そしてIれます親のsetDir()
機能を実行する必要があります。もちろん、私はこのようにそれを行うことができます:
class A extends SuperConfig() {
public function __construct() {
parent::setDir();
}
// ... other stuff is about to be done ...
}
と私はこのような子クラスにプロパティにアクセスできます。
class A extends SuperConfig {
public function doSomething() {
SuperConfig::mainDir;
}
}
これは実行可能なソリューションですが、私はクラスの複数の数百を持って、 1人ひとりでこれをやっているのは退屈なようです。したがって、このような何かをする方法があります:
明らかclass SuperConfig {
public $mainDir;
public function __extend() {
$this->setDir();
}
public function setDir() {
$this->mainDir = "path/to/dir";
}
}
__extend()
がそのように動作しませんが、私は思ったんだけど、私はこの作品を作ることができるかのトリックがあります。
ええと、親のコンストラクタを直接呼び出すことについては考えていませんでした。私が求めていた解決策ではなく、確かに私が思いついた解決策よりも優れていました。どうもありがとう。 :)ああ、 'setDir()'は実際には大きかったし、コンストラクタももっとやっている。ですから、コードを読みやすくするために、別の方法では優れていますが、問題を単純化するために、私はちょうど設定のミニバージョンを作成しました。 –