3

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

数据库.php:

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

记录.php:

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

现在的问题是如果在包含的文件中使用顶级类,如下所示:

用户.php

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

php 显示一个错误,您使用了尚未声明为类的 $logging 变量。如果我这样改变:

用户.php

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

同样的错误,但对于 $database; 我不知道如何使用它,PHP 不会与序列发生冲突。

4

2 回答 2

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();


它就像一个无限循环。

于 2013-08-09T09:47:01.583 回答
1

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

此外,您可以使用自动加载

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

于 2013-08-09T08:46:44.700 回答