php面向对象
1、基本概念:
面向对象的三大特征:封装、继承、多态
类:
是用于描述“某一些具有共同特征”的物体的概念,是某一类物体的总称
对象:
是指一个具体的“物体”,该物体隶属于某个“类别”(类)
//定义一个类 class person{ //定义姓名属性 var $name = ""; //定义说话的方法 function say($name){ echo $name."说话"; } } //实例化对象 $zs = new person(); //赋值 $zs->name="张三"; //调用方法 $zs->say($zs->name);
2、面向对象的语法:
(1)定义类;定义类的语法中只有
1.1定义属性(变量)
1.2定义方法(函数)
1.3定义常量(类常量)
三种代码。
(2)创建类对象,就是上边的$zs = new person();
(3)使用对象:
3.1使用其属性:因为属性就是“变量”,则使用其属性,
3.2使用其方法:因为方法就是“函数”,则使用其方法,
3.3使用其常量:类似使用以前的普通常量。
//赋值 $zs->name="张三"; //调用方法 $zs->say($zs->name);
3、创建对象的基本形式
方式1:
$对象名1 = new 类名(); //对象名就是变量名;类是应该定义过了
方式2:
$N = 'person'; $name2 = new $N();//可变类(名)
方式3:
$对象名3 = new self; //self指代类本身,这行代码只能在类内部方法中使用
方式4:通过对象创建对象
$name3 = new $name2;//通过对象创建该类的新对象
4、对象的传值
php中,变量传值方式有2个:
值传递: 传递的时候,拷贝的是数据本身。默认都是值传递。
结果:传递完之后,有了2份同样的数据,但两个变量“相互独立”没有关系。
引用传递: 传递的时候,拷贝的是引用关系。需要使用“&”才能实现引用传递。
结果:传递完之后,数据仍然只有一份,但是两个变量共同指向该数据。
面向对象的传值也是如此,默认是值传递
class num{ var p = 10; } $p1 = new num(); $p2 = $p1; $p1->p=20; $p3 = new num(); var_dump($p1); var_dump($p2); var_dump($p3);
对象变量进行普通传值的时候,复制的是对象变量中所存储的“对象标识符”(就是[2],[3])
5、属性
就是放在一个类中的变量
定义形式:
形式1: var $v1 ; //定义不赋值
形式2: var $v2 = 2; //定义的同时可以赋值,该值只能是“直接值”,常量(值)
//不能是变量值,也不能是“计算表达式”
形式3: public $v1;
形式4: public $2 = 2; //其实var是“public”一个别名,正式用public更好。
使用形式:
$对象->属性名; //注意:属性名前面没有$符号。
6、方法
class peop{ public $name; public $age; public $sex; //定义方法 function info(){ echo '我是'.$this->name; } } //调用方法 $ls = new peop; $ls->name = '李四'; $ls->info();
$this是一个“伪对象”,代表当前所属类的当前对象
通俗讲,谁调用了函数,$this就指类中的对象
一个系统函数:get_class(对象);
作用:获得某个对象的“所属类名”——结果只是一个类名字符串。
echo get_class($ls); //结果是info