好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP面向对象编程入门教程 - php面向对象

PHP面向对象编程入门教程

/*  类的声明    *    1.你要开发的是什么,确定写什么类    *    2.类中的成员一定要属于这个类       *       [修饰类的关键字] class 类名{    *         成员属性:    *         成员方法:    *        }    *    3.在类中声明成员属性时,前面必须有修饰词,当不确定使用哪个词时,使用var或public    *    一个文件只保存一个类,文件名中包含类名,文件:类名.class.php    *      类名的写法:    *       变量:aaaBbbCcc    *       函数:aaaBbbCcc    *       常量:AAABBBCCC    *       类名:AaaBbbCcc    *     4.类中的成员属性,如果创建多个对象时,每个对象有不同的属性值时,不要直接给初值,在创建好对象之后再给值    *      *      *  通过类来实例化对象    *   1.使用的是new新建一个对象,加上类名,就是创建哪个类的对象    *     $对象引用=new 类名;    *   2.只要有一个new 关键字就是创建一个对象,创建一个对象就是在内存中分配了一个空间    *    *   只有对象才在内存有存储空间    *    *  对象的作用    *    *  对象在内存中的分配    *    *  对象的使用    *   对象中的成员必须通过对象的引用来访问    *   对象->成员    *    *    对象->成员属性    *    对象->成员方法    *    *    *    */     -<?php    class  Something {   // 在OOP类中,通常第一个字符为大写    var   $x ;   function  setX( $v ) {   // 方法开始为小写单词,然后使用大写字母来分隔单词,例如getValueOfArea()    $this ->x= $v ;   }   function  getX() {   return   $this ->x;   }   }   ?>- 

当然你可以按自已的喜好进行定义,但最好保持一种标准,这样会更有效,数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的,一个数据成员可 以是一个整数,一个数组,一个相关数组(associative array)或者是一个对象.

方法在类中被定义成函数形式,在方法中访问类成员变量时,你应该使用$this->name,否则对一个方法来说,它只能是局部变量.

使用new操作符来创建一个对象:$obj=new Something; 

然后你可以使用成员函数通过:

$obj ->setX(5);   $see = $obj ->getX(); 

在这个例子中,setX成员函数将5赋值给对象的成员变量x(不是类的),然后getX返回它的值5.

你可以象:$obj->x=6那样通过类引用方式来存取数据成员,这不是一个很好的OOP习惯,我强烈建议通过方法来存取成员变量,如果你把成员变量看成是不可处理的,并且只通过对象句柄来使用方法,你将是一个好的OOP程序员,不幸的是,PHP不支持声明私有成员变量,所以不良代码在PHP中也是允许的.

继承在PHP中很容易实现,只要使用extend关键字,代码如下:

<?php  class  Another  extends  Something {   var   $y ;   function  setY( $v ) {   $this ->y= $v ;   }   function  getY() {   return   $this ->y;   }   }    ?>    //类的声明(电话类)   class  Phone{    //声明属性     var   $pinPai ;    var   $color ;    var   $batteryCapacity ;    var   $screenSize ;      //成员方法     function  call(){     }      function  message(){     }      function  playMusic(){     }      function  photo(){     }  }    //类的实例化     <?php    class  Something {   var   $x ;    function  Something( $y ) {   $this ->x= $y ;   }    function  setX( $v ) {   $this ->x= $v ;   }    function  getX() {   return   $this ->x;   }   }  ?> 

所以你可以创建一个对象,通过:$obj=new Something(6); 构造函数会自动地把6赋值给数据变量x,构造函数和方法都是普通的PHP函数,所以你可以使用缺省参数.

function Something($x="3",$y="5") 

接着:

$obj = new  Something();  // x=3 and y=5       $obj = new  Something(8);  // x=8 and y=5       $obj = new  Something(8,9);  // x=8 and y=9   

缺省参数使用C++的方式,所以你不能忽略Y的值,而给X一个缺省参数,参数是从左到右赋值的,如果传入的参数少于要求的参数时,其作的将使用缺省参数.

当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,如果你想调用基类的构造函数,你必须要在派生类的构造函数中显示调用,可以这样做是因为在派生类中所有父类的方法都是可用的.

<?php  function  Another() {   $this ->y=5;   $this ->Something();   //显示调用基类构造函数    }    ?>    class  Person{      var   $name ;    var   $age ;    var   $sex ;      function  say(){     }      function  eat(){     }      function  run(){     }  }  //实例化   $p1 = new  Person;  $p2 = new  Person;  $p3 = new  Person;    <?php    $obj = new  Classfoo();   $str =serialize( $obj );    //保存$str到磁盘上     //几个月以后   //从磁盘中装入str   $obj2 =unserialize( $str ) ?> 

你恢复了成员数据,但是不包括方法,根据文档所说,这导致了只能通过类似于使用$obj2->x来存取成员变量,你没有别的方法的唯一办法,所以不要在家里试它.

//访问对象的成员   $p1 ->name= "zhangsan" ;  echo   $p1 ->name; 

查看更多关于PHP面向对象编程入门教程 - php面向对象的详细内容...

  阅读:50次