我是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();
答案 0 :(得分:1)
user_group应该在bar函数中可见。你确定你没有在代码中的某处弄乱你的花括号块,而Auth->get_user_permissions_group()
会返回一个整数吗?
您可以仔细检查以下代码on this site。它对我来说很好。
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();