Home  >  Article  >  Backend Development  >  How to call non-static variables in php static methods?

How to call non-static variables in php static methods?

青灯夜游
青灯夜游Original
2020-09-01 11:45:153953browse

In PHP, static methods can use the self keyword to call non-static variables, such as "self::$name"; after a method is "self::", it will automatically become a static method.

How to call non-static variables in php static methods?

Recommended: "PHP Video Tutorial"

Static (static) call in PHP Detailed explanation of non-static methods

Here we analyze the calling of static attributes and static methods in PHP object-oriented. Regarding their calling (whether they can be called and how to call them), you need to understand where they are stored in the memory, so that it is very easy to understand. Static properties and methods (including static and non-static) have only one location in memory (rather than static properties, there are as many properties as there are instantiated objects).

Example:

height;//错。静态方法不能调用非静态属性
//因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象                                                                                     
 }
 public function say(){
 echo self::$name . "我说话了";
 //普通方法调用静态属性,同样使用self关键词
 echo $this->height;
 }
}
$p1 = new Human();
$p1->say(); 
$p1->tell();//对象可以访问静态方法
echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name
//因为静态属性的内存位置不在对象里
Human::say();//错。say()方法有$this时出错;没有$this时能出结果
//但php5.4以上会提示
?>

1. To call static properties, use self::, whether it is a static or non-static method, you can call static properties;Conclusion:

2. Static methods can call non-static methods using the self keyword. In PHP, after a method is called self::, it is automatically converted into a static method;

3. Static methods cannot call non-static attributes. Because non-static properties need to be instantiated and stored in the object;

The above is the detailed content of How to call non-static variables in php static methods?. 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