草庐IT

PHP 子类不能实现相同的接口(interface)父类实现

子类不能实现父类实现的相同接口(interface)是正常行为吗?我得到了PHPv5.6interfaceblueprint{publicfunctionimplement_me();}classoneimplementsblueprint{publicfunctionimplement_me(){}}classtwoextendsoneimplementsblueprint{}//nofatalerrortriggeredforclasstwo编辑:所以即使我在子类two中实现了接口(interface)blueprint而没有方法,上面的代码也没有错误或警告>impement_me

php - 我可以在特征中使用父类的属性吗?

可以在特征方法中使用父类的属性/方法吗?此代码有效,但它是好的做法吗?classChildextendsBase{useExampleTrait;publicfunction__construct(){parent::__construct();}publicfunctionsomeMethod(){traitMethod();}}traitExampleTrait{protectedfunctiontraitMethod(){//Uses$this->modelfromBaseclass$this->model->doSomething();}} 最佳答案

父类不能在静态上下文中使用 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 - 从父类调用子方法

我有一个类被其他几个类用作扩展程序,在一个实例中,父类的方法需要回调子类的方法。有办法做到这一点吗?我意识到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()

php - 在 PHP 父类(super class)的静态方法中访问子类的静态属性的正确方法是什么?

假设我有以下内容: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

php - 是否可以获取父类的重写非静态成员变量的值?

是否可以获取父类重写的非静态成员变量的值?我知道要获取STATIC成员变量的值,您可以使用self::$var1或ClassName::$var1,但是如何获取非静态成员变量的值?例如...classOne{public$var1='oldvar';}classTwoextendsOne{public$var1='newvar';publicfunctiongetOldVar(){//somehowgetoldvar}}提前致谢! 最佳答案 没有。一旦覆盖了非静态属性值,它就消失了。您不能像使用方法那样将parent::语法用于非静

php - 在 PHP 5.2 中,如何在子类中创建一个常量以用于父类中的方法?

编辑:*注意:很遗憾,我目前使用的是PHP5.2。我找不到像样的廉价主机提供5.3...在PHP中,self指的是定义被调用方法的类。这意味着如果您不重写子类中的方法,关键字self将引用父类,即使是从子类中调用也是如此。例如,这段代码:\n";}}classChildClassextendsParentClass{constNAME="ChildClass";publicfunction__construct(){echoself::NAME."\n";}}$test=newChildClass();$test->showName();?>将创建此输出:ChildClassParen

php - 父类构造函数调用错误?

我正在尝试调用父类构造函数但它抛出错误fatalerror:无法调用构造函数同样的代码之前运行良好,我没有做任何更改,但突然不知道会发生什么,它抛出了这个错误。我在stackoverflow上阅读了一些答案,但他们说您的父类不包含构造函数,好吧,这不是我的情况,我的父类中有构造函数。这是我的代码:classDB{var$con;publicfunction__construct(){require_once'configs/dbconfig.php';$this->connect();}functionconnect(){try{$this->con=newPDO('mysql:hos

php - 从父类返回子类

希望有人能帮助我。我想要一个“基/父”类,它包含两个子类之间的通用功能,但我也希望基/父类的构造函数决定使用哪个子类-所以我可以简单地创建一个ParentClass的实例,并使用ParentClass->method();但它实际做的是决定使用哪个child并创建该child的实例。我认为这样做的方法是返回newChildClass();在构造函数中,然后get_class()在“基本/共享”方法中返回父类。一个小例子(我的类比这个更复杂,所以我不直接调用子类可能看起来很奇怪):classParentClass{private$aVariable;publicfunction__con