• 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"
      }
    }
  • 相关阅读:
    Go基础---->go的基础学习(三)
    java基础---->Java关于复制的使用(一)
    java基础---->Reference的使用(一)
    java基础---->Java中枚举的使用(一)
    Go基础---->go的基础学习(一)
    java基础---->java中变参函数的使用
    java框架---->RxJava的使用(一)
    android基础---->AccessibilityService的简单使用(一)
    spring基础---->spring自定义标签(一)
    十分钟让你明白Objective-C的语法(和Java、C++的对比)
  • 原文地址:https://www.cnblogs.com/ecalf/p/2802266.html
Copyright © 2020-2023  润新知