您好,欢迎访问一九零五行业门户网

PHP Cookbook读书笔记 – 第07章类和对象

虽说在php5之前,php就有对面向 对象 编程方面的支持,但对 对象 和类的处理不是那么的理想,直到php5通过使用zend engine2(ze2)才使php得以包含高级的面向 对象 特性。本章就是介绍php5的面向 对象 特性,目前,很多的公司在招聘phper时都会提出对这部分
虽说在php5之前,php就有对面向对象编程方面的支持,但对对象和类的处理不是那么的理想,直到php5通过使用zend engine2(ze2)才使php得以包含高级的面向对象特性。本章就是介绍php5的面向对象特性,目前,很多的公司在招聘phper时都会提出对这部分的要求。需要稍微注意一下的地方是本书中文版在new一个对象的时候(instantiating objects)翻译为技巧化一个对象,而在博主阅读的资料里都将这一行为描述为“实例化”一个对象。
在学习完本章节需要掌握面向对象的3个特性的使用:继承、封装、多态。
封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承,实现方式有三类:实现继承、接口继承和可视继承。
实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 多态,有二种方式,覆盖,重载。
覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 类里面的几个特殊方法名
__construct:构造器,执行类时首先运行
__destruct:析构器,类结束前运行
__tostring:字符串化,这个方法在php5早期版本和php5.2之后存在差异,使用需注意
public, protected, private :访问控制,分别代表公共、保护、私有
final :方法不可被继承的子类修改或类不可继承
interface:定义一个接口
abstract :定义一个抽象类
clone :复制一个对象的副本
$adam = new user;//两个变量指向的是一个对象$dave = $adam;//指向的是两个不同搜对象$john= clone $adam ;
__get($property)和__set($property, $value):属性访问
__isset( ) 和 __unset( ) :判断是否设置或是否销毁,只对php5.1之后版本有效
__call($method, $arguments):简单点说就是在调用类中未定义的方法时就调用这个
parent::方法名():在子类中调用父类的方法
const :定义类常量,通过[类名]::[常量名]来调用
static:定义静态方法或属性,有.net变成经验的同学需要注意,php中的静态方法只在本次请求过程中有效而不是像.net中的静态方法一次调用后会长期驻留内存。
__sleep( ) 和 __wakeup( ):在序列号和反序列化一个类时调用,常用来保存一些外部资源的连接等
通过反射获得一个类的信息:
reflection::export(new reflectionclass('car'));
reflectionmethod 和 reflectionfunction:分别是反射一个类方法和反射一个函数
instanceof :检测一个对象是否是指定类的实例
__autoload:在实例化一个为定义的类时,会执行此方法
function __autoload($class_name) { include $class_name.php;}$person = new person;
很蛋疼的php语法规则
//合法$class_name = 'net_ping';$class = new $class_name; // new net_ping//下面的非法$partial_class_name = 'ping';$class = new net_$partial_class_name; // new net_ping//合法$partial_class_name = 'ping';$class_prefix = 'net_';$class_name = $class_prefix$partial_class_name;$class = new $class_name; // new net_ping
其它类似信息

推荐信息