子类不能实现父类实现的相同接口(interface)是正常行为吗?我得到了PHPv5.6interfaceblueprint{publicfunctionimplement_me();}classoneimplementsblueprint{publicfunctionimplement_me(){}}classtwoextendsoneimplementsblueprint{}//nofatalerrortriggeredforclasstwo编辑:所以即使我在子类two中实现了接口(interface)blueprint而没有方法,上面的代码也没有错误或警告>impement_me
可以在特征方法中使用父类的属性/方法吗?此代码有效,但它是好的做法吗?classChildextendsBase{useExampleTrait;publicfunction__construct(){parent::__construct();}publicfunctionsomeMethod(){traitMethod();}}traitExampleTrait{protectedfunctiontraitMethod(){//Uses$this->modelfromBaseclass$this->model->doSomething();}} 最佳答案
出于某种原因(哪个?),子类中定义的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
我有classMeatextendsFood{$var=Food::foodFunction…}我需要为Food类设置$var,我该怎么做?谢谢 最佳答案 如果food类中的$var是一个protected/public变量,你只需使用$this->var,如果是private则不能设置 关于PHP:为父类设置变量,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11245759/
我有一个类被其他几个类用作扩展程序,在一个实例中,父类的方法需要回调子类的方法。有办法做到这一点吗?我意识到PHP包含abstract类和函数,但需要每个子类都具有声明的abstract函数,在这种情况下我不需要.例如(这些是例子,不是现实生活)-Classparent{functionon_save_changes(){some_parent_function();if($_POST['condition']==='A')://Call'child_1_action()'elseif($_POST['condition']==='B')://Call'child_2_action()
假设我有以下内容:table_name}");}publicstaticget_all2(){returnquery("SELECT*FROM".self::table_name);}}classChildextendsMyParent{publicstatic$table_name='child';}?>假设query被正确定义,这些方法都不是我想要的:get_all()throwsFatalerror:Using$thiswhennotinobjectcontextin/path/to/foo.php在第xx行因为$this是一个实例变量。andget_all2()throwsFa
是否可以获取父类重写的非静态成员变量的值?我知道要获取STATIC成员变量的值,您可以使用self::$var1或ClassName::$var1,但是如何获取非静态成员变量的值?例如...classOne{public$var1='oldvar';}classTwoextendsOne{public$var1='newvar';publicfunctiongetOldVar(){//somehowgetoldvar}}提前致谢! 最佳答案 没有。一旦覆盖了非静态属性值,它就消失了。您不能像使用方法那样将parent::语法用于非静
编辑:*注意:很遗憾,我目前使用的是PHP5.2。我找不到像样的廉价主机提供5.3...在PHP中,self指的是定义被调用方法的类。这意味着如果您不重写子类中的方法,关键字self将引用父类,即使是从子类中调用也是如此。例如,这段代码:\n";}}classChildClassextendsParentClass{constNAME="ChildClass";publicfunction__construct(){echoself::NAME."\n";}}$test=newChildClass();$test->showName();?>将创建此输出:ChildClassParen
我正在尝试调用父类构造函数但它抛出错误fatalerror:无法调用构造函数同样的代码之前运行良好,我没有做任何更改,但突然不知道会发生什么,它抛出了这个错误。我在stackoverflow上阅读了一些答案,但他们说您的父类不包含构造函数,好吧,这不是我的情况,我的父类中有构造函数。这是我的代码:classDB{var$con;publicfunction__construct(){require_once'configs/dbconfig.php';$this->connect();}functionconnect(){try{$this->con=newPDO('mysql:hos
希望有人能帮助我。我想要一个“基/父”类,它包含两个子类之间的通用功能,但我也希望基/父类的构造函数决定使用哪个子类-所以我可以简单地创建一个ParentClass的实例,并使用ParentClass->method();但它实际做的是决定使用哪个child并创建该child的实例。我认为这样做的方法是返回newChildClass();在构造函数中,然后get_class()在“基本/共享”方法中返回父类。一个小例子(我的类比这个更复杂,所以我不直接调用子类可能看起来很奇怪):classParentClass{private$aVariable;publicfunction__con