PHP's Reflection and sample code

Source: Internet
Author: User
Tags kohana
Recently, looking at the Java programming idea, see the type Information chapter, the information of the class and the concept of reflection. By the way, let's take a look at PHP's reflective stuff. The manual says: "PHP 5 has a complete reflection API that adds the ability to reverse engineer classes, interfaces, functions, methods, and extensions." In addition, the reflection API provides a way to remove document comments from functions, classes, and methods. "Of course the handbook says something abstract!" The so-called reverse white is the ability to get detailed information about classes, methods, properties, parameters, and so on, including comments! Words are always so dull, for example

Class Foo {  public  $foo = 1;  protected $bar = 2;  Private  $baz = 3;     /**   * Enter description   here ... *  /Public Function MyMethod ()  {    echo ' Hello 2b ';  }} $ref = new Reflectionclass (' Foo '); $props = $ref-& Gt;getproperties (), foreach ($props as $value) {  echo $value->getname (). " \ n ";} Output//foo//bar//baz

Reflectionclass This class returns information about a class, such as attributes, methods, namespaces, implementations of those interfaces, and so on! In the previous example Reflectionclass:: GetProperties Returns an array of Reflectionproperty objects.

The Reflectionproperty class reports information about the properties of the class. such as IsDefault isprivate isprotected isPublic isstatic, Method GetName is to get the name of the property!

The above is the acquisition of properties, as well as the acquisition of class methods such as

Class Foo {  public  $foo = 1;  protected $bar = 2;  Private  $baz = 3;     /**   * Enter description   here ... *  /Public Function MyMethod ()  {    echo ' Hello 2b ';  }} $ref = new Reflectionclass (' Foo '); $method = $ref-& Gt;getmethod (' MyMethod '); $method->invoke ($ref->newinstance ());

Reflectionclass::getmethod is a reflectionmethod type, the Reflectionmethod class reports information about a method, such as IsAbstract isprivate isprotected isPublic isStatic Isconstructor, there is an important way Invoke,invokeargs is the execution Method!

Other objects can look at manuals, not hard!

What is the purpose of reflection?

Reflection is a concept of dynamic operation that can be used to help us analyze other classes, interfaces, methods, properties, methods, and extensions. You can also build patterns, such as dynamic proxies. The use of reflection in some PHP frameworks is also very common, such as Kohana,yii, the following is the implementation of MVC code Kohana, is the use of reflection!

Start validation of the Controller$class = new Reflectionclass (Ucfirst (Router:: $controller). ' _controller ');//Create a new Controller Instance$controller = $class->newinstance ();//Load the Controller Method$met Hod = $class->getmethod (Router:: $method);//Execute the Controller Method$method->invokeargs ($controller, $ arguments);

The above code can clearly see the flow of this framework! Through the router actually processing the URL class, through the router can get which controller, which method! And then execute the method!

The above is a reflection of the PHP data collation, follow-up continue to supplement the relevant information, thank you for the support of this site!

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.