PHP OOP 向上层声明变量 class
PHP OOP declaring a variable to an upper class
首先,我想写两个class。
<?php
class A
{
function load($v)
{
$this->$v = "stack";
}
}
class Base
{
var $lib = null;
function __construct()
{
$this->lib = new A();
}
}
$bs = new Base();
$bs->lib->load("libx");
// Current calling method
$bs->lib->libx;
// But I want this
$bs->libx;
?>
我写了一个 MVC fremawork。
CodeIgniter 可以做到这一点,但我做不到。
我的英语很差。因此,请不要把我说得太复杂。
您可以向 Base 添加一个神奇的 __get
方法来查找 lib
中的 属性,如果存在 return:
class A
{
function load($v)
{
$this->$v = "stack";
}
}
class Base
{
var $lib = null;
function __construct()
{
$this->lib = new A();
}
public function __get($v)
{
if (property_exists($this->lib, $v)) {
return $this->lib->$v;
}
}
}
用法:
$bs = new Base();
$bs->lib->load("libx");
echo $bs->lib->libx, PHP_EOL;
echo $bs->libx, PHP_EOL;
输出:
stack
stack
首先,我想写两个class。
<?php
class A
{
function load($v)
{
$this->$v = "stack";
}
}
class Base
{
var $lib = null;
function __construct()
{
$this->lib = new A();
}
}
$bs = new Base();
$bs->lib->load("libx");
// Current calling method
$bs->lib->libx;
// But I want this
$bs->libx;
?>
我写了一个 MVC fremawork。 CodeIgniter 可以做到这一点,但我做不到。 我的英语很差。因此,请不要把我说得太复杂。
您可以向 Base 添加一个神奇的 __get
方法来查找 lib
中的 属性,如果存在 return:
class A
{
function load($v)
{
$this->$v = "stack";
}
}
class Base
{
var $lib = null;
function __construct()
{
$this->lib = new A();
}
public function __get($v)
{
if (property_exists($this->lib, $v)) {
return $this->lib->$v;
}
}
}
用法:
$bs = new Base();
$bs->lib->load("libx");
echo $bs->lib->libx, PHP_EOL;
echo $bs->libx, PHP_EOL;
输出:
stack
stack