A-A+

PHP5 之 __set()和__get() 函数

2009年01月22日 PHP 暂无评论 阅读 1 次
  1. class TestMagicFun{
  2.      public $name = '';
  3.      public $email = '';
  4. }
  5. $testObj = new TestMagicFun();
  6. $testObj->name = 'simple';
  7. $testObj->email = 'abc@gmail.com';
  8. $testObj->address = 'earth china';
  9. 下面的代码在php4,php5中运行都无问题,而在实际的工作中,我们可能不想使用者对未声明的属性进行赋值,此时PHP4就无能为力了,还好在PHP5中有__set(),__get()这样的魔法方法可以用。
  10. 我们可以对上面的类进行一下改造
  11. class TestMagicFun{
  12.      public $name = '';
  13.      public $email = '';
  14.      
  15.      private function __set($property,$value)
  16.      {
  17.          // 在此处做一些特殊的处理
  18.          print "not defined {$property}";
  19.      }
  20.      
  21.      private function __get($property)
  22.      { 
  23.           // 在此处做一些特殊的处理
  24.          print "not defined {$property}";
  25.      }
  26. }
  27. 然后再初始化一个对像
  28. $testObj = new TestMagicFun();
  29. $testObj->name = 'simple';
  30. $testObj->email = 'abc@gmail.com';
  31. $testObj->address = 'earth china';

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录