有没有办法防止PHP中的覆盖属性?如果是的话 - 怎么样?
答案 0 :(得分:4)
我认为这就是你想要的:
class A{
private $a;
public function __construct(){
$this->a = 'A';
}
public function __get($property){
return $this->{$property};
}
}
class B Extends A{
public function getA(){
return $this->a;
}
public function __get($property){
return parent::__get($property);
}
}
$b = new B;
echo $b->getA();
答案 1 :(得分:1)
做这种事情的唯一方法是在课堂上玩__set()
。
但,__set
仅用于不可访问的属性。
对于公共财产,我认为没有办法阻止覆盖。
您应该查看官方文档:http://fr2.php.net/manual/en/language.oop5.overloading.php
答案 2 :(得分:1)
class TheBaseClass {
private $nomod = 'foo';
public function getNoMod() {
return $this->nomod;
}
}
class TheChildClass extends TheParentClass {
public function funcUsesNomod(){
return 'The value of nomod is '. $this->getNomod();
}
}
答案 3 :(得分:0)
“是的”,如果你让它们成为常数。请参阅How to implement a read-only member variable in PHP?的答案,不要跳过评论。
示例:
class user {
const ALWAYS_ONE = 1;
}
我想,将属性声明为private
也可以防止重载但是降序类也无法访问它们。