PHP 的检测 函数

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"
  }
}
原文地址:https://www.cnblogs.com/ecalf/p/2802266.html