Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der statischen Mitglieder, abstrakten Mitglieder und Attributcodes von PHP-Merkmalen

Detaillierte Erläuterung der statischen Mitglieder, abstrakten Mitglieder und Attributcodes von PHP-Merkmalen

伊谢尔伦
Freigeben: 2023-03-12 13:24:01
Original
2491 Leute haben es durchsucht

Abstrakte Mitglieder von Trait

Um Anforderungen an die verwendeten Klassen durchzusetzen, unterstützen Traits die Verwendung abstrakter Methoden.

Stellt ein Beispiel für die Durchsetzung von Anforderungen durch abstrakte Methoden dar

<?php
trait Hello {
    public function sayHelloWorld() {
        echo &#39;Hello&#39;.$this->getWorld();
    }
    abstract public function getWorld();
}
class MyHelloWorld {
    private $world;
    use Hello;
    public function getWorld() {
        return $this->world;
    }
    public function setWorld($val) {
        $this->world = $val;
    }
}
?>
Nach dem Login kopieren

Traits statischeMitglieder

Traits können statisches Mitglied sein statische Methodendefinition.

StatischBeispiele für Variablen

<?php
trait Counter {
    public function inc() {
        static $c = 0;
        $c = $c + 1;
        echo "$c\n";
    }
}
class C1 {
    use Counter;
}
class C2 {
    use Counter;
}
$o = new C1(); $o->inc(); // echo 1
$p = new C2(); $p->inc(); // echo 1
?>
Nach dem Login kopieren

Beispiele für statische Methoden

<?php
trait StaticExample {
    public static function doSomething() {
        return &#39;Doing something&#39;;
    }
}
class Example {
    use StaticExample;
}
Example::doSomething();
?>
Nach dem Login kopieren

Beispiele für statische Variablen und statische Methoden

<?php
trait Counter {
    public static $c = 0;
    public static function inc() {
        self::$c = self::$c + 1;
        echo self::$c . "\n";
    }
}
class C1 {
    use Counter;
}
class C2 {
    use Counter;
}
C1::inc(); // echo 1
C2::inc(); // echo 1
?>
Nach dem Login kopieren

Attribute

Trait kann auch Attribute definieren.

Beispiel für die Definition von Attributen

<?php
trait PropertiesTrait {
    public $x = 1;
}

class PropertiesExample {
    use PropertiesTrait;
}

$example = new PropertiesExample;
$example->x;
?>
Nach dem Login kopieren

Wenn ein Merkmal ein Attribut definiert, kann die Klasse kein Attribut mit demselben Namen definieren, andernfalls wird ein Fehler generiert. Wenn die Definition der Eigenschaft in der Klasse mit ihrer Definition im Merkmal kompatibel ist (gleiche Sichtbarkeit und gleicher Anfangswert), ist die Fehlerstufe E_STRICT, andernfalls handelt es sich um einen schwerwiegenden Fehler.

Beispiele für Konflikte

<?php
trait PropertiesTrait {
    public $same = true;
    public $different = false;
}

class PropertiesExample {
    use PropertiesTrait;
    public $same = true; // Strict Standards
    public $different = true; // 致命错误
}
?>
Nach dem Login kopieren

Unterschiede in der Verwendung

Beispiele für unterschiedliche Verwendungen

<?php
namespace Foo\Bar;
use Foo\Test;  // means \Foo\Test - the initial \ is optional
?>
<?php
namespace Foo\Bar;
class SomeClass {
    use Foo\Test;   // means \Foo\Bar\Foo\Test
}
?>
Nach dem Login kopieren

Die erste Verwendung ist die Verwendung für den Namensraum FooTest, Was gefunden wird, ist FooTest. Die zweite Verwendung besteht darin, ein Merkmal zu verwenden. Was gefunden wird, ist FooBarFooTest.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der statischen Mitglieder, abstrakten Mitglieder und Attributcodes von PHP-Merkmalen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage