面向对象性
1、类中的预定方法
_construct( ):构造方法;
_destruct( ):析构方法;
_get( ):访问器;
_set( ):修改器;
_clone( ):克隆方法;
_toString( ):返回字符串描述;
_call( $method,$p ):重载方法,其中$method是方法名,$p是参数列表数组;
public function _call($method,$p){
if($method == 'display'){
if( is_array($p[0])) { operation; }
else if(is_Integer($p[0])) { operation; }
}
}
_autoload( ):自动加载,不是一个类方法,是一个单独函数,在同一个<?php?>范围内尝试包含或请求任何用来初始化所需类的文件,如:
<?php
function _autoload($name){
require_once ($name.".php");
}
$object1 = new MyClass1();
$object2 = new MyClass2();
?>
//该函数将自动寻找脚本中可以解析为$name.php 文件的类或变量,之后执行函数内的方法体;
//自动加载含有MyClass1和MyClass2类的php文件,并创建MyClass1和MayClass2的实例;
$this:访问本类指针;
2、魔术变量
_FILE_ :返回文件所在当前目录到根目录的一个目录结构;
_LINE_ :返回在文件中的行号;
_FUCTION_ :返回当前的函数名;
_CLASS_ :返回当前的类名;
_METHOD_ :返回该方法被定义时的名字;
3、类常量 Pre-Class
该常量可以在不需要初始化该类的情况下使用,申明关键字:
const
如:
<?php
calss Math{
const pi = 3.14; }
Math::pi;
?>
4、类外对类中的数据域和函数的引用
实例函数或数据:
$math -> add();
静态/类常量 :
Math :: pi;
5、关键字:
const:类常量声明关键字;
static:静态关键字;
abstract:抽象声明关键字;
extends:继承关键字;
implements:接口关键字;
final关键字:声明类中的某个函数不能在任何子类中重载;
instanceof:可转换关键字;
clone:克隆关键字(需要在原class中创建一个 _clone()方法);
$c = clone $b;
※PHP不支持多重继承;
6、转发调用:
self:: 转发至自身本类;
parent:: 转发至父类;
static:: 转发至一开始调用的方法的子类,后期静态绑定,不载解析当前方法所在的类,而是实际运算时计算的;
后期静态绑定(late static binding):父类可以使用子类重载的方法,允许一个静态继承的上下文对一个被调用类的引用;
7、使用Reflection API(反射类)
可以用于了解所反射类中的信息;
<?php
class Page{ }
$class = new Reflection("Page"); //自动寻找本脚本中的Page类,并由此创建一个反射
echo "<pre>".$class."</pre>";
?>
异常处理
※php中,异常必须手动抛出;
使用
try{ } catch( ){ } 结构抛出和捕获处理异常;
异常类:
Exception($message,code): $message:处理异常的提示信息;code:异常出现的函数;(两个参数可选)
getCode( ):返回出传递给构造函数的代码;
getMessage( ):返回传递给构造函数的消息;
getFile( ):返回异常的代码文件的完整路径;
getLine( ):返回异常代码所在的行数;
getTrace( ):返回一个包含了产生异常的代码回退路径的数组;
getTraceAsString( )
_toString: