クラスBの静的関数をパラメータとしてStart.php経由で渡しますが、ClassB.phpにClassA.phpを含めずに静的関数を呼びたいと思います。依存性注入を伴うパラメータとしてのPHP静的関数
私はこれをやりたいのは、クライアント固有のロジックがあり、それを集中的に分離して呼び出したいからで、本当に必要なときだけ(index.php)他のファイルに含めないでください。
私は3つのファイルを持っているとしましょう。
Start.php, ClassA.php, ClassB.php
ClassA.php
class A {
public static function foo($param) {
// do some special logic
// and return either true or false
}
}
ClassB.php
class B {
function bar($var, $func) {
foreach($var as $v) {
if($func($var)) {
echo 'OK';
}
}
}
}
Start.php
require_once('ClassA.php');
require_once('ClassB.php');
class Start() {
function init() {
$b = new B();
$test = array(1,2,3,4,5);
$b->bar($test, ['A', 'foo']);
}
}
Start::init();
ので、スタートはそれはOKだ、にClassAとClassBのに依存します。
しかし、私はClassBがClassAに依存しないようにしたいと思います。
このようにすると、クラスAが見つからないというエラーが表示されます。
これは可能ですか?それは良い練習とみなされていますか?
は、「しかし、私はClassBのはにClassAに依存する必要はありません。」 ClassBでClassAを使用する場合、ClassBはClassAに依存します。 – n00dl3
autoloadを使うと、必要に応じてクラスを読み込むことができます。 – n00dl3
おそらく、これをインターフェイスを使って実装できます。 – AmazingDreams