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

  





原文地址:https://www.cnblogs.com/1500418882qqcom/p/10370299.html