用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

几个PHP面向对象小实例

时间:2015-01-23  来源:西部数据  作者:西部数据

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

例1:抽象类

  1. <?php 
  2. abstract class foo { 
  3. protected $x
  4. abstract function display(); 
  5. function setX($x) { 
  6. $this->x = $x
  7. }  
  8. class foo2 extends foo { 
  9. function display() { 
  10. // Code 
  11. ?> 

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

例2:__call

  1. <?php 
  2. class foo { 
  3. function __call($name,$arguments) { 
  4. print("Did you call me? I'm $name!"); 
  5. $x = new foo(); 
  6. $x->doStuff(); 
  7. $x->fancy_stuff(); 
  8. ?> 

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

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

  1. <?php 
  2. class Magic { 
  3. function __call($name,$arguments) { 
  4. if($name=='foo') { 
  5. if(is_int($arguments[0])) $this->foo_for_int($arguments[0]); 
  6. if(is_string($arguments[0])) $this->foo_for_string($arguments[0]); 
  7. private function foo_for_int($x) { 
  8. print("oh an int!"); 
  9. private function foo_for_string($x) { 
  10. print("oh a string!"); 
  11. $x = new Magic(); 
  12. $x->foo(3); 
  13. $x->foo("3"); 
  14. ?> 

__set 和 __get

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

例4: __set 和 __get

  1. <?php 
  2. class foo { 
  3. function __set($name,$val) { 
  4. print("Hello, you tried to put $val in $name"); 
  5. function __get($name) { 
  6. print("Hey you asked for $name"); 
  7. $x = new foo(); 
  8. $x->bar = 3; 
  9. print($x->winky_winky); 
  10. ?> 
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门