• 20150110--魔术方法魔术常量+面向对象-01


    image

    回顾

    面向对象编程:类,对象和实例化

    类成员:属性,方法和类常量,访问修饰限定符(public,protected和private)

    对象访问属性和方法:对象->属性/方法(实参列表);

    内部访问:$this,代表当前进入到类内部的对象

    魔术方法:构造方法和析构方法

    对象传值,对象比较

    面向对象

    类的加载

    因为要得到一个类的对象,必须先保证类结构已经在内存中(代码段)。

    clip_image002

    自动加载

    在需要用到类的时候,系统会根据指定好的路径去找对应的类文件(文件名为基础),然后根据用户指定的操作,对文件进行处理(加载)。

    魔术函数:会自动被调用的函数

    __autoload():自动加载函数,所有的自动(魔术)都是提供了一个机制,能够被系统自动调用,但是内部的结构都是用户自己定义。

    clip_image004

    自动加载通常的处理方式

    clip_image006

    自动加载是PHP对于类的加载的一种处理机制(小系统),专门负责加载文件。

    1. 实例化的第一步:先去代码段中查看对应的类是否存在

    2. 如果不存在,系统会查看是否开启了自动加载机制(__autoload)

    3. 如果有自动加载存在,那么系统就会调用自动加载函数,传入参数:类名

    注意:自动加载的使用前提,是类文件与类之间的关系特别清楚(完全相同),而且对应的类文件名字,必须有规则(类名.class.php)

    类常量的访问

    类常量属于类,而不属于对象。对象是不能访问。

    常量的访问必须通过类来实现:

    类名::常量名,::叫做范围解析操作符

    clip_image008

    因为在类的内部经常性的使用类来访问类中的成员,所在类的内部使用类进行访问的时候,有一个类似$this代表对象的关键字:self,自己的意思,代表当前类名(self不能单独打印输出,self必须结合范围解析操作符)

    clip_image010

    常量的内存分布

    clip_image012

    self与$this的区别

    1. self代表类,$this代表对象

    2. self访问类内部的常量和静态属性和静态方法,$this访问对象的属性和普通方法

    3. self必须配合范围解析操作符(::)才能生效,$this代表对象,对象本来就是一种数据类型,所以$this可以单独被打印。

    4. 能用$this的地方,一定可以使用self,但是能使用self的地方不一定可以使用$this

    clip_image014

    类常量,静态属性和静态方法的内部访问使用self;

    普通方法,属性的内部访问使用$this

    静态

    静态分为两个部分:静态属性和静态方法

    静态的东西都是给类用的(包括类常量),非静态的都是给对象用的

    静态属性

    在定义属性的时候,使用关键字static修饰的属性称之为静态属性。

    clip_image016

    静态属性属于类不属于对象。

    clip_image018

    对象统计器:统计当前类被实例化了多少个对象。

    clip_image020

    静态方法

    使用static关键字修饰的方法叫做静态方法。(静态方法原则上是给类用的)

    clip_image022

    能用静态解决的问题,不用普通方法解决问题(静态的东西可以直接使用类访问,不需要通过对象实例化,因此节省了内存空间,提升了效率)。

    对象访问静态方法(可以)

    clip_image024

    静态方法和非静态方法的区别

    clip_image026

    静态方法里面不能使用$this关键字。

    特别注意:

    1. 在写代码的过程中,严格遵循大小写规范

    2. 严格遵循:静态的内容给类访问,非静态的是给对象访问,不要跨界操作

    魔术方法

    对象是一种复合数据类型,不能直接使用echo进行输出操作。

    clip_image028

    __tostring():指的是当对象需要被转换成字符串的时候,会自动调用的方法

    clip_image030

    对象默认的是引用传递,所以导致对象的产生只能是new才能产生,但是有时候需要通过对象来产生对象,这时候需要应用到一个克隆的技术。

    语法:变量 = clone 对象变量:

    clip_image032

    魔术方法:__clone(),克隆对象的时候,被克隆出来的对象会去调用的方法。

    clip_image034

    魔术常量

    __CLASS__:代表当前类名,只能类的内部使用

    clip_image036

  • 相关阅读:
    电磁学10.安培环路定律
    电磁学9.毕奥-萨法尔定律与高斯磁定理
    电磁学8.磁场中的运动电荷
    C语言-指针
    Windows和Linux的简单对比
    电磁学7.磁场与洛伦兹力
    睡眠呼吸机-呼吸触发相关算法
    电磁学6.电流与电动势
    code的用法
    字符串处理
  • 原文地址:https://www.cnblogs.com/lifushan/p/5414866.html
Copyright © 2020-2023  润新知