这个问题在这里已经有了答案:Newselfvs.newstatic(3个答案)关闭6年前。我有一个类作为基类。然后我有几个继承自它的其他类。我想使用静态语法开始加载继承的类,但这种行为没有多大意义。直到现在,我都是这样加载类的,它完成了工作。$obj=newfoo();$something=$obj->ByID(1);我希望能够像这样调用ByID函数。$something=foo::Get()->ByID(1);上面的代码是有效的,但它不是调用继承类,而是加载基类。我想我明白为什么会这样,但这没有任何意义。在.NET中,“this”将始终应用于继承的对象,但在我这里它不是这样工作的。我
到处搜索这个问题的答案,但似乎没有其他人拥有它或真正担心它。这是问题所在:A类有一个getCMSFields()方法,它添加了一个名为“Root.SEO”的选项卡,其中包含一些字段。B类继承自A类并拥有自己的getCMSFields()方法,该方法首先调用$fields=parent::getCMSFields()并向$fields添加更多字段/选项卡。SEO选项卡始终位于B类中设置的任何内容之前,因为A类首先执行。但我希望它位于B类定义的两个选项卡之间的某个位置我尝试了$fields->removeByName('SEO')并且他们手动重新添加了B类中的选项卡。这很好,但我似乎无法找
假设我有以下情况:config=$config;}}classClientServiceextendsService{}classProductServiceextendsService{}是否可以在我的服务提供者中为我的服务的抽象父类注册依赖注入(inject)?我有一个根据规范动态生成的API,这些类中的每一个都必须扩展抽象服务,以便它可以继承基本功能。当我实例化一个子服务时,如何在我的抽象服务中注入(inject)依赖?编辑:这个问题是专门针对抽象类注入(inject)提出的,不可能绑定(bind)自动生成的子类。 最佳答案
我很久以前就读到过这个,但现在从未尝试过,我不记得这是否可能。是否可以在php5上扩展两个parent的类(class),例如class_d扩展了class_c和class_b此外,如果class_c和class_b本身是从class_a扩展的,你能做到这一点吗......所以你会得到这样的东西class_aclass_bclass_cclass_d 最佳答案 PHP不支持多重继承(您正在寻找的)。您可能想查看composition(其中一个类包含父类的实例)甚至interfaces如果它特别适用于您的情况。
假设我有一个父类classparent{}.....这个父类有3个子类classchild1{}classchild2{}classchild3{}这些子类还有更小的部分,比如classchild1subpar1{}classchild1subpar2{publicfunctionfoo(){echo"hi";}}classchild2subpar1{}classchild2subpar2{}现在,如何总结这一切classchild1extendschild1subpar1,child1subpar2{}classchild2extendschild2subpar1,childsubp
我不能说这是一个问题,但更多的是征求意见,我相信许多其他人可以从澄清这个问题中受益。这是我的实际案例:我有一个名为DataExchangeService的抽象类和许多扩展这个类的子类(这是我的MVC框架中的基CONTROLLER类)。处理数据定义(用户、类型、部分等)的管理模块在大多数情况下都具有100%相似性的添加、编辑、删除、列表方法。我知道这一点,因为我只使用搜索和替换来复制它们。现在问题不是我所有的DateExchangeService子类都处理数据定义,所以在足够多的情况下我不需要CRUD方法。多重继承将在另一个类中定义这些CRUD方法及其行为,并在需要的地方扩展这两个类,但
OBS:我直接在这里编码,因为我的代码要复杂得多。如果我编码:classSuperFoo{publicfunction__get($name){return$this->$name;}publicfunction__set($name,$value){$this->$name=$value;}}classFooextendsSuperFoo{private$bar='';}$foo=newFoo();$foo->bar="Whyitdoesn'twork?";var_dump($foo);结果:object(Foo){["bar":"Foo":private]=>string(0)''
我经常在我的类中使用存储选项数组的属性。我希望能够以某种方式合并父类中声明的默认值中的那些选项。我用一些代码进行了演示。classA{public$options=array('display'=>false,'name'=>'John');}classBextendsA{public$options=array('name'=>'Mathew');}现在,当我创建B时,我希望$options包含来自A::options的合并数组现在发生的是这个。$b=newB();print_r($b);array('name'=>'Mathew');我想要使用array_merge_recursi
我知道PHP5可以让您遍历类的属性。但是,如果该类扩展了另一个类,那么它也将包括在父类中声明的所有这些属性。这很好,没有什么可提示的。不过,我一直把SELF理解为指向当前类的指针,而$this也指向当前对象(包括从父类继承的东西)有什么方法可以只遍历当前类的属性。我问这个的原因....我正在使用CI并遍历$this包括大量我不需要的父属性。$m_val){echo"$s_key=>$m_val\n";}}}$o_child=newchild();$o_child->iterate()输出是s_parent=>Parentsezhi!s_child=>Childsezhi!s_fooba
这是我想要的配置:一个实体“Account”与另外两个实体“Author”和“AccountBackend”的JOINED继承。然后我希望“AccountBackend”与其他两个实体“Administrator”和“FeaturedAuthor”具有SINGLE_TABLE继承。这是我定义它们的方式:账户.php/***@Entity(repositoryClass="Repositories\Account")*@Table(name="accounts")*@InheritanceType("JOINED")*@DiscriminatorColumn(name="discr",t