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() | 把信息都转化为字符串 |