This article mainly describes the PHP object-oriented static property and static methods of the call, an example of static properties and static methods to analyze the principle and call skills, the need for friends can refer to the following
The examples in this article describe static static properties and static method calls in PHP. Share to everyone for your reference. Specific as follows:
In this paper, we analyze the static and static methods in the object-oriented PHP call. About their invocation (can be called, how to call), need to figure out where they are stored in memory, so it is very easy to understand. Static properties, methods (both static and non-static) in memory, only one location (not a static property, how many objects are instantiated, and how many properties).
Instance:
?
123456789101112131415161718192021222324 |
<?php
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以上会提示
?>
|
Conclusion:
(1), static properties do not need to be instantiated to invoke. Because the static property is stored in a class, the calling method is "class name:: Attribute Name";
(2), static methods do not need to be instantiated to invoke. Ditto
(3), static methods cannot invoke non-static properties. Because the non-static attribute needs to be instantiated, it is stored in the object;
(4), static methods can call non-static methods, using the Self keyword. In PHP, a method is self: after that, it automatically transforms into a static method;
The principle and technique of static static properties and methods