频道栏目
首页 > 资讯 > 面向对象 > 正文

几个PHP面向对象小实例

16-01-07        来源:[db:作者]  
收藏   我要投稿

抽象类:抽象类不能被实例化,抽象类与其它类一样,允许定义变量及方法,抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。

例1:抽象类

  1. protected$x; abstractfunctiondisplay();
  2. functionsetX($x){ $this->x=$x;
  3. } }
  4. classfoo2extendsfoo{ functiondisplay(){
  5. //Code }
  6. } ?>

__call:PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。

例2:__call

  1. function__call($name,$arguments){ print("Didyoucallme?I'm$name!");
  2. } }$x=newfoo();
  3. $x->doStuff(); $x->fancy_stuff();
  4. ?>

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

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

  1. function__call($name,$arguments){ if($name=='foo'){
  2. if(is_int($arguments[0]))$this->foo_for_int($arguments[0]); if(is_string($arguments[0]))$this->foo_for_string($arguments[0]);
  3. } }privatefunctionfoo_for_int($x){
  4. print("ohanint!"); }privatefunctionfoo_for_string($x){
  5. print("ohastring!"); }
  6. }$x=newMagic(); $x->foo(3);
  7. $x->foo("3"); ?>

__set 和 __get

这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。

例4: __set 和 __get

  1. function__set($name,$val){ print("Hello,youtriedtoput$valin$name");
  2. } function__get($name){
  3. print("Heyyouaskedfor$name"); }
  4. } $x=newfoo();
  5. $x->bar=3; print($x->winky_winky);
  6. ?>
相关TAG标签
上一篇:Fatal error: Cannot redeclare class 原因分析与解决办法
下一篇:关于PHP中的Class的几点个人看法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站