草庐IT

春晚魔术

全部标签

php - Symfony,getters 和 setters 与魔术方法

我不喜欢为我的实体类的每个属性都使用“愚蠢的”getter和setter,因此我正在考虑使用魔术方法来获取/设置这些属性,而不是创建每个单独的getter和setter。这个想法是在逻辑不同于典型的“return$name”或“$this->name=$name”时创建一个特定的getter或setter。此外,这个神奇的方法将在不同的类上创建,每个实体都会扩展它(我没有想太多这一步)无论如何,您如何看待用魔术方法替换getters/setters?它会惩罚太多的表现吗?还有其他我没有考虑到的问题吗? 最佳答案 问题在于,例如sym

动态魔术属性(或方法)的 PHPdoc

我最近创建了一个类来创建HTML元素。我没有为每个现有的HTML元素和属性创建一个方法,而是决定使用魔法方法__get和__call。所以用我的代码我基本上可以做到这一点:$signUpForm->insert->input->type('text')->name('firstName')->maxlength(100)->disabled$signUpForm->insert->input->type('email')->name('emailAddress')->maxlength(100)等等但由于我决定保持这种“魔法”和简单,我也可以这样做:$signUpForm->inser

php - 脚本在魔术方法 __destruct() 中失去权限

我试图在对象实例化时创建一个文件,并在对象销毁时创建另一个文件。代码如下:classFoo{publicfunction__construct(){file_put_contents('a_construct.txt','c');}publicfunction__destruct(){file_put_contents('a_destruct.txt','d');}}通常会创建a_construct.txt文件。但是在创建a_destruct.txt文件时,它的行为很奇怪。如果我运行以下代码,“a_destruct”文件不会被创建。$foo=newFoo();我得到这个错误:Warni

php - 在另一个函数中使用 php 的魔术函数不起作用

我想使用魔术函数__set()和__get()将SQL数据存储在php5类中,但我在函数中使用它们时遇到了一些奇怪的问题:作品:if(!isset($this->sPrimaryKey)||!isset($this->sTable))returnfalse;$id=$this->{$this->sPrimaryKey};if(empty($id))returnfalse;echo'yaay!';不起作用:if(!isset($this->sPrimaryKey)||!isset($this->sTable))returnfalse;if(empty($this->{$this->sPr

php - 在 Node.js 中模仿 PHP 的 __get(), __set() & __call() 魔术方法

我想知道是否有一种方法可以在Node.js中模仿PHP的魔术方法__get()和__set()。来自这个问题:JavaScriptgetterforallproperties我知道你可以在Rhino中完成,但Node是基于V8构建的。V8有办法做到这一点吗? 最佳答案 我相信你运气不好,至少asofMarch2010.至少你有__defineGetter__和__defineSetter__,虽然我意识到这不是一回事。总的来说,我认为使用__noSuchMethod__/__get/method_missing不好,因为它使代码更难

php - 关于继承的 PHP 魔术方法 __get 和 __set

OBS:我直接在这里编码,因为我的代码要复杂得多。如果我编码:classSuperFoo{publicfunction__get($name){return$this->$name;}publicfunction__set($name,$value){$this->$name=$value;}}classFooextendsSuperFoo{private$bar='';}$foo=newFoo();$foo->bar="Whyitdoesn'twork?";var_dump($foo);结果:object(Foo){["bar":"Foo":private]=>string(0)''

php - Enterprise Architect 中的魔术 getter 和 setter

我正在使用EnterpriseArchitect制作UML类图并使用它生成PHP5代码。使用this,可以为一个属性创建getter和setter,在代码中看起来像这样(只显示相关行):private$id;publicfunctiongetId(){return$this->id;}/****@paramnewVal*/publicfunctionsetId($newVal){$this->id=$newVal;}我想使用魔术方法__get($property)和__set($property,$value)而不是为每个属性使用单独的方法。这可能吗?如果可能的话,怎么办?它可能看起来

php - 魔术方法(__get、__set)在扩展类中不起作用?

这个问题在这里已经有了答案:PHPInheritedparentmethodcan'taccesschild'sprivateproperty(3个答案)关闭9年前。$theName))?$this->$theName:NULL;}publicfunction__set($theName,$theValue){if(false===property_exists(get_class(),$theName)){thrownewException(get_class()."doesnothave'".$theName."'property.");}else{$this->$theName=

php - 文本魔术短信 API 在 Godaddy 共享主机上出现错误

我正在尝试使用php使用来自godaddy的Textmagic发送短信。我已经使用官方git-hub页面获取APIhttps://github.com/textmagic/textmagic-rest-php以上设置在我本地的UbuntuPC上工作正常并且能够发送SMS,当我将API托管到GodaddyWindows共享主机并执行相同的php代码时,出现以下错误。[ERROR-]errorsettingcertificateverifylocations:CAfile:c:\cgi\php56\curl-ca-bundle.crtCApath:none可能是什么原因。PHP版本:5.6

PHP 魔术引号问题

我以前从未在启用魔术引号的环境中编程。现在我正在做一个项目。这就是我设置用户接受的数据情况的方式:$first_name=$_POST['first_name']if(!get_magic_quotes_gpc()){$first_name=mysql_real_escape_string($first_name);}通过这种过滤,启用魔术引号后,我是否仍然对SQL注入(inject)攻击持开放态度?我真的只关心任何类型的SQL注入(inject)会破坏我的查询...其他白名单、htmlspecialchar()-ing等在其他领域已经到位。查看一些类似的SO问题,似乎建议改为检查魔术