1 类/对象
__autoload(string $name) 用于自动加载类
bool class_alias($old,$new) 将类名取别名
bool class_exists($name,$autoload=false) 检查类是否定义
array get_class_methods($name) 返回类的所有方法列表
array get_class_vars($name) 返回类的所有属性列表
array get_object_vars() 返回由对象属性组成的关联数组
string get_class($obj) 返回对象的类名
string get_parent_class($obj) 返回对象或类的父类名
get_declared_classes get_declared_interfaces get_decleared_traits 返回脚本中已经定义的类、接口、特性
bool is_a($obj,$class) 检查对象是否为类的实例
bool is_subclass_of($obj,$name) 检查对象是否为类的子类
method_exists($name,$cname) 检查类是否定义了方法
property_exists($name,$cname) 检查类是否定义了属性
2 变量处理
debug_zval_dump() dump一个变量信息,包含了引用计数
doubleval() intval() strval 转换为浮点型/整形/字符型
get_resource_type() 返回资源类型
settype/gettype() 设置及 获取变量类型
is_array is_bool is_callable is_double is_float is_int is_long is_null is_numberic is_object is_resource is_string
var_dump/var_export/print_r 打印变量,三者输出格式略有不同
3 函数处理
mixed call_user_func_array(callable $func, array $params) 回调func并传参数
array func_get_args(void) 返回函数的所有参数
int func_num_args(void) 返回函数的参数个数
mixed func_get_arg(int $num) 返回函数的第num个参数
bool function_exists($name) 检查函数是否已定义
register_shutdown_function($callback [,$param...]) 注册脚本结束时执行函数
<?php
function foobar($arg, $arg2) {
echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
function bar($arg, $arg2) {
echo __METHOD__, " got $arg and $arg2\n";
}
}
// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));
// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>
4 反射
反射提供了对PHP类、对象的反向工程能力,可以获取类、对象、函数、成员方法、成员属性的各种信息,先看下反射子的类层次。
反射子作为基类提供了export的静态方法。反射子可被Reflection类的export($reflector
)静态方法导出详细信息。其中ReflectionClass类用来获取PHP类的信息,ReflectionObject用来获取PHP对象的信息。RefectionMethod用于获取成员方法的信息,而ReflectionFunction用于获取函数的信息。ReflectionProperty用于获取类的成员属性的信息。ReflectionParameter用于获取方法及函数的参数的信息。ReflectionExtension用于获取PHP扩展的信息。这些函数拥有的构造函数可以直接生成各种反射子,各种反射子之间也可以通过成员函数导出。例如Method对象可以通过Class的getMethod方法获得,而parmeter可以通过函数及方法的getParameter方法获得。径向的函数也可以获得其所声明的类名等。
具体类的成员方法的作用不在这里说明,通过名称要以比较好了解其作用。反射的作用很多,反射可以用来反向工程没有文档的PHP类或扩展,获得相关的信息及注释等信息。另一种用处是通过反射提供查找类作用,获取实例特定接口的所有插件。
这里有一篇讲解利用PHP反射来加载插件的框架。http://dengbaoleng.iteye.com/blog/1504589
5 过滤器
首先介绍一下过滤器的类型Validate与Sanitize,前者用于验证,后者用于纠正
FILTER_VALIDATE_BOOLEAN 检查bool型
FILTER_VALIDATE_EMAIL FILTER_SANITIZE_EMAIL
FILTER_VALIDATE_FLOAT FILTER_SANITIZE_NUMBER_FLOAT
FILTER_VALIDATE_INT FILTER_SANITIZE_NUMBER_INT
FILTER_VALIDATE_IP
FILTER_VALIDATE_URL FILTER_SANITIZE_URL
FILTER_VALIDATE_REGEXP
mixed filter_var(mixed $var , int $filter_type, mixed $opt) 从$var中按照指定的类型与选项进行过滤,返回过滤后的结果。
filter_input($type, $var, int $filter,$opt)
bool filter_has_var($type, $var) 检查特定类型变量是否存在
<?php
$a = 'joe@example.org';
$b = 'bogus - at - example dot org';
$c = '(bogus@example.org)';
$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) {
echo "This (a) sanitized email address is considered valid.\n";
}
$sanitized_b = filter_var($b, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_b, FILTER_VALIDATE_EMAIL)) {
echo "This sanitized email address is considered valid.";
} else {
echo "This (b) sanitized email address is considered invalid.\n";
}
$sanitized_c = filter_var($c, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_c, FILTER_VALIDATE_EMAIL)) {
echo "This (c) sanitized email address is considered valid.\n";
echo "Before: $c\n";
echo "After: $sanitized_c\n";
}
?>
6 Classkit
本扩展定义的函数允许在运行时动态操作PHP类。
classkit_import( $filename)
classkit_method_add()
classkit_method_copy()
classkit_method_redefine()
classkit_method_remove()
classkit_method_rename()