-
- __set()和__get()方法
用于对私有成员进行赋值或获取值的操作。
__set()方法:在程序运行中为私有的成员属性设置值,它不需要任何返回值。__set()方法包含两个参数,分别表示变量的名称和值。两个参数不可省略。这个方法不需要主动调用,可以在方法前加上private关键字,防止用户直接调用。
__get()方法:在程序运行过程中,在对象的外部获取私有成员属性的值。它有一个必要的参数,即私有成员属性名,它返回一个允许对象在外部使用的值。这个方法同样不需要主动调用,可以在方法前加上private关键字,防止用户直接调用
- __isset()和__unset()方法
isset()函数用于检测变量是否存在,如果存在则返回true,否则返回false。而在面向对象中,通过isset()函数可以对公有的成员属性进行检测,但是对于私有的成员属性,这个函数就不起作用了,而魔术方法__isset()的作用就是帮助isset()函数检测私有成员属性。
如果在对象中存在__isset()方法,当在类的外部使用isset()函数检测对象中的私有成员属性时,就会自动调用类中的__isset()方法完成对私有成员属性的检测操作。
__unset()同上。
- __call()方法
__call()方法的作用是当程序试图调用不存在或不可见的成员方法时,php会先调用__call()方法来存储方法名及其参数。
__call()方法包含两个参数,即方法名和方法参数,其中,方法参数是以数组形式存在的。
<?php class MrSoft{ public function MingRi(){ echo "调用的方法存在,直接执行此方法"; } public function __call($method,$parameter){ echo "如果方法不存在,则执行__call()方法.<br>"; echo "方法名为:".$method."<br>"; echo "方法参数有:"; var_dump( $parameter ); } } header('Content-Type:text/html;charset=utf-8'); $obj1 = new MrSoft(); $obj1->MingRi(); $obj1->MingR('how','what','why'); ?>
调用的方法存在,直接执行此方法
如果方法不存在,则执行__call()方法.
方法名为:MingR
方法参数有:array(3) { [0]=> string(3) "how" [1]=> string(4) "what" [2]=> string(3) "why"}
- __toString()方法
魔术方法__toString()的作用是当使用echo或print输出对象时,将对象转化为字符串。
<?php class MrSoft{ private $type="php编程宝典"; public function __toString(){ return $this->type; } } $mrsoft = new MrSoft(); echo $mrsoft; ?>
- __autoload()方法
将一个独立的、完整 的类保存到一个php页中,并且文件名和类名保持一致,这是每个开发人员都需要养成的良好习惯。这样,在下次重复使用某个类时就可以很轻松的找到它。但还有个问题,如果要在一个页面中引入很多的类,就需要使用include将类一个一个的引入。
在php5中,应用__autoload()方法解决了这个问题。
__autoload()方法可以自动实例化需要使用的类。当程序要用到一个类,但该类还没有被实例化时,php5将使用__autoload()方法在指定的路径下自动查找和该类名称相同的文件。如果找到则继续执行,否则报告错误。
类MrSoft.class.php
<?php class MrSoft{ private $cont; public function __construct($cont){ $this->cont = $cont; } public function __toString(){ return $this->cont; } } ?>
index.php
<?php function __autoload($class_name){ $class_path = $class_name.'.class.php'; if (file_exists($class_path)) { include_once($class_path); }else{ echo "类路径错误"; } } $mrsoft = new MrSoft("北京我爱你"); echo $mrsoft; ?>
- __set()和__get()方法
面向对象--魔术方法
最新推荐文章于 2022-06-22 09:31:19 发布