Home >Backend Development >PHP Tutorial >Calling static attributes and static methods in PHP object-oriented_PHP tutorial

Calling static attributes and static methods in PHP object-oriented_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:07:381177browse

Call of static properties and static methods in object-oriented php

This article mainly introduces the calling of static properties and static methods in object-oriented php For the principles and calling techniques of static attributes and static methods, friends in need can refer to it

The example in this article describes the calling of static attributes and static methods in PHP. Share it with everyone for your reference. The details are as follows:

Here is an analysis of 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:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

header("content-type:text/html;charset=utf-8");

class Human{

static public $name = "小妹";

public $height = 180;

static public function tell(){

echo self::$name;//静态方法调用静态属性,使用self关键词

//echo $this->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 2

3

4

5

6

7 8

9

11 12 13 14 15
16 17
18 19 20 21 22 23 24
<🎜>header("content-type:text/html;charset=utf-8");<🎜> <🎜>class Human{<🎜> <🎜>static public $name = "Little Sister";<🎜> <🎜>public $height = 180;<🎜> <🎜>static public function tell(){<🎜> <🎜>echo self::$name;//Static method calls static attributes, using the self keyword<🎜> <🎜>//echo $this->height;//Wrong. Static methods cannot call non-static properties //Because $this represents an instantiated object, and here is a class, I don’t know which object $this represents } public function say(){ echo self::$name . "I spoke"; //Ordinary methods call static properties, also using the self keyword echo $this->height; } } $p1 = new Human(); $p1->say(); $p1->tell();//The object can access static methods echo $p1::$name;//Object access static properties. You cannot access $p1->name like this //Because the memory location of the static attribute is not in the object Human::say();//Wrong. An error occurs when the say() method has $this; the result can be obtained when there is no $this //But php5.4 or above will prompt ?>
Conclusion: (1) Static properties can be called without instantiation. Because the static attributes are stored in the class, the calling method is "class name::attribute name"; (2) Static methods can be called without instantiation. Same as above (3) Static methods cannot call non-static properties. Because non-static attributes need to be instantiated and stored in the object; (4) 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; I hope this article will be helpful to everyone’s PHP programming design. http://www.bkjia.com/PHPjc/955272.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/955272.htmlTechArticleCall of static properties and static methods in PHP object-oriented This article mainly introduces static in PHP object-oriented Attributes and static method calls, the example analyzes the static static attribute...
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