0

私は PHP アプリケーションを管理しており、今すぐ APC を有効にしたいと考えています。問題は、互いに require_once する 2 つのクラスがあることです。非常に基本的な例は次のようになります。

in class_a.php

require_once('path/to/class_b.php)';

class a extends something {
    //
}

in class_b.php

require_once('path/to/class_a.php');

class b extends something2 {
    //    
}

ただし、APC を有効にすると、"[apc-error] Cannot redeclare class class_b in class_b.php" が表示されます。これは、class_a.php の require_once() を介してクラスが既にロードされているためです。そのため、3 番目のファイルが class_b.php を必要とする場合、APC はエラーを発生させます。

この「循環参照のような」問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

これを解決する最善の方法は、循環依存自体を取り除くことです。私はそれが実際にCode Smellと見なされると思います。

この記事の手順に従ってみてください。別のアプローチを提供する必要があります。Java を _ read _できることを願っています...

于 2012-03-13T17:45:13.060 に答える
0

require_onceどうやら、呼び出しをオーバーライドして複数回含めることができる「機能」があるようです。を使用しているようですのでrequire_once、これが問題のようです。このチェックを無効にするにはapc.include_once_override、php.ini の設定を無効にするか、

[apc]
apc.include_once_override = 0

この設定には、重複/見つからないクラスなどの既知の問題があります。これが役立つかどうかを確認してください

于 2013-07-25T17:34:59.047 に答える