新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP面向对象简单小结

Posted on 2012-04-25 15:51  张贺  阅读(1238)  评论(0编辑  收藏  举报

PHP技术交流群 170855791

声明类:
class GoodClass{}//类名通常使用驼峰式写法
注:由于php内部定义了类stdClass,所以不能在自己的代码定名名为stdClass的类了
类中的属性声明必须使用一个指明其可见性的关键字,如public。类中的方法也是如此,如果方法前没有该关键字,默认是public
其实php4中也支持var $var;的方法来声明属性,而且php5中也支持这种写法,不过最好不要这么写。
同时若是类中的属性在声明时被赋予了初始值,那么这个值必须是常数,而且不能是表达式

1 class GoodClass
2 {
3 public $var1 = 123;//正确
4 public $var2 = get_date();//错误
5 public $var3 = $num*$num;//错误
6 }

定义好了类之后,就需要创建类实例对象,使用new关键字

1 $gc = new GoodClass();

删除对象:

unset($gc);

从技术角度讲不一定非要删除对象,因为在程序执行完成后,会自动删除对象。但这样做可以让程序显得更整洁

注:php中,类名不区分大小写,但对象名与变量名区分大小写。php里的函数名不区分大小写,类里的方法名也是这样

在类内部调用类内部的另一个方法或函数,需要使用$this,$this指像了当前所在的类(php手册中变量和类型相关扩展中的方法管理中有大量操作方法的函数)

解构器__destruct不能接受任何参数

自动加载类:
PHP5中支持一个名为__autoload的特殊函数,当创建对象时,如果使用的类未定义,__autoload方法就会被调用

1 function __autoload($class)
2 {
3     require_once($class . '.php');
4 }
5 $obj = new Class();

此时Class.php文件将会被导入
另一种方法:spl_autoload_register()

在创建对象时,PHP总是会调用对象所属类的构造器,包括解构器

方法覆盖:
子类定义的方法必须与父类的方法具有完全相同的名称和参数数量
注:PHP中也可以进行方法重载

只能通过self访问静态属性
静态方法中只能访问静态成员属性
通过class::function()访问静态方法时不会调用类的构造函数
静态方法不能通过类的实例来访问
重写静态方法,重写的方法也必须是静态的

异常:
抛出异常有两种方式。第一种是明确抛出一个异常:
throw new Exception('eror message');
这样就会抛出一个Exception类型的对象,throw后面的代码永远不会被执行。这个类实在PHP里定义的。为了捕获这个一场,需要catch (Exception $e)
其中$e是个Exception类型的对象。
第二种抛出异常的方法是使用try catch语句
Exception类中方法:

名称 返回值
 getCode()  接收到的代码
 getMessage()  接收到的消息
 getFile()  发生异常的文件的名称
 getLine()  抛出异常的代码的行号
 getTrace()  信息组,包括文件名及行号等
 getTraceAsString()  与getTrace的信息一样,但形式是字符串
 _toString()  把信息都转化为字符串