Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-重写属性_Php_Properties_Overriding - Fatal编程技术网

PHP-重写属性

PHP-重写属性,php,properties,overriding,Php,Properties,Overriding,有没有办法防止在PHP中重写属性?如果是的话-怎么做?做这件事的唯一方法就是在类中使用\uu set()。 但,集合仅用于不可访问的属性 对于公共属性,我认为没有任何方法可以防止重写 您应该查看官方文档:“是的”,如果您将它们设置为常量。查看的答案,不要跳过评论 例如: class user { const ALWAYS_ONE = 1; } 我想,将属性声明为private也可以防止重载,但降序类也无法访问它们。我想这就是您想要的: class TheBaseClass { pri

有没有办法防止在PHP中重写属性?如果是的话-怎么做?

做这件事的唯一方法就是在类中使用
\uu set()
集合
仅用于不可访问的属性

对于公共属性,我认为没有任何方法可以防止重写

您应该查看官方文档:

“是的”,如果您将它们设置为常量。查看的答案,不要跳过评论

例如:

class user {
  const ALWAYS_ONE = 1;
}

我想,将属性声明为
private
也可以防止重载,但降序类也无法访问它们。

我想这就是您想要的:

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();
   }
}
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();

你是说像?我在类库中有一个名为pbase的受保护属性(例如),我想防止在子类中重写该属性。将其设置为私有?当我将其设置为私有时,我不能从子类调用它,但我只想防止重写。我想你需要一个方法来检索你的值,而不是普通属性。谢谢,但我需要在子类(它包含对象)中使用“属性接口”调用这个属性,我认为@Jared Farrish是对的,使用一个方法。(很难说你没有解释完整的场景)谢谢,但我知道设置的意思,也帮不了我,因为我的属性已经声明了。所以我认为你想做的是不可能的。。。试着找到另一种方法:将这些受保护的变量存储在私有数组中,并使用特定的_getSo访问它们。不管怎样,我取消了属性声明,然后…:)我是Jared Farrish,我同意这条消息。为了公平对待@dev null居住者,OP似乎建议一个方法不起作用(出于某种原因,它必须是一个属性)。不过,我已经给了你们两个投票。只有当你想要一个方法而不是一个属性,并且你控制子类定义时,这才有效。否:(.我不想将此属性称为属性:D谢谢。@user997379-您必须说明您需要如何实现它;简而言之,如果不使用方法,PHP中的功能听起来是不可能实现的。您是否可以发布一些代码,解释您希望在何处防止属性被重写,以及如何执行访问它们?@JaredFarrish comment给了我一个提示,如果您不想让父类像在基类中一样拥有自己的属性名称,那么现在是不可能的(对于属性,方法可以是
final
)。