0

クラスを使用してPHP 4で作業していますが、__autoload関数がないため、クラスが絡み合っているため、クラスをロードするのに問題があります。

クラスの船とクラスの動きがあります。クラス Ship には Movement オブジェクトが含まれ、クラス Movement には Ship オブジェクトが含まれます。

そのため、require Ship を実行すると、クラスが読み込まれ、新しい Movement に到達するとエラーがスローされ、逆になります。

いくつかの解決策?;)

4

1 に答える 1

0

PHP 4 は本当に古く、サポートされていません。最善の選択肢は、PHP 5 に移行することです。それができない場合は、すべてのクラス定義を必要とするブートストラップ ファイルを作成します (継承の場合は正しい順序で)。クラス定義ファイルにクラス定義のみが含まれていること (および $obj = new Movement のような実行可能コードは含まれていないこと) を確認し、アプリケーションで実際に実行している各ファイルでこのファイルを必要とします。

要点は、ステートメントの前に Movement のクラス定義は必要ないということnew Movementです。このステートメントが Ship のメソッドにある場合 (コンストラクターにある場合でも)、Ship.php を安全にロードし、次に Movement.php をロードしてから実行できます。コードとそれは動作します。

また、セッションを使用してその中でオブジェクトをシリアル化する場合は、セッションを開始する前にすべてのクラス定義をロードしてください。

于 2013-05-30T13:17:56.903 に答える