草庐IT

继承权

全部标签

PHP OOP结构问题,模拟多重继承

我的网店有多种产品类型。我会想到以下结构Cart_Item--Cart_Product--Cart_DownloadOrder_ItemextendsCart_Item--Order_Product--Order_Download问题是我想让Order_Product扩展Order_Item和Cart_Product。这是因为它需要Order_Item的通用方法(从Order而不是从产品获取价格),还需要Cart_Product的方法(运费计算)我知道php不支持多重继承,我一直在想什么是最简洁的模拟方法。现在我有Order_Product从Order_Product和Order_Do

php - 从继承接口(interface)的类调用静态方法

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Referringtoastaticmemberofasubclass请查看以下代码以了解我的问题。有没有办法强制抽象returnSomething(),同时保持从抽象“中间人”类中定义的函数调用函数的可能性?对我来说,这似乎是PHP的瓶颈。

php - 从继承类调用私有(private)方法

我想在我的简单ORM中用PHP实现一个钩子(Hook)系统:classRecord{publicfunctionsave(){if(method_exists($this,"before_save")){$this->before_save();}//...Storingrecordetc.}}classPaymentextendsRecord{privatefunctionbefore_save(){$this->payed_at=time();}}$payment=newPayment();$payment->save();这会导致fatalerror:Fatalerror:Cal

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 - 多重继承和多态有什么区别?

多重继承和多态有什么区别?在一本书中我用红线表示类级别不支持多重继承。这意味着您一次不能扩展多个类。这与在同一本书中描述的多态性概念相矛盾多态是从特定基类创建多个对象的过程现在,如果PHP不允许多重继承,那么如何允许多态性呢? 最佳答案 正如Ikke所说,多重继承与多态无关。如果我可以画一个类图,多重继承是这样的:BaseABaseB^^\/\/Child因此,Child类将从两个类继承属性和行为。许多语言如Java和PHP不允许这样做,但Python允许。多态性,另一方面,是指您可以抽象出一种特化。首先是类图:Animal^^/\

php - Doctrine 2 索引继承

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

php - PHP类成员可见性和继承的解释

考虑以下片段:ClassA{private$a='foo';publicfunctionF(){return$this->a;}}ClassBextendsA{private$a='bar';}echo(newB)->F();结果是foo。好吧,php这样工作已经是既成事实了。但我想知道为什么。如果在父方法F()声明中我使用伪变量$this,它引用对象上下文。所以当我调用子继承方法时F()$this变量意味着B的当前实例private$a='bar',不是吗?更新感谢AbraCadaver的回复。有一种情况我还不清楚:如果$this变量在调用F()时是B的一个对象,它如何访问父类的私有

没有子继承父文件描述符的PHP fork?

我正在尝试使用反引号运算符运行shell命令,但子进程继承php的打开文件描述符这一事实存在问题。有办法避免这种情况发生吗?我正在运行PHP5.1.2 最佳答案 我真正知道的唯一方法是让children在fork后打开自己的资源。这里有一个相当不错的pcntl教程:http://www.hackingwithphp.com/16/0/0/miscellaneous-topicshttp://www.hackingwithphp.com/16/1/4/duplication-of-resources-when-forking

php - Doctrine单表继承查询所有实例

我正在开发一个通知系统,所以我有一个通知抽象类和子类(forumPostNotification、privateMessageNotification等)。它们使用单​​表继承存储,因此它们都在一个具有区分字段的表中。我想一次获得适用于用户的所有通知,而不是必须单独查询每种类型的通知,但是我不确定如何在DQL/symfony中执行此操作(在SQL)。我相信:(Doctrine2:howtowriteaDQLselectstatementtosearchsome,butnotalltheentitiesinasingletableinheritancetable)与我想要实现的类似,但我

php - 方法链和类继承

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