3

メソッドを呼び出した他のクラスのメソッド内のクラスのメソッドを、内部で使用するクラスの後に宣言されたクラスに呼び出すにはどうすればよいのでしょうか。例を示しましょう。

データベース.php:

class Database{
    modifyUser($field,$change){
        global $logging;
        if($database->query('MYSQL QUERY')){
            $logging->modifyUser($field,$change);
        }
    }
}
$database = new Database;

Logging.php:

class Logging{
    modifyUser($field,$change){
        global $database;
        $database->query('Mysql Query for Logging');
    }
}
$logging = new Logging;

今の問題は、次のようにインクルードファイルでトップクラスを使用する場合です:

user.php

include('database.php');
include('logging.php');

php は、まだクラスとして宣言されていない $logging 変数を使用するとエラーを表示します。そして、私がこのように変更した場合:

user.php

include('logging.php');
include('database.php');

同じエラーですが、$database; の場合です。PHPがシーケンスに対して競合しないという使い方がわかりません。

4

2 に答える 2

2

コマンドラインで次のコードを実行すると、「セグメンテーション違反」エラーが発生します。

class A
{
    private $b;
    public function __construct()
    {
        $b = new B();
    }
}

class B
{
    private $a;
    public function __construct()
    {
        $a = new A();
    }
}

$x = new A();


無限ループのようなものです。

于 2013-08-09T09:47:01.583 に答える