草庐IT

Inheritance

全部标签

php - 在 php 中使用 Decorator 的完整继承行为

我一般不太习惯设计pattern,也没用过Decorator。我想要一个可以根据上下文具有不同行为的对象。这些行为在不同的类中定义。我想装饰器可以解决问题。但我需要每个装饰器都可以访问相同的属性,并首先调用子方法,就像继承一样。所以这是我所做的:abstractclassComponent{/***UsedtoaccesslastchainDecorator**@varDecorator*/protected$this;protected$prop1;//Theseproperieshavetobeaccessedinanydecoratorsprotected$prop2;prote

php - 当父级公开时,如何将子构造函数设为私有(private)?

为什么不能在子类中隐藏构造函数?我收到以下异常:Fatalerror:AccessleveltoCIS\Logger\WPLogger::__construct()mustbepublic(asinclassKatzgrau\KLogger\Logger)in/builds/r2o/website/wp-content/mu-plugins/toolsets/lib/cis-logger/src/WPLogger.phponline12父类(superclass)代码(来自外部库):publicfunction__construct($logDirectory,$logLevelThr

php - 另一个继承问题

来自Google的快速搜索和关于多重继承的维基百科文章,其中引用:Multipleinheritancereferstoafeatureofsomeobject-orientedprogramminglanguagesinwhichaclasscaninheritbehaviorsandfeaturesfrommorethanonesuperclass.Thiscontrastswithsingleinheritance,whereaclassmayinheritfromatmostonesuperclass.我知道PHP不允许多重继承。然而,我找不到明确的答案是它是否允许多个类扩展一

php - 使用父类方法填充的子类属性

我是PHP新手,刚接触OOP。我几乎没有用于设置和获取属性的通用方法。我在几乎所有的类中都经常使用它们,我将这些方法放在一个类中并从中扩展其他类。现在我可以访问子类的方法,但不知道如何通过它们设置和获取子类的属性...父类base.phpclassBase{publicfunction__construct(){}function__set($propName,$propValue){$this->$propName=$propValue;}functionsetProperties(array$data){foreach($dataas$propName=>$propValue)$t

php - 从 PHP 中的子类访问 protected 方法

我至少可以使用两种基本方法从子类访问protected类方法:parent::myMethod();$this->myMethod();如果我不需要在子类中覆盖它,在这种情况下我必须这样做:functionmyMethod(){...parent::myMethod();...}最推荐的调用方式是什么?我个人觉得使用parent::myMethod()而不是$this->myMethod更舒服,因为第一个立即告诉我这个方法正在被继承。但我不确定在性能和最佳实践方面采用哪种方式。编辑:检查这个,这是我问题的真实情况。它使用CodeIgniter,但即使您不熟悉它,您也可能会了解它:cla

PHP:如何访问同名子类中父类(super class)的数据成员?

我到处搜索,但没有找到解决这个问题的方法。以下是我的代码,我想在其中访问子类中父类(superclass)的$myvar但我不知道如何?当我使用$this关键字时,它会访问同一个类中的变量,但不会访问父类(superclass)中的变量。请任何帮助将不胜感激。myvar;//hereIwanttoaccessthe$myvarofsuperclass}}$obj=newSecond();?>注意:我可以使用super关键字在java中实现相同的功能。 最佳答案 您可以创建一个从父类返回变量的自定义函数,但请记住变量应该是“私有(pr

php - 数组的静态继承

我很难解释我正在尝试做什么,所以我只提供一个例子classA{static$data=['a'];staticfunctiongetData(){returnstatic::$data;}}classBextendsA{static$data=['b'];}classCextendsB{static$data=['c'];}classDextendsB{static$data=['d'];}$a=newA;$b=newB;$c=newC;$d=newD;$a::getData();//Output:Array('a'),Expected:Array('a');$b::getData()

父类不能在静态上下文中使用 PHP const/static 变量

出于某种原因(哪个?),子类中定义的PHP常量/静态变量在父类的静态上下文中不可用。为什么?示例1:classModel{functiongetAll(){$query="SELECT*FROM".self::DATABASE_TABLE_NAME;//...}}classPostextendsModel{constDATABASE_TABLE_NAME='post';}$p=Post::getAll();当我运行时,我得到:Fatalerror:Undefinedclassconstant'DATABASE_TABLE_NAME'online3($query=...的行)示例2:cl

PHP:为父类设置变量

我有classMeatextendsFood{$var=Food::foodFunction…}我需要为Food类设置$var,我该怎么做?谢谢 最佳答案 如果food类中的$var是一个protected/public变量,你只需使用$this->var,如果是private则不能设置 关于PHP:为父类设置变量,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11245759/

PHP: "Call to undefined method"... 但方法已定义?

我有一个Database.php类,它是一个抽象的Singleton类:其他数据库扩展了这个类并实现了抽象函数,这样我就可以改变我使用的数据库,同时确保我的应用程序仍然可以工作,只要它使用这个抽象层中的函数(我已经省略了函数定义来自上面的代码)。我在PDO.php中有一个PDO类。它扩展了数据库,还包括与上面相同的instance()函数,但它没有自己的$_instance变量。classPDOextendsDatabase{//...publicstaticfunctioninstance(){$class=get_called_class();if(!self::$_instanc