ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 辅助查询(\*) # **类常用的判断** 是否是CLI模式,服务器的系统 ``` <pre class="calibre10">``` <span class="token4">define</span><span class="token3">(</span><span class="token2">'IS_CLI'</span><span class="token3">,</span> PHP_SAPI <span class="token1">==</span> <span class="token2">'cli'</span> <span class="token1">?</span> <span class="token6">true</span> <span class="token3">:</span> <span class="token6">false</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">define</span><span class="token3">(</span><span class="token2">'IS_WIN'</span><span class="token3">,</span> <span class="token4">strpos</span><span class="token3">(</span>PHP_OS<span class="token3">,</span> <span class="token2">'WIN'</span><span class="token3">)</span> <span class="token1">!==</span> <span class="token6">false</span><span class="token3">)</span><span class="token3">;</span> ``` ``` #### **ClassName::class : 返回带命名空间的完整的类名** ``` <pre class="calibre10">``` namespace think; class <span class="token4">Test</span><span class="token3">{</span> <span class="token3">}</span> <span class="token4">var_dump</span><span class="token3">(</span>Test<span class="token3">:</span><span class="token3">:</span>class<span class="token3">)</span><span class="token3">;</span> <span class="token">// "think\Test"</span> ``` ``` #### **self::ClassName 与 static::ClassName** 类内部获取类名 ``` <pre class="calibre10">``` class <span class="token4">Parent</span> <span class="token3">{</span> public static <span class="token5">function</span> <span class="token4">getParent</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> <span class="token">//self定义在父类就返回父类的名字,与实例化对象是子类还是父类无关</span> <span class="token5">return</span> self<span class="token3">:</span><span class="token3">:</span>class<span class="token3">;</span> <span class="token3">}</span> public static <span class="token5">function</span> <span class="token4">getChild</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> <span class="token5">return</span> static<span class="token3">:</span><span class="token3">:</span>class<span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> class <span class="token4">Son</span> extends <span class="token4">Parent</span> <span class="token3">{</span> <span class="token3">}</span> echo Son<span class="token3">:</span><span class="token3">:</span><span class="token4">getParent</span><span class="token3">(</span><span class="token3">)</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span><span class="token">//parent</span> echo Son<span class="token3">:</span><span class="token3">:</span><span class="token4">getChild</span><span class="token3">(</span><span class="token3">)</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span><span class="token">//Son</span> ``` ``` ### **is\_subclass\_of:判断一个对象是否为一个类的子类** ``` <pre class="calibre10">``` <span class="token4">is_subclass_of</span><span class="token3">(</span><span class="token2">'SonObject'</span><span class="token3">,</span> <span class="token2">'ParentString'</span><span class="token3">)</span> ``` ``` 1.判断一个类是否存在 ``` <pre class="calibre10">``` <span class="token4">class_exists</span><span class="token3">(</span>$className<span class="token3">)</span> ``` ``` 2.判断方法是否存在类中存在 ``` <pre class="calibre10">``` <span class="token4">method_exists</span><span class="token3">(</span>$objectName<span class="token3">,</span>$methodName<span class="token3">)</span> ``` ``` 3.判断属性是否存在类或者对象中 ``` <pre class="calibre10">``` <span class="token4">property_exists</span><span class="token3">(</span>$objectName<span class="token1">|</span>$className<span class="token3">,</span> $propertyName<span class="token3">)</span> ``` ``` 判断一个接口是否存在(是否定义过); ``` <pre class="calibre10">``` <span class="token4">interface_exists</span><span class="token3">(</span>“接口名”<span class="token3">)</span> ``` ``` 4.获取对象的类名 ``` <pre class="calibre10">``` <span class="token4">get_class</span><span class="token3">(</span>$objectName<span class="token3">)</span> ``` ``` 5.获取对象对应类的父类 ``` <pre class="calibre10">``` <span class="token4">get_parent_class</span><span class="token3">(</span>$objectName<span class="token3">)</span> ``` ``` 6.获取类中的方法,返回一个由方法名组成的数组 ``` <pre class="calibre10">``` <span class="token4">get_class_methods</span><span class="token3">(</span>$className<span class="token1">|</span>$objectName<span class="token3">)</span> ``` ``` 7.获取对象中默认的属性,返回由属性组成的数组 ``` <pre class="calibre10">``` <span class="token4">get_object_vars</span><span class="token3">(</span>$objectName<span class="token3">)</span> ``` ``` 获取类中默认的属性和值(中途赋值或者修改的值不能获取): ``` <pre class="calibre10">``` <span class="token4">get_class_vars</span><span class="token3">(</span><span class="token3">)</span> <span class="token">//一般这么用:</span> <span class="token4">get_class_vars</span><span class="token3">(</span><span class="token4">get_class</span><span class="token3">(</span>类对象<span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> ``` ``` 判断是否实现了某个接口: ``` <pre class="calibre10">``` is_instanceof或<span class="token4">class_implements</span><span class="token3">(</span><span class="token3">)</span> ``` ``` 判断某个变量是否是一个对象 ``` <pre class="calibre10">``` <span class="token4">is_object</span><span class="token3">(</span>$obj<span class="token3">)</span> ``` ``` 获取php所有的常量和他们的值(PHP 4 >= 4.1.0, PHP 5)(包含系统和自定义) ``` <pre class="calibre10">``` <span class="token4">get_defined_constants</span><span class="token3">(</span><span class="token3">[</span> bool $categorize <span class="token1">=</span> <span class="token6">false</span> <span class="token3">]</span> <span class="token3">)</span> ``` ``` 获取php自定义的变量(除自定义的还有\_GET、\_POST、\_FILES、\_COOKIE) ``` <pre class="calibre10">``` <span class="token4">get_defined_vars</span><span class="token3">(</span>void<span class="token3">)</span> ``` ``` 获取所有已经定义的函数(PHP 4 >= 4.0.4, PHP 5) ``` <pre class="calibre10">``` <span class="token4">get_defined_functions</span><span class="token3">(</span>void<span class="token3">)</span> ``` ``` 获取所有可用的模块(PHP 4, PHP 5) ``` <pre class="calibre10">``` <span class="token4">get_loaded_extensions</span><span class="token3">(</span>void<span class="token3">)</span> ``` ``` 获取指定模块所有可用的函数。传入的参数(模块名称)必须是小写(PHP 4, PHP 5) ``` <pre class="calibre10">``` <span class="token4">get_extension_funcs</span><span class="token3">(</span>string $module_name<span class="token3">)</span> ``` ``` 获得“整个系统”所定义的类名,结果是一个数组,里面存储的是这些类的名称 (PHP 4, PHP 5) ``` <pre class="calibre17">``` <span class="token4">get_declared_classes</span><span class="token3">(</span> void <span class="token3">)</span> ``` ```