草庐IT

魔术师

全部标签

php - PHP 中魔术方法 __set_state 的真正目的是什么?

我正在学习魔术方法,阅读每个站点,举每个例子,但对我来说没有任何意义。像这样的例子:classA{public$var1;public$var2;publicstaticfunction__set_state($an_array)//AsofPHP5.1.0{$obj=newA;$obj->var1=$an_array['var1'];$obj->var2=$an_array['var2'];return$obj;}}$a=newA;$a->var1=5;$a->var2='foo';eval('$b='.var_export($a,true).';');//$b=A::__set_s

php - Javascript 魔术方法

至少在我的例子中,在php中,使用魔法方法是很常见的——至少在定义你的核心类时是这样,大多数其他东西都会从中扩展。PHP中的魔术方法以一种不同于常规方法规范的特殊方式运行。例如,我书中最常用的方法之一是__construct()每次加载一个类时都会执行该构造。因此,例如,如果您希望您的类(class)self介绍,您可以这样做:name=$name;$this->introduceYourself();}publicfunctionintroduceYourself(){//if$this->namethenecho$this->nameelseechoidonthavenameech

php - 像在 C# 中一样在 PHP 中获取和设置(私有(private))属性,而不使用 getter setter 魔术方法重载

总结代码示例:ClassPeople{//privateproperty.private$name;//othermethodsnotshownforsimplicity.}直截了当。让我假设$name是一个PRIVATE类成员(或者属性、变量、字段,随便你怎么称呼)。有没有办法在PHP中执行这些操作:$someone=newPeople();$someone->name=$value;$somevar=$someone->name;没有使用__get($name)和__set($name,$value)。背景我需要检查分配的$value,因此我只需要一个像这样的gettersette

PHPStorm 和魔术方法

我正在使用PHPStorm并编写了一个使用SimpleXML类的类。一切都很好,除了当我遍历XML字符串时,我会收到“未定义属性”警告。$xml=simplexml_load_string($string);//ReturnsSimpleXMLElementecho$xml->childElement;//PHPStormreports"UndefinedProperty我认为这是因为魔法属性在PHPStorm中没有正确定义。有人知道一个不错的小工作吗?这让我很恼火,因为我对拥有漂亮干净的代码(和IDE)很迂腐,而且在类里面出现警告真是太糟糕了! 最佳答案

php - 如何在类定义之外为魔术属性创建 PHPDoc?

PHPDoc提供了@vartag,它甚至应该适用于在类外声明的变量。但是,如果我将变量定义为对象的魔术成员,这似乎不起作用:/**@var$app->translator\Fortress\MessageTranslator*/$app->translator=new\Fortress\MessageTranslator();$app是Slim支持通过魔术setter和setter/getter进行任意属性分配的对象。我知道我可以通过@property标签将它添加到Slim本身,但是我需要更改核心Slim每次创建新属性时都编写代码。PHPDoc支持这种动态属性文档吗?

PHP:当魔术引号打开时如何(正确)删除数组中的转义引号

如您所知,当MagicQuotes启用时,单引号会在值和键中转义。大多数在运行时删除MagicQuotes的解决方案只取消转义值,而不是键。我正在寻找一种可以对键和值进行转义的解决方案...我在PHP.net上找到了这段代码:$process=array(&$_GET,&$_POST,&$_COOKIE,&$_REQUEST);while(list($key,$val)=each($process)){foreach($valas$k=>$v){unset($process[$key][$k]);if(is_array($v)){$process[$key][stripslashes(

php - 如何在运行时禁用 PHP 魔术引号?

我正在编写一组PHP脚本,这些脚本将在一些不同的设置中运行,其中一些共享主机并带有魔术引号(恐怖)。如果无法控制PHP或Apache配置,我能否在脚本中执行任何操作以在运行时禁用PHP引号?如果代码不假设使用魔术引号会更好,这样我就可以在可能有也可能没有魔术引号的不同主机上使用相同的脚本。 最佳答案 只有magic_quoted_runtime可以在运行时禁用。但是magic_quotes_gpc无法在运行时禁用(PHP_INI_ALL直到PHP4.2.3才可更改,此后为PHP_INI_PERDIR);你只能删除它们:if(get_

Phpunit,模拟 SoapClient 是有问题的(模拟魔术方法)

我正在尝试使用以下代码模拟SoapClient:$soapClientMock=$this->getMockBuilder('SoapClient')->disableOriginalConstructor()->getMock();$soapClientMock->method('getAuthenticateServiceSettings')->willReturn(true);这将不起作用,因为Phpunitmockbuilder找不到函数getAuthenticateServiceSettings。这是WSDL中指定的Soap函数。但是,如果我扩展SoapClient类和get

php - 什么是 PHP 中的魔术引号运行时?

我完全知道PHP中魔术引号的异常,它是多么邪恶,我像害虫一样避免它们,但什么是magic_quotes_runtime?来自php.ini:Magicquotesforruntime-generateddata,e.g.datafromSQL,fromexec(),etc.这是我应该检查是否打开并关闭的东西:set_magic_quotes_runtime(false);它是否经常默认开启?我知道它在5.3.0中已被弃用并在6.0.0中被删除,但由于我的脚本支持5.1.0+,我想知道如何在“旧版”PHP中处理此问题(如果相关)。编辑:为了清楚起见,我想退出('TurnOFFMagicQ

安卓图像魔术

我在我的项目中使用图像魔法,我从这个https://github.com/lilac/Android-ImageMagick得到它,在编辑了一些代码之后。当我编译这个时,我得到了这个错误02-2711:37:05.329:E/AndroidRuntime(339):java.lang.ExceptionInInitializerError这里是finalMagickImageimg=newMagickImage(newImageInfo("/sdcard/image.jpeg"));还有这个02-2711:37:05.329:E/AndroidRuntime(339):Causedby