首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP安装/语法/函数 » PHP5学习笔记:用__call()实现方法重载  


  作者:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

  nqp@nqp.me
  4304410
  www.nqp.me

 

 发表:2006-02-25 00:14:15 阅读 12864 次 回复 6 次 得分5  |   字号 字色
PHP5学习笔记:用__call()实现方法重载
今天在网上发现了一片好文章,介绍_call()方法。
依靠这个方法可以实现方法重载,这是找了好久的东西了。
发在这里,算作笔记。
---------------------------------------
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。

例七:__call

<?php
class foo {
  function __call($name,$arguments) {
    print("Did you call me? I'm $name!");
  }
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>

这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。

例八:使用 __call 实现“过载”动作

<?php
class Magic {
  function __call($name,$arguments) {
    if($name=='foo') {
  if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);
  if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
    }
  }   private function foo_for_int($x) {
    print("oh an int!");
  }   private function foo_for_string($x) {
    print("oh a string!");
  }
} $x = new Magic();
$x->foo(3);
$x->foo("3");
?>

 
 1#楼  
 
  回复人:飞天小猪猪
  注册时间:2006-04-05
  主题/回复:2/4
  积分:414
  等级:★★☆(五级)
  称号:略有小成

   
 1#楼 发表于2006-04-05 00:51:05  评分:1 

不太懂
 2#楼  
 
  回复人:joven
  注册时间:2010-05-10
  主题/回复:0/2
  积分:25
  等级:★(二级)
  称号:初出茅庐

   
 2#楼 发表于2010-05-10 18:25:24  评分:1 

学习了。。。忽 忽学习了。。。忽 忽
 3#楼  
 
  回复人:gongqingkui
  注册时间:2008-03-14
  主题/回复:0/5
  积分:54
  等级:★(二级)
  称号:初出茅庐

用户联系方式已设置为保密
 3#楼 发表于2010-05-24 10:31:29  评分:1 

回复给楼主(一起PHP)
php实现重载真是负载
 4#楼  
 
  回复人:gongqingkui
  注册时间:2008-03-14
  主题/回复:0/5
  积分:54
  等级:★(二级)
  称号:初出茅庐

用户联系方式已设置为保密
 4#楼 发表于2010-08-10 10:19:14  评分: 

回复给楼主(一起PHP)
搜索来搜索去,来到了老地方!
 5#楼  
 
  回复人:heitaokeji
  注册时间:2015-02-09
  主题/回复:0/5
  积分:33
  等级:★(二级)
  称号:初出茅庐

   
 5#楼 发表于2015-02-11 11:08:36  评分:1 

西部数码云主机代购找酷豆旗舰店,超级优惠。
西部数码最大代理商酷豆旗舰店,提供一对一的技术扶持,公司运营,成立6年。
买西部数码云主机,找天猫酷豆旗舰店
云主机购买地址http://kudou.tmall.com/
 6#楼  
 
  回复人:技术男
  注册时间:2015-12-19
  主题/回复:0/1
  积分:22
  等级:★(二级)
  称号:初出茅庐

   
 6#楼 发表于2015-12-19 17:03:57  评分:1 

回复给楼主(一起PHP)
有初学者的书推荐一本吗?

  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.008sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版