早在之前学习Java的时候,清楚的记得是学完了多线程之后学习的反射,现在在PHP中当然也有反射机制,如果童鞋你还不明白,那就需要搞明白奥,毕竟反射的功能还是蛮强大的,学习它还是很具有现实意义的。 反射从简单去理解就是我们拿到一个类,得到这个类的一些信息,比如它有哪些方法、有哪些参数等等,当然我们还可以动态的去调用它的方法等等一些功能,它的用途就是可以自动加载插件、自动生成文档等等,从而达到扩展PHP语言的作用。
几乎所有的反射类都实现了reflector接口,所有的实现类都拥有一个方法,那就是export方法,我们可以用该方法来查看一些信息,这里我们以PHP的内置类作为第一个例子来看一下反射的基本用法,我们新建一个php文件,代码如下:
<?php $class = new ReflectionClass("mysqli");Reflection::export($class);
下面是它的本部分输出信息:
Class [ class mysqli ] { - Constants [0] { } - Static properties [0] { } - Static methods [1] { Method [ static public method poll ] { - Parameters [5] { Parameter #0 [ array or NULL &$read ] Parameter #1 [ array or NULL &$write ] Parameter #2 [ array or NULL &$error ] Parameter #3 [ $sec ] Parameter #4 [ $usec ] } } } - Properties [19] { Property [ public $affected_rows ] Property [ public $client_info ] Property [ public $client_version ] Property [ public $connect_errno ] Property [ public $connect_error ] Property [ public $errno ] Property [ public $error ] Property [ public $error_list ] Property [ public $field_count ] Property [ public $host_info ] Property [ public $info ] Property [ public $insert_id ]
这里我只是截取了部分内容,因为全部内容还是挺长的,我们可以看出它没有定义任何的静态属性,它有一个静态方法,方法名是poll,它需要五个参数,这五个参数的第一个可以是一个数组,也可以是一个NULL,它是变量$read代表的,第二个参数是一个数组或者一个NULL等等。。。。这里不一一列举了,读者可以阅读上面的代码段自行判断。
下面说一下我们的代码做了什么工作,我们首先定义了一个反射类ReflectionClass的实例$class,我们可以用var_dump来查看它的信息,这里我就不粘贴信息了,就看读者是否亲自操作了,然后我们调用Reflection的静态方法export来导出这个类的信息,然后我们就看到了上面的信息。
上面我们用反射机制来查看了该内置类的一些信息,那么对于我们自定义的类,我们能否查看呢,答案显然是可以的,比如如下代码:
<?phpclass Person{ public $name; /** *仅仅用来打印信息 */ public function test(){ echo "辛星加油"; }}foreach(get_declared_classes() as $class){ $myclass = new ReflectionClass($class); if($myclass->isUserDefined()){ Reflection::export($myclass); }}然后我们运行上述代码,发现输出信息如下:
Class [ class Person ] { @@ D:\MyApp\wamp\www\ap.php 2-10 - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [1] { Property [ public $name ] } - Methods [1] { /** *仅仅用来打印信息 */ Method [ public method test ] { @@ D:\MyApp\wamp\www\ap.php 7 - 9 } } }通过它的反射机制,我们看到的还是蛮全面的,比如它没有定义常量,也没有静态属性,有一个公开的属性,是$name,还有一个方法,叫做test,而且该方法的注释是"/** * 仅仅用来打印信息 */",这里大家能否进一步了解到写一个好的注释的作用呢,这样别人反射你的类的时候,就能看到这个函数的作用了。顺便提一下,这里的get_declared_classes用于获取已定义的类,而需要注意的是上面的$myclass是一个类,不是一个字符串,因此它有自己的方法来检测isUserDefined是否是用户调用的。
可能有些童鞋会说,我们通过var_dump也可以获取类的一些信息啊,没错,还是同一个类,我们看看用var_dump会输出什么,代码如下:
<?phpclass Person{ public $name; /** *仅仅用来打印信息 */ public function test(){ echo "辛星加油"; }}$person = new Person();$person->name = "xinxing";var_dump($person);
它的输出如下:
<strong>object</strong>(Person)[1] public 'name' => string 'xinxing' (length=7)
当然,可能大家也都知道var_dump和反射相比,对于类的操作还是很弱的,它只能够查看类的实例的信息,而且只能看类的属性,对于类里面的注释和方法都无能为力,没办法,这不是对象应该有的。
不要走开,我的博客会继续写一篇关于反射的应用的,这是这个篇幅有点长了,我想另开一篇博客 而已,期待您的关注。

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

PHP and Python are both high-level programming languages that are widely used in web development, data processing and automation tasks. 1.PHP is often used to build dynamic websites and content management systems, while Python is often used to build web frameworks and data science. 2.PHP uses echo to output content, Python uses print. 3. Both support object-oriented programming, but the syntax and keywords are different. 4. PHP supports weak type conversion, while Python is more stringent. 5. PHP performance optimization includes using OPcache and asynchronous programming, while Python uses cProfile and asynchronous programming.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP remains important in the modernization process because it supports a large number of websites and applications and adapts to development needs through frameworks. 1.PHP7 improves performance and introduces new features. 2. Modern frameworks such as Laravel, Symfony and CodeIgniter simplify development and improve code quality. 3. Performance optimization and best practices further improve application efficiency.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP type prompts to improve code quality and readability. 1) Scalar type tips: Since PHP7.0, basic data types are allowed to be specified in function parameters, such as int, float, etc. 2) Return type prompt: Ensure the consistency of the function return value type. 3) Union type prompt: Since PHP8.0, multiple types are allowed to be specified in function parameters or return values. 4) Nullable type prompt: Allows to include null values and handle functions that may return null values.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 Linux new version
SublimeText3 Linux latest version

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.