快速业务通道

2010年最新PHP类的精缩归纳

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-23

一:结构和调用(实例化):

class className{} ,调用:$obj = new className();当类有构造函数时,还应传入参数。如$obj = new className($v,$v2...);

二:构造函数和析构函数
1、构造函数用于初始化:使用__construct(),可带参数。
2、但析构函数不能带参数(用于在销去一个类之前执行一些操作或功能)。析构函数用__destruct()做名称。在脚本执行结束时,PHP会销掉内存中的对象,因此可不用析造函数,但有些比如COOKIE等,就应当要用此函数销掉。
知识点:在PHP4中也提供了构造函数,但使用的是与类同名的类方法,在PHP5仍能兼容这种做法,当一个类中没有包含__construct时,会查找与类同名的方法,如果找到,就认为是构造函数,如下:
class test
{ var $b;
function test() {   $this->b=5; }
function addab($c) {   return $this->b+$c; }
}
$a = new test();   echo $a->addab(4); // 返回 9
3、PHP不会自动调用父类的构造函数(不支持构造函数重载),必须使用parent关键字显式地调用。
class employee{
      function __construct()....
}
class Manager extents Employee{
     function __construct(){
          parent::_construct();
          echo ''这个子类的父类构造函数调用了!'';
     }
}
当然也可以调用与该实例没有任何关系的其它类的构造函数。只需在__construct()前加上类名即可。如:
otherClassName::__construct();

类的主家庭成员:属性、方法、常量、静态成员

三、类的属性:
有两种方法对类的属性赋值或取值。
1、使用公共作用域public关键词。
2、使用__set()和__get()来分别赋值和取值,前者称为设置方法(setter)或修改方法(mutator),后者称为访问方法(accessor)或获取方法(getter)。建议使用这种方法:优点:
A、可在__set()统一进行数据验证。
B、便于统一管理属性。
注意:
第一:__set()和__get()只对私有属性起作用,对于用public定义的属性,它们两个都懒理搭理,如下:
class test{
protected $a=9,$b=2,$c;
   public $d;
    function __set($n,$v) {    $this->$n = $v+2; }
    function __get($name) { return $this->$name+2; }
}
$a = new test();
$a->b =5; echo "<br />";   echo $a->b;
实例只对$a,$b,$c的设置会经过__set和__get过滤与返回,对于$d,就不会起作用。如$a->d=5,再返回还是5。
第二:__set($n,$v)要带两个参数。而__get($n)只能有一个参数。实例:
class test{
      private $a=5,$b=6,$c;
      function __set($n,$v)
     {
        if($n==''a''&&$n>0)
               $this->$n = $v;
         else
               $this->$n = $v+2;    
     }
      function __get($name)
      {
            return $this->$name; //如果改为return $this->$name + $this->addab();   如调用a的值,实际返回的是a+a+b的值。默认为5+5+6=16。
      }
      function addab()
       {         return $this->a + $this->b;   }
}
$e=new test();
$e->a = 11;   //注意写法:类的内部用$this->$n即变量的写法,但外部实例要用$e->a的方式。
$e->b = 12;   //get 14
$e->k = 22;

类的属性可自由扩展,如上例的k,不管是否用__set,当一个实例建立起来后,可以用$e->newProperty = xx;直接来创造一个属性,但不建议这么做。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号