您的位置:首页 > 编程语言 > PHP开发

PHP学习笔记——魔术方法

2014-10-27 23:27 330 查看
在PHP中的魔术方法主要有__toString,__invoke,__call,__callStatic,__get,__set,__isset,__unset,__clone这几种,下面我们分别对他们讲解一下:

1、toString :它是我们在把一个对象当作一个对象输出时调用的,我们可以在该方法中进行相应的操作,并且该方法必须返回一个字符串。

public function __toString(){
echo 'toString is being call';
return "";}


2、invoke:它是我们在把一个对象当作方法调用时自动调用的,我们需要在调用的方法中传入一个参数。

<?php
class MagicTest {
public function __invoke($paramtar){
echo 'invole is called';
}
}

$test1 = new MagicTest();
echo $test1(1);


3、call:它是在对象中调用不存在的方法时自动调用的,并且这个方法需要传递两个参数$name,$agurament,$name代表的方法名称,$agurrament代表参数集合。

<?php
class MagicTest {
public function __call($name,$parametas){
echo 'call method is called';
}

public static function __callStatic($name,$parametas){
echo 'static call method is called';
}
}

$test1 = new MagicTest();
$test1->runTest(1,2);


4、callStatic:它是在对象中调用不存在的静态方法时自动调用的,并且这个方法需要传递两个参数$name,$agurament,$name代表的方法名称,$agurrament代表参数集合。

class MagicTest {
public function __call($name,$parametas){
echo 'call method is called';
}

public static function __callStatic($name,$parametas){
echo 'static call method is called';
}
}

$test1 = new MagicTest();
MagicTest::runTest(1,2);


5、set:当我们对对象中某个不存在的属性赋值时系统自动调用该方法,该方法需要两个参数,$key和$value。

public function __set($key,$value){
echo 'set method is called and key is '.$key.' value is '.$value;
}
$test1->default = 1;
6、get:当我们取出某个不存在的属性的值时系统自动调用该方法,需要一个参数$key

public function __get($key){
echo 'get method is called and key is '.$key;
}
$test1->default;
7、isset:当我们对对象中的某个不存在的属性调用isset方法或者empty方法时,系统自动调用该方法,需要一个参数。

public function __isset($obj){
echo 'isset method is called';
}
isset($default);
8、unset:与isset同理

9、clone:这个方法是在我们对某个对象进行clone修饰时调用。

public function __clone(){
echo 'clone method is called';
}
$test2 = clone $test1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: