php面向对象笔记.docx
《php面向对象笔记.docx》由会员分享,可在线阅读,更多相关《php面向对象笔记.docx(47页珍藏版)》请在冰豆网上搜索。
![php面向对象笔记.docx](https://file1.bdocx.com/fileroot1/2022-11/15/4a5cfb38-70e4-4bae-9f0b-ca28618eb2ff/4a5cfb38-70e4-4bae-9f0b-ca28618eb2ff1.gif)
php面向对象笔记
php
/*类的声明
*1.你要开发的是什么,确定写什么类
*2.类中的成员一定要属于这个类
*电话的类
*
*[修饰类的关键字]class类名{
*成员属性:
外观、颜色、电池容量、屏幕尺寸....
*成员方法:
打电话、发信息、播放音乐、拍照....
*}
*
*在类中声明成员属性时:
前面必须有修饰词,当不知道使用那个时,就使用var,如果知道使用那一个修饰关键字,就不使用var了
*
*类中的成属性,如果创建多个对象时,每个对象有不同的属性值时,不要直接组初值
*
*在创建好对象之后再给值
*
*
*一个文件只保存一个类,文件名中包含类名,文件:
类名.class.php
*自动加载
*aaabbbccc
*变量:
aaaBbbCcc
*函数:
aaaBbbCcc
*常量:
AAABBBCCC
*类名:
AaaBbbCcc
*
*一定要有意义
*
*
*
*实例化对象
*
*
*对象的使用
*
*对象在内存中的分配
*
*
*/
classPhone{
//成员属性
var$pinPai;
var$color;
var$batteryCapacity;
var$screenSize;
//成员方法
staticfunctioncall($number){
}
functionmessage(){
}
functionplayMusic(){
}
functionphoto(){
}
}
classPerson{
var$name="zhangsan";
}
php
/*类的声明
*1.你要开发的是什么,确定写什么类
*2.类中的成员一定要属于这个类
*电话的类
*
*[修饰类的关键字]class类名{
*成员属性:
外观、颜色、电池容量、屏幕尺寸....
*成员方法:
打电话、发信息、播放音乐、拍照....
*}
*
*在类中声明成员属性时:
前面必须有修饰词,当不知道使用那个时,就使用var,如果知道使用那一个修饰关键字,就不使用var了
*
*类中的成属性,如果创建多个对象时,每个对象有不同的属性值时,不要直接组初值
*
*在创建好对象之后再给值
*
*
*一个文件只保存一个类,文件名中包含类名,文件:
类名.class.php
*自动加载
*aaabbbccc
*变量:
aaaBbbCcc
*函数:
aaaBbbCcc
*常量:
AAABBBCCC
*类名:
AaaBbbCcc
*
*一定要有意义
*
*
*
*通过类来实例化对象
*1.使用的是new新建一个对象,加上类名,就是创建那个类的对象
*$对象引用=new类名;
*2.只要有一个new关键字就是创建一个对象,创建一个对象就在内存中分配了一个空间
*
*只有对象才在内存有存储空间
*
*
*
*
*对象在内存中的分配
*
*
*
*对象的使用
*
*对象中的成员必须通过对象的引用来访问
*
*对象->成员
*
*对象->成员属性=新值
*echo对象->成员属性
*对象->成员方法
*
*类的声明
*
*类中成员属性
*
*类中成员方法
*
*对象的创建(对象实例化)
*
*对象中成员的访问形式
*
*/
classPerson{
var$name;
var$age;
var$sex;
functionsay(){
}
functioneat(){
}
functionrun(){
}
}
$p1=newPerson;
$p2=newPerson;
$p3=newPerson;
$p1->name="zhasan";
echo$p1->name;
$p2->say();
php
/*
*1.对象中成员的访问(就是在一个对象的内部方法中,去访问本对象中的其它方法和成员属性)
*2.在对象中的方法中都默认有一个$this关键字,这个关键字代表调用这个方法的对象
*
*3.第一人称代词:
我
*
*构造方法,构造器
*
*1.是对象创建完成以后,“第一个”“自动调用”的方法
*2.构造方法的定义,方法名一个固定的,
*在PHP4中和类名相同的方法就是构造方法
*在PHP5中构造方法选择使用魔术方法__construct()所有类中声明构造方法都使用这个名称
*优点:
在改变类名时,构造方法不用改变
*作用:
就是为成员属性初使化;
*
*
*魔术方法:
*在类中写出了某个魔术方法,这个方法对象的功能就会添加上
*
*方法名称都固定的(都是系统给我们提供好),没有自己定义的,
*
*每一个魔术方法,都是在不同时刻为了完成某一功能自动调用的方法
*不同的魔术方法有不同调用时机
*
*都是以__开头的方法
*
*__construct();
*__destruct();
*
*__set();
*__get();
*__isset();
*__unset();
*
*__clone();
*
*__call();
*
*__sleep();
*
*__weakup();
*
*__toString()
*
*...
*
*__autoload();
*
*
*析构方法:
*
*1.当对象被释放之前最后一个“自动”调用的方法
*
*使用垃圾回收器(javaPHP)而C++手动的释放
*
*作用:
关闭一些资源,作一些清理的工作
*
*__destruct();
*
*
*
*
*/
classPerson{
var$name;
var$age;
var$sex;
function__construct($name="",$age=0,$sex="男"){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
functionsay(){
echo"我的名子:
{$this->name},我的年龄:
{$this->age},我的性别:
{$this->sex}。
";
$this->eat();
}
functionrun(){
}
functioneat(){
}
function__destruct(){
echo$this->name."再见!
";
}
}
$p1=newPerson("zhangsan",20,"女");
$p2=newPerson("lisi",25);
$p3=newPerson("wangwu");
$p1->say();
$p1=null;
$p2->say();
$p3->say();
php
/*
*封装性:
面向对象的三大特性之一
*
*1.就是把对象的成员(属性,方法)结合成一个独立的相同单位,并尽可能隐藏对象的内部细节
*
*publicprotected
*
*private私有的,用这个关键字修饰的成员,只能在对象内部访问(只有用$this访问),不能在对象外部使用
*
*属性可以封装:
*只要一个变量,需要在多个方法使用,就将这个方法声明为成员属性,可以直接在这个对象中的所有方法中使用
*
*成员属性,就相当于这个对象中的全局变量
*
*成员属性都会在方法中使用,成员属性值的变化其实就是在改变方法的执行行为,也就是改变了对象的功能
*
*成员属性的值如果不正常,方法执行的功能也就不正常了
*
*450ma--650mA---5A
*
*3.8--4.2V---220v
*
*作用:
不需要在对象外部改变或读取它的值
*
*1.封装
*
*再提供一个公有的方法(经过方法对象成员属性进行赋值和取值就可以控制)
*方法也可以封装:
*
*作用:
*1.使用private修饰使用其只能在内部使用
*2.一个类中有100个方法,封装了95个(为另外的5个服务的方法),只有5个方法可以使用
*
*
*100成员属性,都让取值,值都不可以改值
*
*和封装有关的魔术方法:
*
*__set():
是直接设置成员属性值时,自动调用的方法
*__get():
是直接获取成员属性值时,自动调用的方法
*__isset();
*__unset();
*
*
*
*
*/
classPerson{
private$name;
private$age;
private$sex;
function__construct($name="",$age=0,$sex="男"){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
functiongetPro($name){
return$this->$name;
}
functionsetAge($age){
if($age>100||$age<0)
return;
$this->age=$age;
}
functiongetAge(){
if($this->age<30)
return$this->age;
elseif($this->age<40)
return$this->age-5;
elseif($this->age<50)
return$this->age-10;
else
return$this->age-15;
}
functionsay(){
echo"我的名子:
{$this->name},我的年龄:
{$this->age},我的性别:
{$this->sex}。
";
}
functionrun(){
$this->left();
$this->left();
$this->right()