PHP基础(010)---类的特性和经典类库

OOP : 面向对象

OOA : 面向对象分析

OOD : 面向对象设计

PHP类的特性:

  1. 类中的成员/静态类成员
    • 访问成员变量 【示例 : “对象名->成员变量”】
    • 访问成员方法 【示例:“对象名->成员方法”】
    • 调用静态变量 【示例 : ”关键字:: 静态成员 , 关键字如self ; 或用 "类名 :: 静态变量" (不用实例化类)】
  2. 实例化类 ---【关键字 new】
  3. 类中的方法
    • 构造方法 【function __construct(), 双” _ “ 线】 ---初始化变量
    • 析构方法 【function __destruct()】 ---锁毁对象
  4. 方法的参数/ 方法的返回值
  5.  类的封装/访问修饰符 : public/private/protected/static/final(为final的类不可以再被继承,也不能再有子类。)
  6.  $this关键字 :调用本类中的成员变量或方法
  7.  类的继承extends/子类继承父类
  8.  多态/重写父类中的成员属性 
  9. 访问静态类成员(self::parent::)
  10.  类常量
    • 关键字:const
    • 调用常量 :【示例 : “类名 :: 常量名”】; 补充关于操作符【 :: 】使用 : “关键字(parent,self) :: 变量名/常量名/方法名"
    • 略...

类的高级特性:

  1.  类对象的克隆(clone)
  2.  类接口(interface)/ 实现接口(implements)
  3.  抽象类与抽象方法abstract
  4. 对象比较(用"=="表示对象的内容;用"===“表示比较对象的引用地址)
  5. 对象的类型检测(instanceof)
  6. 魔术方法
    • __get()和__set() ---为私有的变量提供访问途径
    • __sleep()和__wakeup()
    • __toString() ---作用是当使用echo或print输出对象时,将对象转化为字符串。
    • __autoload() ---自动加载类
  7. 类的异常 try...catch...finally...

 类库:

  • 图表库

    • pChart - 一个可以创建统计图的库。

    • Libchart - 这也是一个简单的统计图库。

    • JpGraph - 一个面向对象的图片创建类。

    • Open Flash Chart - 这是一个基于Flash的统计图。

  • RSS 解析

    • MagpieRSS - 开源的PHP版RSS解析器,据说功能强大,未验证。

    • SimplePie - 这是一个非常快速,而且易用的RSS和Atom 解析库。

  • 缩略图生成

    • phpThumb - 功能很强大,如何强大还是自己去体会吧
  • 支付

  • OpenID

    • PHP-OpenID - 支持OpenID的一个PHP库。OpenID是帮助你使用相同的用户名和口令登录不同的网站的一种解决方案。如果你对OpenID不熟悉的话,你可以到这里看看:http://openid.net.cn/

  • 数据为抽象/对象关系映射ORM

    • ADOdb - 数据库抽象

    • Doctrine - 对象关系映射Object relational mapper (ORM) ,需要 PHP 5.2.3+ 版本,一个非常强大的database abstraction layer (DBAL).

    • Propel - 对象关系映射框架- PHP5

    • Outlet - 也是关于对象关系映射的一个工具。

  • PDF 生成器

    • FPDF - 这量一个可以让你生成PDF的纯PHP类库。

  • Excel 相关

    • php-excel - 这是一个非常简单的Excel文件生成类。

    • PHP Excel Reader - 可以解析并读取XLS文件中的数据。

  • E-Mail 相关

  • 单元测试

    • SimpleTest - 一个PHP的单元测试和网页测试的框架。

    •  

      PHPUnit - 来自xUnit 家族,提供一个框架可以让你方便地进行单元测试的案例开发。并可非常容易地分析其测试结果。

 补充=》

在学习完本章节需要掌握面向对象的3个特性的使用:继承、封装、多态

封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承,实现方式有三类:实现继承、接口继承和可视继承。

  1. 实现继承是指使用基类的属性和方法而无需额外编码的能力;
  2. 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
  3. 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

多态,有二种方式,覆盖,重载。

  1. 覆盖,是指子类重新定义父类的虚函数的做法。
  2. 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

类里面的几个特殊方法名

__construct:构造器,执行类时首先运行

__destruct:析构器,类结束前运行

__toString:字符串化,这个方法在PHP5早期版本和PHP5.2之后存在差异,使用需注意

public, protected, private :访问控制,分别代表公共、保护、私有

final :方法不可被继承的子类修改或类不可继承

interface:定义一个接口

abstract :定义一个抽象类

clone :复制一个对象的副本

1
2
3
4
5
$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( ):在序列号和反序列化一个类时调用,常用来保存一些外部资源的连接等

通过反射获得一个类的信息:

1
Reflection::export(new ReflectionClass('car'));

 

ReflectionMethodReflectionFunction:分别是反射一个类方法和反射一个函数

instanceof :检测一个对象是否是指定类的实例

__autoload:在实例化一个为定义的类时,会执行此方法

1
2
3
4
5
function __autoload($class_name) {
    include "$class_name.php";
}
  
$person = new Person;

 

很蛋疼的PHP语法规则

1
2
3
4
5
6
7
8
9
10
11
12
//合法
$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

 

 

posted on 2014-04-30 00:45  lbsf  阅读(262)  评论(0编辑  收藏  举报

导航