php专区

 首页 > php专区 > PHP高级 > 面向对象MVC > 几个PHP面向对象小实例 - php面向对象

几个PHP面向对象小实例 - php面向对象

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

几个PHP面向对象小实例

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

例1:抽象类

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

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

例2:__call

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

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

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

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

__set 和 __get

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

例4: __set 和 __get

  1. class foo { 
  2. function __set($name,$val) { 
  3. print("Hello, you tried to put $val in $name"); 
  4. function __get($name) { 
  5. print("Hey you asked for $name"); 
  6. $x = new foo(); 
  7. $x->bar = 3; 
  8. print($x->winky_winky); 
  9. ?> 
分享到:
Fatal error: Cannot redeclare class 原...
Fatal error: Cannot redeclare class 原因分析与解决办法 我使用的都是php __autoload状态自动加载类的,今天好好的程序不知道怎么在运行时提示Fatal error: Cannot redeclare class 了,看是重复定义了类,下面我来分析一下解决办法。 错误提示:Fatal error: Cannot redeclare class ….从...
关于PHP中的Class的几点个人看法 - php面...
关于PHP中的Class的几点个人看法 以我的观点来说说PHP中的Class,用于表达的语言都是非正式的语言,也不能确定是否正确,建立一个类很简单: class my_class {}  类到底干什么呢?很多人都说是什么黑匣子,我在这里称它为一个独立的整体,我们只知道类名,而不知道里面有什么东西,那...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……