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