PHP面向对象开发之魔术函数详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-02-10 16:56:44 浏览: 评论:0
php中魔术函数包括有tostring、call、clone、autoload几个常用的函数,希望此教程对各位朋友会有所帮助。
面向对象开发总结
1.对象的描述和配置。(可以理解为对对象的输出文字描述)
2.对象方法的一场处理。(可以理解为出现异常时候,自定义更人性化的错误信息)
3.克隆对象的应用。(可以理解为在原始对象上,克隆出一样的另一个对象,注意是另一个。)
4.自动载入对象的方法。(可以理解为引用)
1.对象描述和配置
方法名:__tostring()
格式代码如下:
- class My {
- function __tostring() {
- return "这里写这个类的文字描述"; //要用return,echo会出错。
- }
- }
- $p = new My();
- echo $p;
实例代码如下:
- <?php
- class My {
- function __toString() {
- return "这个类的作用是,保卫地球。";
- }
- }
- $p = new My();
- echo $p;
- ?>
2.对象方法的异常处理
调用一些不存在的对象方法的异常处理,是程序正常运行。
方法名:__call($funname,$arr_value)
格式代码如下:
- class My {
- function __call($n,$v) {
- echo "错误的方法名:".$n;
- echo "错误的参数:".$v;
- }
- }
实例代码如下:
- <?php
- class My {
- function __toString() {
- return "这个类的作用是,保卫地球。";
- }
- function __call ($n,$v) {
- echo "错误的方法<b>".$n."</b><br />";
- echo "错误的值<b>".print_r($v)."</b>"; //值是以数组方式传递的,所以要用print_r。
- }
- }
- $p = new My();
- $p->demo("第一",6);
- ?>
3.对象的克隆
通过克隆方式可以在内存中生成两个一样的对象或升级原对象。(不是简单的赋值,而是在内存中开两块内存,克隆出的和被克隆的是2个属性方法一样的不同的两个对象)
方法名:__clone()
关键字:clone
格式代码如下:
- class My {
- function __clone() {
- echo "克隆时自动调用的函数";
- }
- }
- $a = new My();
- $b = clone $a;
实例代码如下:
- <?php
- class My {
- public $name = "小猪";
- function __toString() {
- return "这个类的作用是,保卫地球。";
- }
- function __call ($n,$v) {
- echo "错误的方法<b>".$n."</b><br />";
- echo "错误的值<b>".print_r($v)."</b>"; //值是以数组方式传递的,所以要用print_r。
- }
- }
- $p = new My();
- $b = clone $p;
- echo $b->name="小猪头"."<br />"; //这是克隆并修改后的对象,如果使用 $b = $p,那修改$b->name="小猪头";后,再输出$p,也会被修改。
- echo $p->name; //这是原对象,它已经被$b克隆了,其他都一样,但是他们是独立的。
- ?>
4.自动载入对象的方法
快速取得对象名称并自动载入进当前页面
方法名:__autoload()
格式代码如下:
- function __autoload($class_n) {
- include($class_n.".php");
- }
- $p = new MyPc(); //自动调用执行如下
- $d = new demo(); //include("mypc.php")
实例代码如下:
- <?php
- function __aotoload ($class_name) {
- include($class_name.".php"); //写在类外部。
- }
- $p = new class_name(); //这里实例化的类名就被上面的函数变量 $class_name 替代了,非常方便。
- ?>
Tags: PHP 面向对象 开发 魔术 函数
- 上一篇:PHP Class类与对象学习笔记
- 下一篇:PHP面向对象开发之类的多态详解
相关文章
- ·PHP 面向对象 继承(2013-11-14)
- ·PHP面向对象开发——封装关键字(2013-11-14)
- ·php-对象的声名-构造-继承-案例(2013-11-14)
- ·开发大型PHP项目的方法(2013-11-27)
- ·php $$是什么意思(2013-11-28)
- ·几个PHP面向对象小实例(2013-12-08)
- ·关于PHP中的Class的几点个人看法(2013-12-08)
- ·PHP中的面向对象和面向过程(2013-12-08)
- ·PHP5.0中多态性的实现方案浅析(2014-01-14)
- ·PHP中MVC框架之文件入口实例详解(2014-01-16)
- ·PHP autoload实现自动加载类(2014-01-16)
- ·php __call方法使用说明(2014-01-17)
- ·PHP面向对象之旅:static变量与方法(2014-01-17)
- ·php中关于抽象(abstract)类和抽象方法的问题解析(2014-02-10)
- ·PHP Class类与对象学习笔记(2014-02-10)
- ·PHP面向对象开发之类的多态详解(2014-02-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)