您的位置:首页 > 编程语言 > PHP开发

php 学习之面向对象

2016-12-27 21:08 155 查看

对象创建的基本形式

方式1:

$对象名1 = new 类名(); //对象名就是变量名;类是应该定义过了

方式2:



方式3:

$对象名3 = new self; //self指代类本身,这行代码只能在类内部方法中使用。

方式4:通过对象创建对象

• new 对象名;//创建该对象所属类的一个新对象



对象的传值

回顾:

php中,变量传值方式有2个:

值传递: 传递的时候,拷贝的是数据本身。默认都是值传递。

结果:传递完之后,有了2份同样的数据,但两个变量“相互独立”没有关系。

引用传递: 传递的时候,拷贝的是引用关系。需要使用“&”才能实现引用传递。

结果:传递完之后,数据仍然只有一份,但是两个变量共同指向该数据。

则在面向对象这个层面,基本来说,仍然如此:

默认是值传递:

可以使用引用传递:

先观察一个现象:





可见,对象变量进行普通传值的时候,复制的是对象变量中所存储的“对象标识符”



那么,我们断开p1跟其存储的数据(标识符)之间的关系,结果是:p2还有效:



可见p1和p2之间是值传递。

再来对比看看引用传递:



静态属性

在定义属性的时候,前面加上关键字:static,此时就是静态属性。



静态属性有什么用?

对比来说:一般属性,他的值是隶属于该类的具体某个对象(虽然定义在类中),或者说,每个对象的同样的属性的值,有可能不一样。

静态属性就是:只隶属于类本身——也可以看做是所有对象的“共有数据”。

静态属性的使用:

通过特殊的语法:::(双冒号语法,也叫范围解释符)

类::$静态属性名;

对比普通属性的使用:

对象->普通属性名; //普通属性也可以叫做“实例属性”,相应的,对象也叫“实例”



实际上,通过对象也可以使用静态属性(但属于最新的语法,也不推荐):



构造方法

构造方式是类中的一个“特殊”方法,其作用是在实例化一个对象的同时,给该对象的属性赋值,使之一创建完成,就具有了其本身的特有数据(属性值)。

1,该方法名字是固定的,为:__construct();

2,该方法必须是普通方法(不能是静态方法)

3,通常该方法应该是public

4,通常该方法中使用$this这个关键字来对属性进行赋值

5,当new 类名()的时候,其实是在调用该构造方法

6,如果一个类中定义了构造方法,则实例化该类时就会调用该方法,且实例化时的参数需要跟构造方法的参数匹配



结果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息