基本上,我要实现的目标是使对象从方法内部引用同一类的另一个对象。如果以下方法可行,那就太完美了:$this=newself;但是不能在php中重新分配$this。我当然知道,我可以从方法返回另一个对象并使用它,所以请不要建议。问题是:如何使$this成为同一类的另一个对象的克隆?或者更具体地说,我想要一个对象恢复到之前保存的特定状态。编辑:一些可能有用的示例。假设您有一个Url对象,它接受Controller、操作和更多东西。您将使用相同的Controller和操作获取大量链接,但其他属性会有所不同。我使用公共(public)参数实例化对象,为它调用一个方法来保存它在输出链接后恢复到的
我想知道为什么会这样:classFoo{publicfunctiondoSomethingFunny($subject){preg_replace_callback("#pattern#",array($this,'doX'),$subject);}privatefunctiondoX(){echo'whydoesthiswork?';}}为什么回调还在$this的上下文中?我希望它只允许公共(public)方法。我缺少有关回调工作原理的一些基本知识。 最佳答案 preg_replace_callback()中的回调参数允许调用方法
我正在阅读一些关于zend框架的教程和文档,在我遇到$this之前,大多数事情都是有意义的/application/layout/scripts/layout.phtml中的变量,有人提到$this是在引导过程中创建的View对象的一个实例。据我所知,您不能使用$this作为变量名因为$this是php的保留关键字,用于在类上下文中引用相同的对象。任何将其用作变量的尝试都将导致fatalerror并显示以下错误消息Fatalerror:Cannotre-assign$this并根据作者的陈述Thereisavariable,$this,availablewhichisaninsta
我收到此fatalerror消息:不在对象上下文中时使用$this。此类在CodeIgniter中设置为一个库。这是我的课:classMy_class{function__construct(){$this->app=base_url('application').'/cache/';if($this->expire_after==''){$this->expire_after=300;}}staticfunctionstore($key,$value){$key=sha1($key);$value=serialize($value);file_put_contents($this->
我正在编写简单的模板引擎和堆栈问题:$this即使在取消设置后仍落入eval范围。classfoo{publicfunctionmethod(){$code='var_dump(isset($this));';unset($this);var_dump(isset($this));//produce:booleanfalseeval($code);//produce:booleantrue}}$foo=newfoo;$foo->method();如何在不修改$code值的情况下避免这种情况? 最佳答案 我建议创建unboundclo
这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:PHPmethodchainingbenefits?PHPOOP:MethodChaining谁能告诉我为什么要使用返回$这个;在php类方法中,我在一些方法类中看到了这一点,例如:publicfunctionregisterPrefix($prefix,$path){if(isset($this->prefixes[$prefix])){$path=array_merge($this->prefixes[$prefix],(array)$path);}$this->prefixes[$prefix]=(ar
我有一个TestController的View文件并且在上面我添加了评论表单(我的页面所在的页面的url是www.example.com/test/view/slug)现在评论表单发布在urlwww.example.com/comments/addAction评论添加成功后我已经写了(在评论/添加方法)$this->redirect($this->referer());我期待的是它应该重定向到www.example.com/test/view/slug。它在我本地主机上的那个url上重定向,但是当我部署我的应用程序时,它是重定向而不是重定向属性,它是在urlwww.example.co
差不多就这些了。大多数OO编程语言中的作用域可以很好地解析符号,而无需显式引用当前实例(即PHP中的“$this”)。为什么PHP要求我在每次调用同一类中的成员函数之前使用$this? 最佳答案 解析函数调用的范围。考虑:$this->strstr(...只是strstr(...后者将调用PHP内置的strstr()函数,这不是我们在这里要做的。这是将OOP功能添加到高级过程/脚本语言的结果。 关于php-为什么PHP需要显式引用"$this"才能调用成员函数?,我们在StackOver
我正在尝试将httpRequest发送到codeigniterController函数。我正在使用REST控制台来测试该功能。我正在尝试发送3POST变量。用户名电子邮件用户名这是处理请求的代码publicfunctionNewUser(){if($this->input->post()){$FID=$this->input->post('UserID');$UserName=$this->input->post('UserName');$Email=$this->input->post('Email');echo"working";echo$FID;echo$UserName;}el
在PHP中,我可以执行以下操作:$myVar='name';print$myClass->$myVar;//Identicalto$myClass->name我想用Python来做,但不知道怎么做 最佳答案 在python中,它是getattr内置函数。classSomething(object):def__init__(self):self.a=2self.b=3x=Something()getattr(x,'a')getattr(x,'b') 关于php-Python等价于$this