Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Unterschieds und der Verwendung von const und static in PHP

Detaillierte Erklärung des Unterschieds und der Verwendung von const und static in PHP

jacklove
jackloveOriginal
2018-05-22 14:33:461692Durchsuche

In diesem Artikel werden der Unterschied und die Verwendung von const und static in PHP erläutert.

Zuerst einmal können Sie in Bezug auf const nur Mitgliedsattribute innerhalb einer PHP-Klasse ändern, keine Methoden, wie folgt:

class Test{ 
    const PATH = 'c/';//修饰常量 
    const function test(){//这种方法是错误的,const无法修饰方法 
    } 
}

Bei Verwendung von const müssen Sie keine Berechtigungen zum Ändern hinzufügen Felder, aber beim Aufruf von const erfordert das Ändern von Konstanten Fähigkeiten, da Konstanten zur gesamten Klasse und nicht zu einem bestimmten Objekt gehören. Daher müssen Sie beim Aufruf den Klassennamen plus den Domänennamenmodifikator verwenden, zum Beispiel:

echo Test::PATH; 
//也可以使用下面的方法调用 
$test = new Test(); 
echo  $test::PATH;

Aber in der Klasse treten Probleme auf, wenn man den aktuellen Klassennamen oder den aktuellen Objektnamen innerhalb der Klasse erhält (PHP kann den Klassennamen basierend auf dem Objekt abrufen – PHP stellt uns zwei spezielle Schlüsselwörter zur Verfügung, z als:

class Test{ 
    const PATH = 'c/';//修饰常量 
    public function ass(){ 
        echo $this::PATH.&#39;<br />&#39;; 
        echo self::PATH.&#39;<br />&#39;; 
    } 
}

Wobei self (ohne $) den aktuellen Klassennamen darstellt, stellt $this das aktuelle Objekt dar. Auf diese Weise können wir const-modifizierte Konstanten innerhalb der Klasse aufrufen.

Als nächstes sprechen wir über statisch

Obwohl const sehr nützlich ist, kann der Wert nicht mehr geändert werden, sobald er definiert ist. Manchmal benötigen wir jedoch ein Attribut, das zur Klasse gehört, aber geändert werden kann .Wert, zum Beispiel, wie viele Objekte diese Klasse erstellt hat. Dies ist die Zeit, in der statische Attribute der Klasse geändert werden. Der Unterschied besteht darin, dass statische Attribute verwendet werden kann Berechtigungen hinzufügen (const kann auch in PHP 7.1 hinzugefügt werden, jedoch nicht in der Vergangenheit) und der Wert statisch geänderter Mitgliedsvariablen kann geändert werden.

Aber wenn eine Mitgliedsmethode statisch geändert wird, ändert sich die Verwendungsmethode ein wenig. Innerhalb der Klasse, im statisch geänderten Methodenkörper, kann nicht auf gewöhnliche Mitgliedsvariablen der aktuellen Klasse zugegriffen werden kann nicht verwendet werden. Das Schlüsselwort $this kann nur statische Mitgliedsvariablen und Klassenkonstanten der aktuellen Klasse verwenden.

class Test{ 
    static public $name=&#39;asd&#39;; 
    const π = 3.1415926; 
    public $age = 10; 
    public static function lenth($r){ 
        //echo $this->age;//会发生错误,不能访问普通的成员变量 
        echo Test::$name; 
        return $r*2*self::π;     
    } 
    public static function area($r){ 
        return $r*$r*self::π; 
    }    
}

Bei der Verwendung von Static unterscheidet sich die aufgerufene Methode von der durch Static geänderten Variablen. Sie kann über den Klassennamen oder den Objektnamen aufgerufen werden, z. B.:

echo &#39;周长:&#39;. Test::lenth(1).&#39;<br/>&#39;; 
echo &#39;面积:&#39;.Test::area(1).&#39;<br/>&#39;; 
$per = new Test(); 
echo $per->lenth(3);

Die oben Beide Aufrufmethoden sind legal.

In diesem Artikel werden der Unterschied und die Verwendung von const und static in PHP erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Abbildungen:

Detaillierte Erläuterung der Verwendung von PHP und seiner regulären Ausdrücke

Wie PHP __autoload automatisch lädt und apl_autoload_register Zwei Funktionen?

PHP-Fehlerbehandlungs- und Implementierungsmethoden

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds und der Verwendung von const und static in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn