Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied und die Verwendung von const und static in PHP

Der Unterschied und die Verwendung von const und static in PHP

不言
不言Original
2018-05-15 17:40:081732Durchsuche

Dieser Artikel stellt Ihnen den Unterschied und die Verwendung von const und static in PHP vor. Freunde in Not können sich darauf beziehen

Zuallererst können Mitglieder von const nur innerhalb eines PHP geändert werden Klasse. Attribute können keine Methoden ändern, wie folgt:

[php]view plaincopy

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

const Bei der Verwendung müssen keine Felder mit Berechtigungsänderung hinzugefügt werden, es sind jedoch Kenntnisse beim Aufrufen von durch Konstanten geänderten Konstanten erforderlich, da die Konstanten zur gesamten Klasse und nicht zu einem bestimmten Objekt gehören. Daher müssen Sie den Klassennamen und den Domänennamen verwenden Änderung beim Aufruf. Symbol, zum Beispiel:

[php]view plaincopy

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

aber wann Innerhalb der Klasse aufgerufen Es wird ein Problem auftreten, wie der aktuelle Klassenname oder der aktuelle Objektname innerhalb der Klasse abgerufen werden kann (PHP kann den Klassennamen basierend auf dem Objekt abrufen – PHP stellt uns zwei spezielle Schlüsselwörter zur Verfügung, wie zum Beispiel:

[php] view plain copy

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 und $this repräsentiert das aktuelle Objekt. 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 nach der Definition nicht mehr geändert werden, aber manchmal benötigen wir ihn Ein Attribut, das zur Klasse gehört, dessen Wert jedoch geändert werden kann. Wenn Sie beispielsweise zählen, wie viele Objekte dieser Klasse erstellt wurden, ist es an der Zeit, statisch die Mitgliedsvariablen der Klasse zu verwenden Die Methode ist im Grunde dasselbe wie const. Der Unterschied besteht darin, dass Berechtigungen zu Eigenschaften hinzugefügt werden können, die durch static geändert werden (const kann auch in PHP 7.1 hinzugefügt werden, jedoch nicht in der Vergangenheit) und die Werte von Mitgliedsvariablen, die durch geändert werden statisch kann geändert werden.

Aber wenn statisch eine Mitgliedsmethode ändert, ändert sich die Verwendungsmethode ein wenig. Innerhalb der Klasse, innerhalb des statisch geänderten Methodenkörpers, kann nicht auf gewöhnliche Mitgliedsvariablen der aktuellen Klasse zugegriffen werden. Um genau zu sein: Im Allgemeinen kann das Schlüsselwort $this nicht verwendet werden, und es können nur statische Mitgliedsvariablen und Klassenkonstanten der aktuellen Klasse verwendet werden.

[php]view plaincopy

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 wird die Methode aufgerufen Dasselbe wie Die durch den Aufruf von static geänderten Variablen sind unterschiedlich. Sie können über Klassennamen oder Objektnamen aufgerufen werden, z. B.:

[php]view plain copy

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);

Beide oben genannten Aufrufmethoden sind legal.

Verwandte Empfehlungen:

So verwenden Sie die Iconv-Funktion in PHP

PHP_EOL Newline-Parsing in PHP

Das obige ist der detaillierte Inhalt vonDer Unterschied und die 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