PHP 面向对象

2018/02/24 15:04
阅读数 9

PHP 面向对象

项目抽象出对象 实现对象 组成项目 将一个项目看成由多个对象组成

 

面向过程,一个功能一个功能实现,以程序的执行过程

 

面向对象多人合作,上手比较难。提高开发的效率。php简单好学。这是一个宣传?truefalse;(面向过程部分)

 

OOP Object Oriented Programming

OOA Object Oriented Analysls) 面向对象分许

OOD Object Oriented Design)面向对象设计

 

 

OOP-->所有事物全部被视为对象、代码的可重用、程序可维护性好、可扩展性高,灵活性高

 

对象 由属性和方法组成

 

具有相同属性和方法的抽象(集合)

 

在程序中我们需要的是属性和方法来保存数据和执行逻辑,要调用属性和方法必须要有对象,要有对象必须先有类。

开发顺序:类-->对象-->属性和方法

php中实现类

语法:class 类名{

 

}

类名不区分大小写

 

命名法:

帕斯卡命名法(大驼峰)首字母大写后面的单词首字母也大写 UserInfo

骆驼命名法(小驼峰)首字母小写,后面单词的首字母大写或者每个单词都小写,中间用下划线连接 userInfo user_name

匈牙利命名法 构成,变量类型+变量名字 iNumintfnShowfunctionsNamestringaStu(array)

 

属性:public $name='李白';  //访问修饰符+变量名==属性

 

方法:  function show(){

echo '这是一个方法';  //访问修饰符+方法名

}

类:

class Student{

public $name='李白'; //访问修饰符+变量名==属性

 

public $sex='';

 

function show(){

echo '这是一个方法';  //访问修饰符+方法名

}

 

}

 

 

$stu1=new Student();

//实例化一个对象,并且将这个对象保存到$stu1变量 $stu1object

 

$stu2=new Student();

//$stu1!=$stu2(不是同一个空间) 对象的本质还是变量

//new 用来实例化对象

//类实际上就是一种复杂的类型

?>

 

调用属性:

OOP中调用属性和方法,必须要有对象。

echo $stu1->name,'<br>';//调用属性

echo $stu1->show(),'<br>';//调用方法

echo $stu2->name,'<br>';

运行结果:

给属性赋值:

$stu1->name='tom';//给属性赋值

$stu2->name='james';

运行结果:

增加删除属性:

echo '<br>---------------增加属性------------------<br>';

$stu1->add='北京';

var_dump($stu1);

echo '<br>---------------删除属性------------------<br>';

unset($stu2->name);

var_dump($stu2);

运行结果:

 

判断属性:

echo '<br>---------------判断属性是否存在------------------<br>';

var_dump(isset($stu1->name),isset($stu2->name));

运行结果:

 

 

深入理解:

堆栈:指的就是内存(依次检索的)常用数据放在栈里面(比较小)堆中放置较大的数据,内存地址放在栈中。

$stu1=new Student();

 

Student()放在堆中,$stu1放在栈中 属于引用传递

 

 

访问修饰符:

Public 可以在类的内部和外部访问

Private 只能在类的内部访问

Protected 可以在类的内部和子类中访问(可以在整个继承链上访问)

 

OOP中,属性一般都是私有的,我们通过公有的方法给他赋值取值;

封装

 

访问修饰符的作用就是用来做封装的;

封装的目的是用来有选择性的提供数据和访问;

 

构造方法:也叫构造函数,在实例化对象的时候自动执行;

只要实例化一次就自动调用一次

Public 可以省略,默认为public

 

析构方法:也叫析构函数,当这个对象销毁的时候自动执行;

如果我们实例化两个对象,谁先销毁呢?

$stu=new Student('tom','');

$stu->show();

$stu2=new Student('james','');

$stu2->show();

由此图知,先销毁的是james 栈是先进后出;

 

unset($stu); //销毁$stu

$stu2=null;//销毁$stu2

析构函数里面不允许有参数;

继承

具有层次性;

子类继承了父类的属性和方法,实现了代码的可重用性;(私有属性也继承了,但是不能直接访问,没有权限使用)

父类和子类具有相对性

调用父类的属性和方法:通过$this

 

如果子类没有构造函数,就调用父类的;

如果子类有构造函数,那就调用自己的,父类的构造函数不被调用。

通过parent或者类名调用父类的构造函数

Parent指的就是父类的名字;new Person() new parent() 一样;

 

子类给父类的构造函数赋值

PhP不允许多重继承(C# java 都不行 C++可以)

可以形成一个继承链来实现C继承B并且继承A

$this

$this 表示当前对象的引用;

判断: $this 表示$this所在类的对象(错误)

编辑过程中图片变的有点模糊了,有点影响阅读的效果。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部