0

我是 OOP 的新手,所以这里可能缺少一些基本的东西。在Foo类中,该$this->user_group变量对方法不可用bar()。这是为什么?有没有一种比包含$DB(和其他)每个实例化更简单的方法来让这些类相互交谈(这在我的实际代码中变得更加复杂,它有更多的类)。这是一个例子:

class Foo {
    private $Auth, $user_group;

    function __construct($DB) {
        $this->Auth       = new Auth($DB);
        $this->user_group = $this->Auth->get_user_permissions_group();
        // ("echo $this->user_group;" here will output the correct value)
    }

    public function bar() {
        // ("echo $this->user_group;" here will output nothing)
        return ($this->user_group > 1 ? 'cool!' : 'not cool!');
    }
} 

class Auth {
    private $DB;

    function __construct($DB) {
        $this->DB = $DB;
    }

    public function get_user_permissions_group() {
        $result = $this->DB->query('return user permissions level from DB');
        return $result; // int, 1-3
    }
}


$DB = new Database();
$Foo = new Foo($DB);
echo $Foo->bar();
4

1 回答 1

1

user_group 应该在 bar 函数中可见。你确定你没有在代码中的某个地方弄乱你的花括号块并Auth->get_user_permissions_group()返回一个整数吗?

您可以在此站点上仔细检查以下代码。它对我来说很好。

class Foo {
    private $user_group;

    function __construct($group) {
        $this->user_group = $group;
    }

    public function bar() {
        return ($this->user_group > 1 ? 'cool!' : 'not cool!');
    }
} 


$Foo = new Foo(3);
echo $Foo->bar();
于 2013-09-20T01:49:28.880 回答