我只是想在我的所有类上实现通用方法(代表数据库中的数据)。
我找不到为什么这不起作用的原因,有什么想法吗?(在 php 5.3.1 上)
class ActiveRecord {
public function getAttr($attr_name) {
foreach( $this as $key => $value) {
if( $key == $attr_name )
return $value;
}
throw new Exception( __CLASS__ . " : Attribut introuvable");
}
}
class MyClass extends ActiveRecord {
public $toto = "Variable public<br>";
protected $tutu = "variable protected<br>";
private $titi = "variable private<br>";
}
$class = new MyClass();
foreach( $class as $key => $value)
echo $key . " : " . $value . "<br>";
echo $class->getAttr("toto");
echo $class->getAttr("tutu");
echo $class->getAttr("titi");
它给了我这样的东西:
toto : 变量公开
变量公共
变量受保护致命错误:C:\wamp\www\restau-app\lib\activerecord.php:12 中未捕获的异常 'Exception' 和消息 'ActiveRecord : Attribut introuvable' 堆栈跟踪:#0 C:\wamp\www\restau-app \index.php(24): ActiveRecord->getAttr('titi') #1 {main} 在第 12 行的 C:\wamp\www\restau-app\lib\activerecord.php 中抛出
我只是不明白为什么从父类扩展的方法不能迭代子类的私有成员,所以它抛出了我的异常。