1,类:类是一组具有相同数据结构和相同操作的对象的集合,类是对象的抽象,他将一组数据属性和在数据上的一组合法操作抽象封装,类好比是一个对象模板,基于类就可以生成多个具有不同属性值的对象。 2,创建类: Class classname { } 3,为该类添加属性和方法:只需要在类中声明变量即可。声明了属性之后可以获取该属性的值。 ⑴创建属性:Class classname { Var $myName; Var $myAge; } ⑵创建方法:class classname { Var $myName; Var $myAge; Function getName() { } Function getAget($arg1,$arg2) { } } 注:以上创建了两个类的方法,方法名称分别为:getName,getAge 4,构造函数:大多数的类都有构造函数,当一个类实例被调用时,将调用构造函数,通常在构造函数中将执行一些初始化的操作。 ⑴在类中声明构造函数:同声明其他函数一样,但是构造函数的名称是固定的。即函数名必须为:construct() 注:构造函数可以由编程人员主动调用,但大部分时候,都是在创建类对象实例的时候自动调用。构造函数也可以传递参数,这些参数可以在调用类的时候传递。 声明构造函数的方法: Class classname { Function construct($param) { 代码 }} ⑵析构函数:是一种当对象被销毁时,无论使用了unset()或简单的脱离范围,都会被自动调用的函数。 与构造函数的名称类似,一个类的析构函数名称必须是_destruct() 5,类的实例化:声明了一个类之后,如果要使用该类,必须创建该类的一个实例,实际上也可以将该类作为一个变量,在使用之前必须手动定义。用关键字“new”来创建一个类的实例。 <?php Class classname { Function construct($myName) {echo (“我的名字是:$myName<br>”);}
} $name1=new myName(“小猪”); $name2=new myName(“小狗”); //创建了2个该类的实例 ?> 注:new myName (“小猪”) 中的参数“小猪”会被 自动传递到构造函数,然后构造函数直接使用该参数。 6,使用类的属性: 在一个类中访问类成员变量有一个特殊的指针:$this通过该指针可能方便的访问类属性或是给类属性赋值。 Class classname { Var $myattrib; //定义属性 Function operate($myparam) //为类创建方法 { $this->myattrib=$myparam; //设置属性值为$myparam Echo $this->myattrib; //输出属性值 } } ⑴如果要在类的外部访问一个类的属性,需要确定该属性能否被外部访问。因为在类中定义的属性可以设置外界访问的权限。 以上对属性$myarrtib进行限制,外界可以直接访问: $newclass =new classname(); //创建一个类classname实例 $newclass->myattrib=”小马”; //给属性赋值 Echo $newclass->myattrib; //输出属性 ⑵从类的外部直接访问类的属性不是一个好的方法,面向对象方法的一个优点就是使用类的封装。可以通过使用get()和set()函数来实现对该类属性的访问。 Class classname { Var $myattrib; //定义属性 Function get($attribName) //获取属性值的函数 { Return $this->attribName; //返回该属性的值 } Function set($arrtibName,$value) //设置属性值的函数 { $this->$attribName=$value; //设置属性值 } } 注:get函数只有一个参数,该参数用来传递属性的名称,set函数有两个参数,第一个参数为属性的名称,第二个参数为要设置的属性的值。可以通过这两 个函数来检查和设置任何属性的值。 7,类的访问控制: Php5 支持的3 种控制符: ⑴public (默认的) public表示该属性和方法在类的内部或外部都可以直接被访问。 ⑵private 表示该属性和方法只能在类的内部进行访问。如果没有使用get()和set(),则可能对所有的属性都使用这个关键字,也要选择部分方法为私有,但私有的属性和方法不能被继承。 ⑶Protected 表示被标记的属性或方法只能在类的内部进行访问,他也存在于任何子类中。 Class classname { Public $myattrib; Public function get($attribName) //获取属性值的函数 { Return $this->$attribName;//返回该属性值 } Public function set($attribName,$value) //设置属性值的函数 { This->$attribName=$value;//设置属性值 } }
8,类方法的调用: Class classname { Var $myAttrib; Function func_1($param) //函数func_1 { 代码 } Function func_2($param1$param2) { 代码 } Function func_3($param1$param2) { 代码 Return backvalue; } } 调用以上类的3个函数: $newclass->func_1(“123”); $newclass->func_2(“123”,”abc”); $myvalue=$newclass->func_3(“123”,”abc”);//调用func_3并获取返回值。
9,有关类的代码: $this通过该指针可能方便的访问类属性或是给类属性赋值。 class Employee //创建一个类“Employee” { var $empno; // 员工人数 //定义类的属性 var $empnm; // 员工姓名 function add_employee($in_num, $in_name) //创建类的方法为“add_employee” { $this->empno = $in_num; //给类的属性赋值 $this->empnm = $in_name; } function show() //创建类的方法为“show” { echo "$this->empno, $this->empnm"; //输出属性值 return; } function changenm($in_name) { $this->empnm = $in_name; } } $sbabu = new Employee; $sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show();