将一个函数/方法设为多个Controller的应用程序全局函数的最佳做法是什么?例如,假设我们有一个Controller。该Controller正在使用一个函数,但我们不想将其复制粘贴到另一个Controller,而只是想调用该函数。classControllerNameextendsAbstractActionController{//Youractions//Hastobecomeacall,//insteadofcopypastingthisfunctiontoseveralcontrollerspublicfunctionGlobalFunction($parameter){/
classA{static$v="A";staticfunctionechoExtendedStaticVariable(){echoself::$v;}}classBextendsA{static$v="B";//overrideA'svariablewith"B"}为什么:echoB::$v打印“A”?我如何让它打印“B”?在PHP5.3之前有办法做到这一点吗? 最佳答案 B->echoExtendedStaticVariable()=='A'因为self::是在编译时计算的,而不是运行时.这就好像你写的是A::而不是self:
我正在制作一个PHP网络应用程序。我有一种情况,我相信会促进嵌套继承的好时机。无论如何,这是我的情况:publicclassRecurringWeeklyEventextendsRecurringEvent{}publicclassRecurringEventextendsEvent{}在我看来,这并不是一个糟糕的设计实践;但是,无论如何,我都不是高级的面向对象的程序员。话虽如此,在我冒险在我的应用程序中使用这种代码之前,我想知道这对更有经验/合格的程序员来说是好的还是坏的做法。注意:在更正使用错误术语后,我将标题从多重继承更改为嵌套继承。谢谢史蒂夫 最佳答
假设我有以下内容: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
我读到的关于类结构的示例通常从一个基类开始,然后该基类通过更细化的类进行扩展,即。经常被引用的:classAnimal{}classRodentextendsAnimal{}classMouseextendsRodent{}但在我的CMS/电子商务系统的现实世界项目中,我似乎正在以相反的方式构建这种结构,即从一种情况的类开始,然后用与整个项目相关但实际上与整个项目相关的东西扩展它扩展类。classpage{}classproductextendspage{}classcategoryextendsproduct{}classbasketextendscategory{}classsho
此时,假设我有这样一个类:classSentence{__construct($content){$this->content=$content;}publicfunctiongrab_word($num){$words=explode("",$this->content);return$words[$num+1];}}所以给定的接口(interface)将允许我创建一个新句子,然后我可以调用grab_word()类方法来获取句子中的单词:$sentence=newSentence("Loremipsumdolorsitamet");echo$sentence->grab_word(2
有人试过吗?是否可能,如果可能,如果我尝试完成它会遇到什么样的问题? 最佳答案 如果您的目标是在Controller之间共享逻辑:将逻辑添加到AppController以与应用中的所有Controller共享它。创建一个组件并将其添加到$this->components以供您要共享它的Controller使用。在Controller之间添加额外的继承只能被视为最后的手段,因为您必须格外注意组件和助手的处理方式。例如。您必须手动将$this->components&$this->helpers与AppController和您继承自的C
假设我们有一个名为core_crud的模块,Controller中有类似这样的东西:if(!defined('BASEPATH'))exit('Nodirectscriptaccessallowed');classCore_crudextendsMX_Controller{function__construct(){parent::__construct();$this->load->model('mdl_core_crud');}publicfunctionindex(){//codegoeshere}}现在我想用另一个名为shop_crud的模块来扩展这个模块。这个shop_cru
请看下面的代码:classA{publicx=5;publicy=6;publicz=7;}classBextendsA{publicm=1;publicn=2;}$a=newA();$b=newB()从上面的代码可以看出,$a正在分配x内存量,而$b正在分配y内存量;现在我的问题是下面哪一个是正确的?x>yx 最佳答案 这些是我的数字:Startingallocation62480AllocatedmemoryfornewA()328AllocatedmemoryfornewB()496因此x这两个类定义是等价的classBext
我有以下类层次结构,如下面的复制脚本所示:1,'param2'=>2);publicfunction__construct(array$config=null){$this->config=(object)(empty($config)?$this->config:array_merge($this->config,$config));}}classBextendsA{public$config=array('param3'=>1);publicfunction__construct(array$config=null){parent::__construct($config);//o