PHP 的函数多如牛毛,常用的自然记住,不常用的真的记不住...
这里列出是是关于变量类型、数据存在性、可用性 的检测函数
gettype() //返回变量类型的字符串描述,类似 js 的 typeof ,由于变量类型被多次修改,不建议使用
settype() //修改变量类型(不仅仅修改变量的值,与类型转换不同)
var_export(expression,true) //打印数据的合法 php 代码字符串(可 eval ),true 将代码返回不打印
var_dump(expression1,expression2,...) //打印数据及其类型
print_r(expression) //打印数据,如果是数组或对象,会打印出其结构
empty() //只接受变量及对象属性、数组元素、字符串截取的值,总之,不接受常量及表达式
isset() //不接受常量及表达式
define(constantName, value)//定义常量
defined(constantName) //是否已经定义常量
constant(constName) //返回常量的值
is_null()
is_bool(var)
is_int(var) //这几个作用一样,只是别名
is_integer()
is_long()
is_float(var) //这几个作用一样,只是别名
is_double()
is_real()
is_numeric(var)
is_infinite(val)
is_finite(val)
is_nan(val)
is_string(var)
is_scalar(var)
is_array(var)
is_object(var)
is_resource(var)
is_a(object, class_name) //不建议使用,应使用 object instanceof class_name
(object instanceof class_name) //检测继承关系
is_subclass_of(object|sub_class_name, class_name)
is_soap_fault(object)
is_link(filename)
is_uploaded_file(filename)
is_file(filename)
is_dir(filename)
is_writable(filename)
is_writeable() // is_writeable的别名
is_readable(filename)
is_executable(filename)
is_callable(name) // 针对类的方法时,不同版本对 static 方法的判定不一样,抽象函数其实不能执行,但也返回 true,建议使用在变量和普通函数字 上,PHP 5 支持匿名函数后,参数可以是匿名函数(clousre),PHP 的某些函数传参可以是 callback 类型,要求传入一个匿名函数 或可执行函数的字符串标识,is_callable 可以用来在校验这个参数是否为 callback.
func_get_arg(int arg_index) //通过参数序号获取函数被调用时的传参(不包括带有默认值,但未传参的默认参数,下面几个函数也是),PHP5.3 之后,这些函数通过包含文件的形式引入函数将导致错误
func_get_args(); //获取函数的所有传参,返回数组,传参个数可能多于形参个数,如果少于形参个数,除非被忽略的参数在函数声明时有默认值,否则会发出警告,
func_num_args(); //传参个数,
file_exists(filename)
array_key_exists(key, search)
class_exists(class_name[, __autoload]) //默认会尝试 __autoload(),可以将第二参数设为 false来阻止
interface_exsists(interface_name[,__autoload])//可以设置第二个参数为false阻止 __autoload()
method_exists(object|class_name, method_name) //能检测公有、私有、保护方法,自 php4.05 起,类似的函数传参可以是 object 也可以是 class_name
property_exists(object|class_name, property)//能检测公有、私有、保护属性
class_parents(object|class_name[,__autoload]) //spl 代码库,设置第二个参数位 false 来阻止自动加载类
class_implements(object|class_name[,__autoload]) //spl代码库,返回实现那些接口,设置第二个参数位 false 来阻止自动加载类
get_class([object]) //自php5起,如果在对象的方法内执行可以省略参数,获取当前对象的类名
get_parent_class(object|class_name)
get_called_class() //在对象的方法内执行,如果此方法是继承来的,返回子类类名而不是父类
get_class_methods(object|class_name)//只能获取公有方法
get_object_vars(object) //只能获取公有属性,不接受类名传参,在 php4.2之前只返回已经赋值的属性
get_defined_constants() //声明的常量
get_defined_vars() //声明的变量
get_declared_interfaces() //声明的接口
get_declared_classes() //已声明的类
get_defined_functions() //已声明的函数
get_loaded_extensions() //已加载的插件
get_extension_funcs(module_name) //在插件中声明的函数
get_required_files()
get_include_path() //返回 php.ini 中定义的包含路劲 ini_get('include_path')
getcwd() //当前文件所在文件夹路劲,某些 unix 系统需要当前目录的任一父目录的读写权限才能获取该路劲
glob(pattern,[frag]) //返回匹配的所有文件的信息,如 glob('*.txt')
dirname(path) //返回文件路劲的文件夹部分
getimagesize(filename) //返回图片文件信息
get_resource_type(handle) //返回资源类型的字符串描述
get_meta_tags(filename,[isurl]) //返回 html 文件 head 标签内的 meta ,只返回有 name 属性的 meta
get_headers(url) //请求服务器返回的 http 响应头
getallheaders() //返回客户端发来的 http 请求头,仅用于 apache 服务器
apache_request_headers() //getallheaders 的别名
get_browser()// 检测浏览器支持的功能,只检查 browscap.ini 内描述的功能,请在 php.ini 内配置 browscap.ini 的路劲,注意,检测 到浏览器支持某个功能并不代表允许使用某项功能,比如,用户也许进行了设置禁止某些网站使用 cookies
get_cfg_var(option) //返回在 php,ini 中显式设置的配置项的值
ini_get(varname) //返回 php 配置项
ini_set(varname, newvalue) //在脚本中临时设置 配置项,脚本执行完毕后配置项的值将复原
ini_get_all() //所有配置项
ini_restore(varname) //在脚本中恢复临时修改的配置项的值
phpinfo() //打印出 php 环境配置参数
php_ini_loaded_file() //返回 php.ini 文件的绝对路劲
//特殊字符的转义
get_magic_quotes_gpc()
get_magic_quotes_runtime()
get_html_translation_table([HTML_ENTITIES|HTML_SPECIALCHARS]) //查看特殊字符将如何被转义
time() //系统时间戳
array getdate()
array gettimeofday()
date_default_timezone_get()
date_default_timezone_set(timezone_identifier) //也许需要查表看看timezone_identifier的值字符串
system() //执行系统命令 如 windows中 system('dir'); system('msconfig')
//魔术常量
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。
__FUNCTION__ 函数名称。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的。
$GLOBALS //保存所有全局变量的数组
$_SERVERS //服务器请求的相关参数
关于类的反射的更高级的用法,参考 专门的 反射类 Reflaction, 这个类以 class_name 或 object 为构造参数,构造一个专门的反射类来考察传入的类的属性。
class Foo { private function priFunc(){} protected function proFunc(){} public function pubFunc(){} } function get_class_all_methods($class){ $r = new ReflectionClass($class);//反射类 foreach($r->getMethods() as $key=>$methodObj){ if($methodObj->isPrivate()) $methods[$key]['type'] = 'private'; elseif($methodObj->isProtected()) $methods[$key]['type'] = 'protected'; else $methods[$key]['type'] = 'public'; $methods[$key]['name'] = $methodObj->name; $methods[$key]['class'] = $methodObj->class; } return $methods; } $methods = get_class_all_methods('Foo'); var_dump($methods);
运行结果:
array(3) { [0]=> array(3) { ["type"]=> string(7) "private" ["name"]=> string(7) "priFunc" ["class"]=> string(3) "Foo" } [1]=> array(3) { ["type"]=> string(9) "protected" ["name"]=> string(7) "proFunc" ["class"]=> string(3) "Foo" } [2]=> array(3) { ["type"]=> string(6) "public" ["name"]=> string(7) "pubFunc" ["class"]=> string(3) "Foo" } }