PHP基础类实例教程Word格式文档下载.docx
《PHP基础类实例教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《PHP基础类实例教程Word格式文档下载.docx(74页珍藏版)》请在冰豆网上搜索。

>
使用==符号比较两个对象,比较的仅仅是两个对象的内容是否一致。
当使用全等符(===)时,当且仅当两个对象指向相同类(在某一特定的命名空间中)的同一个对象时才相等。
是否在是同一个对象,两边指向的对象是否有同样的内存地址。
//比较两个对象
if($p===$p1){
\$p和\$p1是一个对象"
\$p和\$p1不是一个对象"
结果===比较的是两个变量是否一个对象。
一个等于符号(=)表示赋值,是赋值计算。
如果将对象赋予变量,是指变量将指向这个对象。
$p2=$p1;
//变量$p2指向$p1指向的对象
if($p2===$p1){
\$p2和\$p1指向一个对象"
\$p2和\$p1不指向一个对象"
$p=$p1;
//变量$p指向$p1指向的对象
\$p和\$p1指向一个对象"
PHP类实例教程(六):
构造函数
构造方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。
构造函数和其它函数一样,可以传递参数,可以设定参数默认值。
构造函数可以调用属性,可以调用方法。
构造函数可以被其它方法显式调用。
在PHP4中使用与类名同名的方法为构造函数。
在PHP5中依然支持了这种方式,但不建议再使用这种方式。
classPerson{
private$name;
publicfunction__construct($name){
$this->
name=$name;
在类被初始化的时候,这里的代码将会运行<
\$nameis$this->
name<
}
newPerson("
tom"
);
jack"
PHP类实例教程(七):
析构函数与PHP的垃圾回收
析构函数:
当某个对象成为垃圾或者当对象被显式销毁时执行。
GC(GarbageCollector)
在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。
PHP会将其在内存中销毁。
这是PHP的GC(GarbageCollector)垃圾处理机制,防止内存溢出。
当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。
__destruct()析构函数,是在垃圾对象被回收时执行。
析构函数也可以被显式调用,但不要这样去做。
析构函数是由系统自动调用的,不要在程序中调用一个对象的析构函数。
析构函数不能带有参数。
程序结束前,所有对象被销毁。
析构函数被调用了。
classPerson{
publicfunction__destruct(){
析构函数在这里执行"
这里一般用来放置,关闭数据库,关闭文件等等收尾工作。
for($i=0;
$i<
5;
$i++){
$i"
//我们在这里看到,在PHP程序结束前,对象被销毁了。
当对象没有指向时,对象被销毁。
$p=null;
//我们在这里看到,析构函数在这里被执行了。
我们将$p设置为空或者第11行赋予$p一个字符串,这样$p之前指向的对象就成为了垃圾对象。
PHP将这个对象垃圾销毁。
unset变量
析构函数在这里执行<
$p1=$p;
//设定新引用变量$p1也指向这个对象
unset($p);
是否看到\$p被销毁,对象也被销毁呢?
unset($p1);
我们看到这里,析构函数被执行了"
unset一个引用变量时,unset销毁的是指向对象的变量,而不是这个对象。
PHP类实例教程(十):
类的重写(override)
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。
(这点和JAVA不同)
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。
声明方法时,如果不定义访问权限。
默认权限为public。
先设置一个父类,这个父类是“Dog”类,这个类描述了dog的特性。
Dog有2个眼睛,会跑,会叫。
就这样描述先。
我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。
我的小狗有名字,我的小狗太小了,不会大声的叫,只会哼哼。
我们用继承的概念去实现这个设计。
//狗有两只眼睛,会汪汪叫,会跑
classDog
protected$eyeNumber=2;
//
//返回封装的属性方法
publicfunctiongetEyeNumber(){
return$this->
eyeNumber;
//狗会叫
publicfunctionyaff(){
return"
Dogyaff,wang..wang.."
//狗会跑
publicfunctionrun(){
Dogrun..running..."
$dog=newDog();
doghave"
.$dog->
getEyeNumber()."
eyes.<
echo$dog->
yaff()."
run();
//这是我的小狗,叫"
狗狗"
他还小不会汪汪叫,智慧哼哼。
。
classMyDogextendsDog
private$name="
publicfunctiongetName(){
name;
name."
yaff,heng...heng.."
$myDog=newMyDog();
echo$myDog->
getName()."
have"
.$myDog->
php
//狗有两只眼睛,会汪汪叫,会跑
classDog
{
//
//返回封装的属性方法
publicfunctiongetEyeNumber(){
return$this->
}
//狗会叫
publicfunctionyaff(){
return"
//狗会跑
publicfunctionrun(){
return"
}
classMyDogextendsDog
publicfunctiongetName(){
return$this->
重写方法与访问权限
PHP类实例教程(十一):
类中this关键字
PHP5中为解决变量的命名冲突和不确定性问题,引入关键字“$this”代表其所在当前对象。
$this在构造函数中指该构造函数所创建的新对象。
在类中使用当前对象的属性和方法,必须使用$this->
取值。
方法内的局部变量,不属于对象,不使用$this关键字取值。
局部变量和全局变量与$this关键字,使用当前对象的属性必须使用$this关键字。
局部变量的只在当前对象的方法内有效,所以直接使用。
局部变量和属性可以同名,但用法不一样。
在使用中,要尽量避免这样使用,以免混淆。
classA
private$a=99;
//这里写一个打印参数的方法
publicfunctionprintInt($a){
\$a是传递的参数$a"
\$this->
a是属性$this->
a"
$a=newA();
//这里的$a可不是类中的任何变量
$a->
printInt(88);
classA
//这里写一个打印参数的方法
publicfunctionprintInt($a){
echo"
//这里的$a可不是类中的任何变量
用$this调用对象中的其它方法
classMath
//两个数值比较大小
publicfunctionMax($a,$b){
return$a>
$b?
$a:
$b;
//三个数值比较大小
publicfunctionMax3($a,$b,$c){
$a=$this->
Max($a,$b);
//调用类中的其它方法
Max($a,$c);
$math=newMath();
最大值是"
.$math->
Max3(99,100,88);
classMath
//两个数值比较大小
publicfunctionMax($a,$b){
return$a>
//三个数值比较大小
publicfunctionMax3($a,$b,$c){
$a=$this->
//调用类中的其它方法
使用$this调用构造函数
调用构造函数和析构函数的方法一致。
private$a=0;
publicfunction__construct(){
a=$this->
a+1;
publicfunctiondoSomeThing(){
__construct();
a;
//这里的$a可不是类中的任何一个变量了
现在\$a的值是"
.$a->
doSomeThing();
publicfunction__construct(){
$this->
publicfunctiondoSomeThing(){
//这里的$a可不是类中的任何一个变量了
$this到底指的什么?
$this就是指当前对象,我们甚至可以返回这个对象使用$this。
publicfunctiongetASelf(){
return$this;
publicfunction__toString(){
这是类A的实例"
//创建A的实例
$b=$a->
getASelf();
//调用方法返回当前实例
echo$a;
//打印对象会调用它的__toString方法
publicfunctiongetASelf(){
return$this;
publicfunction__toString(){
//创建A的实例
//调用方法返回当前实例
//打印对象会调用它的__toString方法
通过$this传递对象
在这个例子中,我们写一个根据不同的年龄发不同工资的类。
我们设置处理年龄和工资的业务模型为一个独立的类。
classUser
private$age;
private$sal;
private$payoff;
//声明全局属性
//构造函数,中创建Payoff的对象
payoff=newPayoff();
publicfunctiongetAge(){
age;
publicfunctionsetAge($age){
age=$age;
//获得工资
publicfunctiongetSal(){
sal=$this->
payoff->
figure($this);
sal;
//这是对应工资与年龄关系的类.
classPayoff
publicfunctionfigure($a){
$sal=0;
$age=$a->
getAge();
if($age>
80||$age<
16){
$sal=0;
}elseif($age>
50){
$sal=1000;
}else{
$sal=800;
return$sal;
//实例化User
$user=newUser();
$user->
setAge(55);
echo$user->
getAge()."
age,hissalis"
.$user->
getSal();
setAge(20);
setAge(-20);
setAge(150);
PHP类实例教程(十二):
类中parent:
:
关键字
PHP5中使用parent:
来引用父类的方法。
parent:
可用于调用父类中定义的成员方法。
parent:
的追溯不仅于直接父类。
通过parent:
调用父类方法
!
--声明一个员工类,经理类继承自员工类-->
classemployee
protected$sal=3000;
sal+1200;
sal;
classManagerextendsemployee
//如果想让经理在员工工资的基础上多发1500元
//必须先调用父类的getSal()方法
//这里调用了父类的方法
sal+1500;
$emp=newemployee();
普通员工的工资是"
.$emp->
$manager=newManager();
经理的工资是:
"
.$manager->
classemployee
publicfunctiongetSal(){
classManagerextendsemployee
//如果想让经理在员工工资的基础上多发1500元
//必须先调用父类的getSal()方法
parent:
//这里调用了父类的方法
$manager=