In PHP object-oriented programming, 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, you only need to write a few d's"/> In PHP object-oriented programming, 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, you only need to write a few d's">

Home  >  Article  >  Backend Development  >  The difference between self and static in PHP object-oriented

The difference between self and static in PHP object-oriented

WBOY
WBOYOriginal
2016-07-29 08:51:06914browse

data-id="1190000005060322" data-license="sa">

In PHP object-oriented programming, you will always encounter

<code>class test{
  public static function test(){
    self::func();

    static::func();
  }

  public static function func(){}
}</code>

But do you know the difference between self and static?

In fact, the difference is very simple. You only need to write a few demos to understand:

Demo for self:

<code>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();</code>

Get the output

<code>This is a car model
This is a car model
</code>

You can find that self will still call the method of the parent class in the subclass

Demo for static

<code>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();
</code>

gets the output

<code>This is a car model
This is a Taxi model
</code>

You can see that when calling static, even if the subclass calls the method of the parent class, the method called in the parent class method will still be the method of the subclass (so confusing. . )

Before PHP5.3, there was still a little difference between static and self. What exactly was it? After all, it was all in version 7. I won’t understand it anymore.

The summary is: self can only reference methods in the current class, while the static keyword allows functions to dynamically bind methods in the class at runtime.

Reference

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

The above introduces the difference between self and static in PHP object-oriented, including aspects of content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php之文件上传和下载Next article:php脚本配置