为什么在此示例中对非静态方法的“self”调用有效?classA{protectedfunctionaNonStaticMethod(){return__class__;}publicfunctionaEcho(){echoself::aNonStaticMethod();}}感谢您的解释。 最佳答案 在您的简单示例中,$this和self是可以互换的。但要注意处理继承时解析的不同方法(为了完整性我添加了静态):classA{protectedfunctionaNonStaticMethod(){return__class__;}p
PHP数组元素引用的背景假设您使用嵌套的PHP数组创建一个复杂的数据结构,如下所示:$a1=array('b'=>array('foo'=>1),'c'=>array('bar'=>1));想象一下,数组嵌套得更深,元素更多,名称更长、更有意义。如果需要经常访问$a1的子结构,以进行读写,可能会想创建一个这样的“别名”:$b=&$a1['b'];然而,由于“赋值”实际上改变了$a1,这会导致大量困惑。我认为许多没有经验的PHP开发人员(像我一样)会假设$b是在赋值后对$a1['b']的引用。真正发生的是,$b和$a1['b']都变成了对元素array('foo'=>1)的引用,产生了意
如前所述onReddit'sLOLPHPsub,PHP7在引用self时可以使用扩展类或基类,而PHP5总是引用扩展类。TryitonlinePHP5string(8)"BarABarC"PHP7string(8)"FooABarC"PHP7的行为尤其令人担忧,因为似乎没有任何简单的规则可以知道self何时引用基类或扩展类。在PHP7中确定self将引用哪个类的规则是什么? 最佳答案 self::应该始终引用它在其中使用的类(注意PHP5的行为也是错误的。)这是一个bug,fixed在7.1.4,这仅适用于类常量内的self::和p
我刚刚对数组运行了一些简单的调试测试,并注意到当我对数组执行var_dump()时,输出会标记数组中被另一个变量引用的任何元素。作为一个简单的实验,我运行了以下代码:$array=range(1,4);var_dump($array);echo'';foreach($arrayas&$value){}var_dump($array);echo'';$value2=&$array[1];var_dump($array);echo'';给出以下输出:array(4){[0]=>int(1)[1]=>int(2)[2]=>int(3)[3]=>int(4)}array(4){[0]=>int
我已经使用composer大约一个月了。然后有一天composer向我展示了这条消息:Warning:Thisdevelopmentbuildofcomposerisover30daysold.Itisrecommendedtoupdateitbyrunning"/usr/local/bin/composerself-update"togetthelatestversion.我已经按照文档全局安装了composer。whichcomposer/usr/local/bin/composer运行sudocomposerself-update给我这条信息:/usr/bin/env:php:N
当我尝试self更新我的Composer时,我收到“权限被拒绝”错误。即使当我使用sudo/usr/bin/composer.pharself-update时,它也会显示commandnotfound。请帮帮我,我对Composer一无所知 最佳答案 尝试以下命令:sudophp/usr/bin/composer.pharself-update确保composer.phar文件存在于“/usr/bin” 关于php-尝试self更新Composer时权限被拒绝,我们在StackOverf
我见过几个线程,人们在其中询问如何在PHP中获取类或对象的名称。但是,我在任何地方都看不到所解释的各种可能性之间的区别。我希望这里有人可以帮助我。所以为了得到被调用类的类名,我知道两种可能:get_called_class()static::class(非静态类的get_class($this))为了获取放置代码的类的类名,我知道这三种可能性:get_class()__CLASS__self::class是否有任何我现在可以忽略的差异?一种方式相对于另一种方式的潜在优势和劣势是什么? 最佳答案 之间的差异get_class()ret
当我尝试运行composerself-update时,出现错误:Thefileiscorrupted(creatingarchive"/home/heytherejake/.composer/cache/composer-temp.phar"disabledbythephp.inisettingphar.readonly).Pleasere-runtheself-updatecommandtotryagain.我已将phar.readonly设置为Off(我的phpinfo反射(reflect)了这一点),但错误仍然存在。有谁知道还有什么可能导致这种情况?
我仍在学习PHP。终止脚本时,exit()、die();和return;有什么区别?:在同一个文件中(单个脚本文件)在包含的child中在包含的父项中 最佳答案 return返回一个值。这可以是任何东西,用于功能。Whatarethedifferencesindie()andexit()inPHP?http://php.net/manual/en/function.return.php 关于PHP:exit()、die()和return之间有什么区别;在"self"和包含的文件中?,我们
我想知道在php类中工作时是否可以接受/首选使用self::method()和parent::method()。您可以使用$this->method()但$this->也可以引用类变量、父类变量或父类中的方法。self::没有歧义self::是否已贬值和/或使用此样式是否有任何注意事项或缺点?我理解self::和parent::指的是类的静态实例,但是在kohana中,除非你专门将一个方法定义为静态的,否则似乎没有区别。谢谢。添加了一个例子:假设此应用程序存储来自多个网站的论坛...classForum_ControllerextendsController{function__con