我正在检查一个WordPress插件,我在一个类的构造函数中看到了这个函数:add_action('init',array($this,'function_name'));我搜索并发现array($this,'function_name')是一个有效的回调。我不明白的是:为什么要使用这个方法,而不是使用$this->function_name();这是一个示例代码:classHello{function__construct(){add_action('init',array($this,'printHello'));}functionprintHello(){echo'Hello';
这个简化的案例会导致PHP段错误(退出127):classDatumimplements\JsonSerializable{publicfunctionjsonSerialize(){returnclone$this;}}echojson_encode(newDatum);最后一行代码导致exit(127)。我无法在当前环境中检索任何堆栈。与此同时,删除clonetoken有效。是否有任何可能的解释为什么会发生这种情况? 最佳答案 此代码导致无限递归。看来PHPJSON模块以这种方式(伪代码)支持JsonSerializable:f
我注意到许多(大多数?)人在使用ZendFramework时会在Form类本身中添加装饰器和标签。classUser_Form_AddextendsZend_Form{publicfunctioninit(){parent::init();$username=newZend_Form_Element_Text('username');$username->setLabel('Username:')->setRequired(true)->addFilter('StringTrim')->addValidator('StringLength',$breakChainOnFailure=f
我的Contact.php模型中有这两种方法:publicfunctiongetSubscribers($listId){return$this->withTrashed()->where(DB::raw("concat('',email*1)"),'!=',DB::raw('email'))->where('opt_out','0')->select('email')->chunk(1000,function($results)use($listId){$this->subscribeEmails($listId,$results);});}publicfunctionsubscri
我正在使用以下代码通过php连接到salesforcerequire_once('SforcePartnerClient.php');require_once('SforceHeaderOptions.php');require_once('SforceMetadataClient.php');$mySforceConnection=newSforcePartnerClient();$mySforceConnection->createConnection("cniRegistration.wsdl");$loginResult=$mySforceConnection->login("
我有以下两个类。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(
我遇到了一些问题。我想从另一个类调用类的static方法。类名和方法是动态创建的。做起来并不难:$class='className';$method='method';$data=$class::$method();但是,我想这样做classabc{staticpublicfunctionaction(){//somecode}}classxyz{protected$method='action';protected$class='abc';publicfunctiontest(){$data=$this->class::$this->method();}}如果我不将$this->cl
Use$thistorefertothecurrentobject.Useselftorefertothecurrentclass.Inotherwords,use$this->memberfornon-staticmembers,useself::$memberforstaticmembers.http://board.phpbuilder.com/showthread.php?10354489-RESOLVED-php-class-quot-this-quot-or-quot-self-quot-keywordclassDemo{privatestatic$name;private
我对OOP比较陌生,所以浏览SimpleHTMLDOM的文档时我想知道它的方法如何使用方法链和返回值/对象的常规行为。例如我可以这样做:$html=newsimple_html_dom();$html->find('something');//Returnsobjectorarrayofobjects但我也可以:$html->find('something')->find('something_else');如果我正确理解方法链接,这意味着find()返回$this即它本身。此外,我的理解是使用方法链接返回$this,之后使用getter方法实际返回一个您可以使用/想要的值。例如:$o
这个问题在这里已经有了答案:PHPFatalerror:Using$thiswhennotinobjectcontext(9个回答)关闭9年前。我已经查找了涵盖此错误的其他问题,但找不到适用于我的问题的案例。基本上,我的类中的静态方法调用一个非静态方法,该方法反过来调用另一个非静态方法。这会引发fatalerror:Fatalerror:Using$thiswhennotinobjectcontextinclass.phponline...我不明白为什么不能通过$this从另一个非静态类方法调用一个非静态类方法。是因为它们都是从静态函数调用的,因此没有$this实例吗?这是(简化的)类