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