草庐IT

Inheritance

全部标签

php - 在父类中使用 $this 仅显示子类中的父类属性

我有以下两个类。BMW类扩展了Car类。classCar{public$doors;public$wheels;public$color;public$size;publicfunctionprint_this(){print_r($this);}}classBMWextendsCar{public$company;public$modal;publicfunction__construct(){print_r(parent::print_this());}}$bmw=newBMW();$bmw->print_this();在上面的代码中,当我使用parent::print_this(

php - 通过继承的 Laravel 公共(public)服务

问题。我有一堆Controller正在使用一组特定的服务。我想知道是否有可能/正确地利用继承来避免我一直将它们注入(inject)Controller。这就是我打算做的。classMasterControllerextendscontroller{publicfunction_construct(){$this->userData=App::make(UserService::class)$this->fooData=App::make(FooService::class)}}classUserControllerextendsMasterController{publicfuncti

PHP继承数组属性

我在PHP5.2.9中有一个类层次结构。基类有一个protected属性,它是一个关联数组。子类可以向数组中添加一些元素。子类在单独的文件(插件)中声明,这些文件将由多个开发人员创建和添加。将元素添加到子类中的属性的最佳方法是使声明新子类尽可能简单?1,'A2'=>2);functionmyprint(){print_r($this->myproperty);}};classBextendsA{//add'B1','B2'tomyproperty};classCextendsB{//add'C1','C2'tomyproperty};$c=newC();$c->myprint();//

php - Doctrine 1.2 类表继承解决方法?

好的,首先,我知道这在1.2中是不可能的,这就是为什么我正在寻找解决方法的原因。不,不幸的是我不能使用Doctrine2,因为我的共享托管服务器停留在PHP5.2.16,管理员拒绝安装PHP5.3支持。所以,这是我的问题,基本的亲子问题:假设我有一个基类User和子类Customer、Seller、Admin。我一直在研究继承方法:简单(IMO相当无用)、具体和列聚合,甚至是一个解决方法找到“假类表继承”here.我真正需要的是“classtableinheritance”,换句话说User映射到单独的表,其中包含所有共享值,子表定义映射来分隔仅定义其特定列的表。我已经放弃完美:)在P

php - Doctrine 2 具体表继承与关联

我已阅读Doctrine2InheritanceMappingwithAssociation但是说如果你需要Animal本身就是一个实体,比如创建选项列表。在这种情况下,Pet的鉴别器列位于animal表的物种列中。所以类应该是这样的。classAnimal{$id;$species;}/***@Table(name="animal")*@InheritanceType("JOINED")*@DiscriminatorColumn(name="species",type="string")*@DiscriminatorMap({"dog"="Dog","cat"="Cat"})*/ab

php - 如何从类外部调用父方法?

举个例子:classAimplementsSerializable{serialize(){}}classBextendsA{serialize(){}}A类是在每个页面上使用的持久但最小的类。B类是临时管理员(在设置屏幕上使用)类,它通过读取文件来填充成员。我需要将对象序列化并存储在数据库中两次,一次用于常规页面,第二次(生命周期有限)用于管理页面。$instance=newB();//andpopulate$data=serialize($instance);这将始终调用覆盖的方法。有什么方法可以将$instance转换为类型A以便我可以调用classA的序列化方法?

php - 抽象 PHP 类中的返回类型 "self"

PHP7.1我目前正在尝试创建一个抽象类来提供、定义和部分实现其子类的功能。这里我使用了以下结构:abstractclassParent{publicstaticfunctionfromDB(string$name=''){$instance=newstatic();if(!empty($name)){$instance->setName($name)->read();}return$instance;}publicabstractfunctionread();publicabstractfunctionsetName(string$name):self;}这里PHP似乎理解setNa

php - 是否将大量参数传递给 parent::__construct 代码异味/糟糕的 OOP?

我正在写一些代码,我开始对凌乱的parent::__construct调用感到有点不舒服,我想知道首先它是不是糟糕的OOP实践,其次是否有更简洁的方法来做到这一点?请参阅下面触发我问题的特别极端的示例。setBrowseNodeId($BrowseNodeId);}protectedfunctionsetBrowseNodeId($BrowseNodeId){if(is_string($BrowseNodeId)){$this->BrowseNodeId=$BrowseNodeId;}else{thrownewException('BrowseNodeLookupRequestPara

php - 多重继承支持

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:IsMultipleInheritanceallowedatclasslevelinPHP?所以我知道在PHP中,多重继承不是“直接”支持的(我想在许多其他语言如java中就是这种情况)。所以我们做类似的事情:classAextendsBimplementsC,D现在从PHP5.4版开始,我认为,我们有traits可以将功能捆绑在一起..并且可以使用由多个类。现在我的问题是,为什么这种语言不能支持多重继承?我的意思是:classAextendsB,C我在互联网上读过一些文章,其中人们试图解释为什么这很难用语言

php - OOPHP继承查询

据我所知,private成员只能在拥有它的类内部访问,而不能在外部访问,即使是该类的子级也是如此。我写了一个小测试脚本来帮助我牢记这一切,但它没有输出错误,可以正常访问private成员,我不知道为什么!!有人可以帮我解决这个问题吗?代码如下:classCarextendsvehicle{protected$make;publicfunctionshowCar($col,$eng,$mak){$this->colour=$col;$this->engine=$eng;$this->make=$mak;$this->details($this->colour,$this->engine,