Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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 - Fatal编程技术网

如何在PHP类中生成最终属性?

如何在PHP类中生成最终属性?,php,Php,我希望防止子类重新声明某些父类的属性。 我该怎么做 编辑:如果父类具有“title”属性,我不希望子类可以(重新)声明具有此名称的属性将类变量定义为private private $_var = 'would not be changed by a child class'; 我不确定这是否有效,但您可以尝试使用反射类,检测是否有子对象重新声明了该属性,然后引发异常或其他情况 更新: 请查看以下链接: 及 这应该会有帮助这就是我所想的。但在此之前,我要求为变量classphp提供一个“fi

我希望防止子类重新声明某些父类的属性。 我该怎么做


编辑:如果父类具有“title”属性,我不希望子类可以(重新)声明具有此名称的属性

将类变量定义为private

private $_var = 'would not be changed by a child class';

我不确定这是否有效,但您可以尝试使用反射类,检测是否有子对象重新声明了该属性,然后引发异常或其他情况

更新:

请查看以下链接:


这应该会有帮助

这就是我所想的。但在此之前,我要求为变量classphp提供一个“final”关键字。PHP没有属性的final关键字,只有方法
private$\u var=”不会被子类更改,甚至在子类中可用@EliasVanOotegem:据我所知,任务是防止重新声明。如果可能需要读访问-写一个getter.true没有问题,但是请查看我答案的更新。特别是在使用setter时,或者如果私有变量是在父类的constructoragree中初始化的,则建议谨慎。。。。然而这是程序员的错。。。这就像程序员编辑父类的源代码一样。。。作为程序员,我们必须在保护和理智之间找到一个黄金点。你是对的,这将是程序员的错。但在大多数情况下,谁将维护您的代码或者谁将使用您的类是不确定的,因此记录代码和编写不易出错的代码是需要尽可能多地考虑的事情,因此我仍然会使用
const-invalidate
const-invalidate=parent::invalidate
。尽管如此,你还是有理由说程序员有责任知道他在做什么,并记录那些毫无意义的代码。孩子们总是可以“重新申报”财产,但是,这没有什么区别。也许这就是为什么没有“最终”属性,你只是不需要那种东西。