【php魔术方法应用实例代码汇总】教程文章相关的互联网学习教程文章

魔术方法php,__ call __get和__set?【代码】

我的问题是,我们有一堂课:class SomeClass{private $someProperty;public function __call($name,$arguments){echo "Hello World"; }现在当我说:$object = new SomeClass(); $object->someMethod();我的类中的__call方法将被调用. 当我说$object->getSomeProperty();将__call再次被调用?如果是这样,那么__get和__set魔术方法是什么用的? 当我说$object->someProperty;然后会调用__get($someProperty)?或者它会__set($someProp...

php – 静态对象中的魔术方法【代码】

我正在努力实现这一目标.我有会话管理器类,它是我为我的框架开发的东西.我需要有唯一的会话密钥,所以不要做这样的事情:$_SESSION['foo'] = $bar;我这样做:Session::set('foo',$bar);并且set函数将执行以下操作:$_SESSION[$unique.'foo'] = $bar;它很好,它的工作原理,但我想像这样使用它:Session['foo'] = $bar或者像这样:Session->foo = $bar我发现我无法使用 – >在静态对象中,我也不能使用像__set和__get这样的魔术函数.那么...

php – 如何实现_isset魔术方法?【代码】

我尝试实现__isset魔术方法,如下面的代码, 为什么我总是得到一个未定义的索引错误?任何人都可以告诉我该怎么办?class c {public $x = array();public function __get($name) {return $this->x[$name]; //undefined index: #1:a / #2:b / #3:d}public function __isset($name) {return isset($this->x[$name]);} }$c = new c; var_dump(isset($c->a)); var_dump(isset($c->a->b)); #1 var_dump(isset($c->b->c)); #2 va...

php – 魔术方法__call()参数为“真实”参数【代码】

我正在寻找一个关于如何使用参数列表动态实例化类的解决方案. 例如:class test {public function __call($name, $args){/* blah, blah class exists? require */return new $name($args);}public function __toString(){return (string) $this->extension(); // to enforce __toString of extension} }class extension extends test {public function __construct(classTypeHint $object, $required, $random = 25){// This does ...

PHP中魔术方法__set_state的真正目的是什么?【代码】

我正在学习魔术方法,阅读每个网站,拿走每一个例子,但对我来说没有任何意义.像这样的例子:class A {public $var1;public $var2;public static function __set_state($an_array) // As of PHP 5.1.0{$obj = new A;$obj->var1 = $an_array['var1'];$obj->var2 = $an_array['var2'];return $obj;} }$a = new A; $a->var1 = 5; $a->var2 = 'foo';eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(// 'var...

php类知识---魔术方法__toString,__call,__debugInfo【代码】

<?phpclass mycoach{ public function __construct($name,$age) { $this->name = $name; $this->age = $age; echo "upon melancholy hill"."\n"; } public function __toString() { #echo时触发,返回一个字符串 return "working hard and party with cpc and cj"."\n"; } public function __debugInfo() { #一个诡异的方法,解析一个并不存在的函数,以及它其...

在Node.js中模仿PHP的__get(),__ set()和__call()魔术方法

我想知道是否有办法在Node中模仿PHP的魔术方法__get()和__set().从这个问题:JavaScript getter for all properties我知道你可以在Rhino中做到,但Node是在V8上构建的. V8有办法做到这一点吗?解决方法:没有答案?看看nowjs.他们似乎已找到一种方法使__get()和__set()在JavaScript中工作.我无法弄清楚他们是如何从源代码中做到的.

php魔术方法【代码】

__construct 构造方法 1 class Person2 {3 public $name;4 5 # 构造方法6 public function __construct($n){7 $this->name = $n;8 }9 10 public function say(){ 11 return "my name is {$this->name}"; 12 } 13 } 14 15 $obj = new Person(yach); 16 echo $obj->say(); __destruct 析构方法1 public function __destruct(){ 2 echo "<p>{$this->name}被清理</p>"; 3 } 4 5 # 后...

PHP面向对象魔术方法之__toString函数【代码】

l 基本介绍: 当我们希望将一个对象当做字符串来输出时,就会触发__toString魔术方法. <?phpheader(content-type:text/html;charset=utf-8);//__toString函数class Sheep{public $name;protected $food;public function __construct($name, $food){$this->name = $name;$this->food = $food;}//魔术方法//当输出一个对象时,就会触发该函数//1. _toString 没有形参//2. _toString 要求返回一个字符串//3. 当我们在项目开发时,需要...

PHP面向对象魔术方法基本了解【图】

简单介绍 (1) 魔术方法都是系统提供,程序员使用即可. (2) 所有的魔术方法,前面都是以 __ 开头的 _是两个下划线. (3) 我们在自定义函数时,就不要使用 __开头了. (4) 魔术方法是在满足某个条件(一会一个一个的说明)时,有系统自动的调用. 魔术方法一览

PHP面向对象魔术方法之__get 和 __set函数【代码】

l 基本的介绍 (1) 当我们去使用不可以访问的属性时,系统就会调用__get方法. (2) 不可以访问的属性指的是(1 . 该属性不存在 2. 直接访问了protected或者private属性) (3) 当程序员去给不可以访问的属性直接赋值,系统就会调用__set方法 l 举例说明 需求是: 如果对象有一个成员变量是private、protectd的,我希望在在类的外部通过 : $对象名->变量名的方式来赋值和取值,怎么办? 代码如下<?phpheader(content-type:text/html;charse...

实例 - 相关标签