首页 > 代码库 > php面向对象
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__:代表当前命名空间名!
php面向对象