Home  >  Article  >  Backend Development  >  The difference between class static call and scope resolution operator in PHP

The difference between class static call and scope resolution operator in PHP

小云云
小云云Original
2018-01-11 10:32:251336browse

This article mainly introduces the difference between class static calling and range resolution operators in PHP. Friends who need it can refer to it. I hope it can help everyone.

The specific code is as follows:


<?php
//在子类或类内部用“::”调用本类或父类时,不是静态调用方法,而是范围解析操作符。
class ParentClass {
 public static $my_static = &#39;parent var &#39;;
 function test() {
  self::who(); // 输出 &#39;parent&#39; 是范围解析,不是静态调用
  $this->who(); // 输出 &#39;child&#39;
  static::who(); // 延迟静态绑定 是范围解析,不是静态调用
 }
 function who() {
  echo &#39;parent<br>&#39;;
 }
}
class ChildClass extends ParentClass {
 public static $my_static = &#39;child var &#39;;
 function who() {
  echo &#39;child<br>&#39;;
 }
}
$obj = new ChildClass();
$obj->test();
echo ChildClass::$my_static;//静态调用

The above output

parent

child

child

child var

Related recommendations:

Can non-static methods be called statically in PHP? (Weird call)

Application analysis of PHP statically calling non-static methods_PHP tutorial

Application analysis of PHP statically calling non-static methods

The above is the detailed content of The difference between class static call and scope resolution operator in PHP. For more information, please follow other related articles on the PHP Chinese website!

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