The difference between self and static in PHP object-oriented

Source: Internet
Author: User
Data-id= "1190000005060322" data-license= "sa" >

In the object-oriented programming of PHP, you will always encounter

class test{  public static function test(){    self::func();    static::func();  }  public static function func(){}}

But do you know the difference between self and static?

In fact, the difference is very simple, just need to write a few demo can understand:

Demo for self:

class Car{  public static function model(){    self::getModel();  }  protected static function getModel(){    echo "This is a car model";  }}Car::model();Class Taxi extends Car{  protected static function getModel(){    echo "This is a Taxi model";  }}Taxi::model();

Get output

This is a car modelThis is a car model

It can be found that self in a subclass still calls the parent class's method

Demo for static

class Car{  public static function model(){    static::getModel();  }  protected static function getModel(){    echo "This is a car model";  }}Car::model();Class Taxi extends Car{  protected static function getModel(){    echo "This is a Taxi model";  }}Taxi::model();

Get output

This is a car modelThis is a Taxi model

As you can see, in a call static , a subclass even calls a method of the parent class, but the method called in the parent class method is also a method of the subclass (good Raozui. )

Before the PHP5.3 version, static and self still have a little difference, specifically what, after all, is the 7 version of the world. Don't get to know it.

The summary is that self only the methods in the current class can be referenced, and the static keyword allows the function to dynamically bind the methods in the class at run time.

Reference

    1. http://www.programmerinterview.com/index.php/php-questions/php-self-vs-static/

The above describes the PHP object-oriented self and static differences, including the aspects of the content, I hope that the PHP tutorial interested in a friend helpful.

  • 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.