关于这类问题已有很多线索,但出于某些原因我无法解决这个问题。
在TestClass :: test()中,$ db为NULL。
$ db值在App构造中设置,我试图从扩展类函数中恢复该值。 (所以我不需要每次都设置$ db。)
非常感谢一些帮助,谢谢。
文件:index.php
<?php
include('classes/App.class.php');
$oApp = new App();
echo TestClass::test();
?>
文件:App.class.php
<?php
class App {
protected $db;
public function __construct () {
include_once("CAutoLoader.class.php");
$oCAutoLoader = new CAutoLoader();
$this->db = "someValue";
}
}
?>
文件:TestClass.class.php
<?php
class TestClass extends App
{
function __construct () {
}
public static function test () {
return $db;
}
}
?>
文件:CAutoLoader.class.php
<?php
class CAutoLoader {
CONST CLASS_EXTENSION = '.class.php';
public function __construct () {
spl_autoload_register(array($this, 'loader'));
}
private function loader ($className) {
include $className . self::CLASS_EXTENSION;
}
}
?>
答案 0 :(得分:0)
您忘记了this
中的TestClass
,静态方法无法访问非静态属性。删除static
关键字并返回正确的值。
public function test() {
return $this->db;
}
修改强>
如果您打算通过静态方法检索db
的实例,则必须将变量声明为静态。
class App {
protected static $db = 'hey';
...
}
class TestCase extends App {
public static function test() {
return parent::$db;
}
}
echo TestCase::test(); // returns hey