在本教程中,我们将学习PHP静态方法和静态属性。同时将介绍$this和self之间的区别,并讨论何时可以使用静态方法。
有时候,我们想在类的上下文中而不是在对象中访问方法和属性,那么就可以使用static关键字。
要将静态方法添加到类中,可以使用static关键字,如下所示:
public
static
function
static_method(){
// 方法的实现
}
在方法的可见性之前或之后放置static关键字都可以。但是,按照惯例,首先声明可见性(public,private,protected)。
要将静态属性添加到类中,您还可以使用static关键字:
private
$static_property
;
静态方法和静态属性没有链接到类的任何特定对象,而是链接到类本身。
要在类外部调用静态方法,可以使用::操作符,如下所示:
::
MyClass::static_method();
要在类外部访问公共的静态属性,也是使用::操作符:
MyClass::
但是,要从类的实例内部访问静态方法和静态属性,需要使用self而不是$this,如下所示:
<?php
class
MyClass{
//...
method(){
self::
self::static_method();
新的PHP面向对象编程开发人员可能有时会混淆self和$this。这里让我们做一个比较:
->
$
$this->property
self::$property
下面的例子演示了如何使用静态方法和静态属性:
</td>
Counter {
$count
$instance
__construct(
= 0) {
$this
count
=
++;
() {
return
__toString() {
(string)
countInstance() {
$c1
new
Counter();
()
();
echo
'计数器1的值: '
.
'<br/>'
$c2
'计数器2的值: '
'计数器的数量:'
. Counter::countInstance()
在定义静态方法之前,问自己一个问题:“在不实例化新对象的情况下直接调用方法是否有意义?””。如果某个逻辑可以由类的多个实例共享,则可以提取相应的代码并将其放入静态方法中。
PHP静态方法通常用于PHP框架中的utility类。utility类是只包含静态方法的类。
原文链接:https://codingdict.com/