php面向对象

一、编程思想

1.面向过程

概括起来就是“自顶向下,逐步细化”,把一个复杂的问题分解成简单的问题一步一步做出来

2.面向对象

所谓的面向对象,就是在编程的时候尽可能的模拟现实世界!

第一步:分析哪些动作是由哪些实体发出的

第二步:定义这些实体,为其增加相应的属性和功能

第三步:让实体去执行相应的功能或动作

3.面向过程与面向对象的对比

1,  都可以实现代码重用和模块化编程,面向对象的模块化更深,不仅仅是简单的将功能进行封装(封装成函数),更是对调用该功能的主体进行封装,实现某个主体具有个功能,在使用的过程中,先得到相应的主体,再使主体去实现相关的功能

2,  面向对象的数据更封闭,也更安全

3,  面向对象的思维方式更贴近现实生活,更容易解决大型的复杂的业务逻辑

4,  从前期开发角度来看,面向对象要比面向过程更复杂,但是从维护和扩展的功能来看,面向对象要远比面向过程简单

4.$this关键字

代表当前对象,谁调用就代表谁

二、魔术方法

__cosntruct  创建对象时自动调用的构造方法

__destruct   删除对象时自动调用的析构方法,比如删除对象时,可以把调用的资源释放

__clone    克隆一个对象时自动调用,可以写一些代码来区分克隆对象

__sleep   当序列化一个对象时自动调用,一般返回一个需要序列化的属性的数组

__wakeup  当反序列化一个对象时调用,一般要在里面写上初始化代码(一般为不能序列化的资源类型)

__get($name)  获得不可访问的属性的值的时候

__set($name,$value)  为不可访问的属性赋值的时候     

__unset($name)  删除不可访问的属性的时候

__isset($name)  判断不可访问的属性是否存在的时候

__call($name,$arr)$name为方法名,$arr为参数列表,   当调用一个不可访问的非静态方法(对象方法)的时候,会自动执行该魔术方法,这里的不可访问分为不存在或者没有访问权限两种情况

__callstatic($name,$arr)$name为方法名,$arr为参数列表, 当调用一个不可访问的静态方法(对象方法)的时候,会自动执行该魔术方法,,这里的不可访问分为不存在或者没有访问权限两种情况

__autoload不算是魔术方法,可以叫作魔术函数!一般注册自动加载方法使用spl_autoload_register($name),$name为方法名。把对象里的非静态方法注册使用spl_autoload_register(array($obj,$name)),$obj为对象名,$name为方法名

把对象里的静态方法注册使用spl_autoload_register(array($class,$name)),$class为类名,$name为方法名,还有一个简单方法spl_autoload_register(“类名::静态方法名”);

__invoke()   当把对象当做一个函数或方法来调用的时候,会自动执行该魔术方法!括号里面可以传递参数

 __toString()  将一个对象当做一个字符串来使用的时候,会自动触发该方法!

三、魔术常量

__DIR__   返回当前根目录路径

__FILE__  返回当前文件路径

__LINE__  返回当前行数

__FUNCTION__ : 返回当前函数的名字

__CLASS__   返回代表当前类名

__METHOD__  返回当前的方法名!

__NAMESPACE__:代表当前命名空间名!

原文地址:https://www.cnblogs.com/zxz1987/p/6166489.html