在声明之前使用php类

时间:2013-08-09 08:03:33

标签: php class

我想知道如何在其他类中调用方法内部类的方法调用方法是在使用内部的类之后声明的类中。 让我举个例子:

database.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不会对序列产生冲突。

2 个答案:

答案 0 :(得分:2)

我认为不可能,如果您使用命令行运行以下代码,您将收到“Segmentation fault”错误;

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

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

$x = new A();


它就像一个无限循环。

答案 1 :(得分:1)

首先你可以使用include_once / require_once,所以只有第一次需要文件时才会加载

此外,您可以使用autoloading

而不是使用全局变量,要么传递实例,要么提供某种工厂。依赖于全局变量对于封装是不利的,并且在OO代码中是丑陋的