草庐IT

Inheritance

全部标签

php - Doctrine Inheritance - 从 Joined table 继承 Single_Table

这是我想要的配置:一个实体“Account”与另外两个实体“Author”和“AccountBackend”的JOINED继承。然后我希望“AccountBackend”与其他两个实体“Administrator”和“FeaturedAuthor”具有SINGLE_TABLE继承。这是我定义它们的方式:账户.php/***@Entity(repositoryClass="Repositories\Account")*@Table(name="accounts")*@InheritanceType("JOINED")*@DiscriminatorColumn(name="discr",t

php - 在 PHP 中获取扩展类的当前工作目录

我有一个抽象类“Class”。类子类扩展了类。Class抽象类有如下调用:is_readable('some_file.ext')如何强制抽象类的子类在它们所在的文件夹中查找文件,而不是在父抽象类的文件夹中查找文件,而不重写子类中的方法?即如果摘要在类/抽象/Class.phpchild在classes/children/Subclass.php,如何让Subclass.php在classes/children/而不是classes/abstracts中查找some_file.ext,而不在子类中明确定义它? 最佳答案 您可以使用R

php - 调用具有相同签名/名称的父函数

A和B具有相同签名的函数——让我们假设:foo($arg)——并且classAextendsB。现在我有一个实例:$a=newA();$a.foo($data);我还可以通过$a运行父级(B)的foo()函数吗?还是它被覆盖了?谢谢!尼美 最佳答案 它被覆盖了,但如果你想同时使用两者,你​​可以这样做:functionparentFoo($arg){returnparent::foo($arg);}如果您希望子函数调用父函数,请执行以下操作:functionfoo($arg){$result=parent::foo($arg);//

php - 从 Symfony/Twig 中的覆盖版本访问父模板

我有一个第三方包OriginalBundle,我想自定义其中的一些模板。为此,我使用theoverridemethodshownintheSymfonydocs设置了一个Symfony包MyCustomBundle.然后我使用MyCustomBundle从OriginalBundle创建一些Twig模板的覆盖版本。但是,我希望能够从我的版本访问原始模板(例如扩展它)并覆盖一些block。但是,如果我尝试做这样的事情:{#MyCustomBundle:Foo:bar.html.twig#}{%extends'OriginalBundle:Foo:bar.html.twig'%}{%blo

php - 在继承树中获取 PHP 对象的祖先

我有一个对象,想列出所有父类,直到stdClass或其他什么。我已经在我的数据库表中添加了一个多态字段(比如类别)并且想要自动化我的查找器方法以便也返回父类(superclass),这样我可以在我知道不一定是最终的点跳入继承树子类:FoodCategory::find_by_id(10)===Category::find_by_id(10)SELECT*FROMcategoriesWHERE.....ANDtypeIN('FoodCategory','Category');大概是:functionget_class_lineage($object){$class=get_parent_

php - Doctrine 2 索引继承

我是Doctrine2的新手,我正在尝试弄清楚如何使用它进行索引继承。我想要实现的是拥有一个基类,该基类定义了一些默认列以及应用程序中所有实体的必要索引。示例:我的应用程序中的所有表都有created_on和modified_on,所以我准备了一个包含这两列的基础@MappedSuperclass.这是我的代码:我想强制created_on成为一个索引,所以我在这个特定列的基类中放置了@Index注释。希望这将为Member生成2个索引,即created_on和email_address+password组合。然而,这会导致基类的索引被子类覆盖,因此created_on不是索引。/**

php - 方法链和类继承

我想我或多或少地掌握了OOP/Inheritance,我想我也理解了方法链的基础知识。但是我仍然对如何实际使用其中的一些内容感到困惑。我想做一些我之前在使用Magento时看到的东西:在Magento中,我看到了方法链中使用的某种“选择器函数”。这有点难以用语言表达,但大致是这样的:$categoryName=Mage::getModel('catalog/category')->load($categoryId)->getName();我感兴趣的是load($categoryId)部分,因为它是一个函数,它选择某个实例并允许我在该特定实例上运行一个函数。现在,我正在编写一个模块,允许

php - Codeigniter 和多重继承?

想知道这是否可能或PHP的限制,谷歌搜索似乎是这种情况,但也许我在这里错过了一个聪明的解决方案。希望这是有意义的。现在我的站点有两个部分,一个是管理端,另一个是客户端。我已经能够将它分成两个继承自基MY_Controller类的Controller(管理员和客户端),但我遇到的问题是实现我的身份验证Controller。客户端/管理员登录之间有很多共享代码,现在我要么必须为扩展基础的每个管理员和客户端创建一个授权Controller(这意味着很多重复的代码),要么只是扩展MY_Controller类并在每个函数中使用if/then,这会变得有点困惑(并且还绕过了管理/客户端父类,这违背

php - PHP 中几乎最终的方法?

我在继承链中有两个抽象类,它们最终将成为一个通用库:abstractclassFoo{publicfunctionbaz(){echo'Foo::baz()';}//othermethodshere}abstractclassBarextendsFoo{publicfunctionbaz(){echo'Bar::baz()';}}这两个类是要由开发人员扩展的,我的问题是我想这样做使得baz()方法的实现都不能被覆盖(因为它们包含严格的RFC兼容代码)。使Bar::baz()final没问题;但是,如果我使Foo::baz()final,那么Bar本身显然也不能覆盖它。PHP5.4的tr

PHP 单例和继承

我在PHP继承方面遇到了一些问题。这是交易:我有这个基类,Singleton:namespaceMy_Namespace;abstractclassSingleton{protectedstatic$instance=null;staticfunctionget(){if(null==static::$instance){static::$instance=newstatic;}returnstatic::$instance;}privatefunction__construct(){}}我有一堆类继承了那个Singleton类,称它们为A、B、C、D。其中一个看起来像这样:names