


Dieser Artikel stellt hauptsächlich die magischen Konstanten (Variablen), magischen Methoden (Funktionen) und superglobalen Variablen vor. Jetzt kann ich ihn mit Ihnen teilen.
1. Magische Konstanten (magische Variablen)
Konzept: Die sogenannten magischen Konstanten sind einige von PHP vordefinierte Konstanten wird je nach Standort variieren.
1. __LINE__ Ruft die aktuelle Zeilennummer in der Datei ab.
2. __FILE__ Holen Sie sich den vollständigen Pfad und Dateinamen der Datei.
3. __DIR__ Rufen Sie das Verzeichnis ab, in dem sich die Datei befindet.
4. __FUNCTION__ Ruft den Funktionsnamen ab (neu hinzugefügt in PHP 4.3.0).
5. __CLASS__ Ruft den Namen der Klasse ab (neu hinzugefügt in PHP 4.3.0).
6. __METHOD__ Ruft den Methodennamen der Klasse ab (neu hinzugefügt in PHP 5.0.0).
7. __NAMESPACE__ Der Name des aktuellen Namespace (Groß-/Kleinschreibung beachten).
8. __TRAIT__ Der Name von Trait (neu hinzugefügt in PHP 5.4.0). Seit PHP 5.4 gibt diese Konstante den Namen des Merkmals so zurück, wie es definiert wurde (Groß-/Kleinschreibung beachten). Der Merkmalsname enthält den Bereich, in dem er deklariert ist (z. B. FooBar).
2. Superglobale Variablen (9)
1. $GLOBALS: Variablen im globalen Bereich speichern
2 serverbezogene Informationen
3. $_REQUEST: Holen Sie sich die Parameter von POST- und GET-Anfragen
4 Formular
6. $_FILES: Rufen Sie die Variable der hochgeladenen Datei ab
7. $_ENV: Rufen Sie das Array der serverseitigen Umgebungsvariablen ab
8 >
Cookie setzen: setcookie(Name, Wert, Ablaufdatum, Pfad, Domäne);
Cookie abrufen: $_COOKIE["user" ];
Cookies löschen: setcookie("user", "", time()-3600);//Ablaufzeit festlegen
9. $_SESSION: Sitzung abrufen
Serverseitiger Sitzungsbetrieb
Stellen Sie sicher, dass Sie session_start() starten, bevor Sie die Sitzung verwenden
Sitzung speichern: $_SESSION['name']=“leixuesong“;//Array-Operation
Sitzung zerstören: unset($_SESSION['views']);//Eine zerstören
session_destroy() and unset($_SESSION);//Alle Sitzungen zerstören
3. Magische Methode (magische Funktion) Konzept: PHP konvertiert alles, was mit __ endet (zwei Unterstriche) sind als magische Methoden reserviert. Daher wird beim Definieren von Klassenmethoden mit Ausnahme der oben genannten magischen Methoden empfohlen, ihnen kein __ voranzustellen.
sind jeweils: __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset (), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() und __debugInfo() werden in PHP „Magische Methoden“ genannt. Sie können diese Methodennamen nicht verwenden, wenn Sie Ihre eigenen Klassenmethoden benennen, es sei denn, Sie möchten deren magische Funktionalität nutzen.
1. __construct() Konstruktor: Diese Methode wird jedes Mal zuerst aufgerufen, wenn ein neues Objekt erstellt wird (instanziiertes Objekt), daher ist es sehr gut geeignet, dies vorher zu tun Verwenden des Objekts Einige Initialisierungsarbeiten.
Anwendungshinweis: Wenn ein Konstruktor in einer Unterklasse definiert ist, wird der Konstruktor seiner übergeordneten Klasse nicht implizit aufgerufen. Um den Konstruktor der übergeordneten Klasse auszuführen, müssen Sie parent::__construct() im Konstruktor der untergeordneten Klasse aufrufen. Wenn die Unterklasse keinen Konstruktor definiert, wird sie wie eine gewöhnliche Klassenmethode von der übergeordneten Klasse geerbt (sofern sie nicht als privat definiert ist).
Anwendungsbeispiel:
<?php class BaseClass { function __construct() { print "In BaseClass constructor\n"; } }class SubClass extends BaseClass { function __construct() { parent::__construct(); print "In SubClass constructor\n"; } }class OtherSubClass extends BaseClass { // inherits BaseClass's constructor}// In BaseClass constructor$obj = new BaseClass();// In BaseClass constructor // In SubClass constructor$obj = new SubClass();// In BaseClass constructor$obj = new OtherSubClass(); ?>
2. __destruct() Destruktor: Der Destruktor wird an ein Objekt übergeben. Alle Verweise auf sind gelöscht oder ausgeführt, wenn das Objekt explizit zerstört wird.
Wie der Konstruktor wird auch der Destruktor der übergeordneten Klasse nicht heimlich von der Engine aufgerufen. Um den Destruktor der übergeordneten Klasse auszuführen, müssen Sie explizitparent::__destruct() im Destruktorkörper der untergeordneten Klasse aufrufen. Darüber hinaus erbt die Unterklasse genau wie der Konstruktor die übergeordnete Klasse, wenn sie keinen Destruktor definiert. Der
Destruktor wird auch dann aufgerufen, wenn das Skript mitexit() beendet wird. Durch den Aufruf von exit() im Destruktor wird der Rest des Herunterfahrvorgangs abgebrochen.
Anwendungshinweise:
1 Der Destruktor wird aufgerufen, wenn das Skript geschlossen wird , Zu diesem Zeitpunkt wurden alle HTTP-Header gesendet. Es ist möglich, dass das Arbeitsverzeichnis beim Schließen des Skripts ein anderes ist als in einem SAPI (z. B. Apache).
2. Der Versuch, eine Ausnahme im Destruktor auszulösen (der aufgerufen wird, wenn das Skript beendet wird), führt zu einem schwerwiegenden Fehler.
Anwendungsbeispiel:
<?phpclass A { function __construct() { $a = func_get_args(); $i = func_num_args(); if (method_exists($this,$f='__construct'.$i)) { call_user_func_array(array($this,$f),$a); } } function __construct1($a1) { echo('__construct with 1 param called: '.$a1.PHP_EOL); } function __construct2($a1,$a2) { echo('__construct with 2 params called: '.$a1.','.$a2.PHP_EOL); } function __construct3($a1,$a2,$a3) { echo('__construct with 3 params called: '.$a1.','.$a2.','.$a3.PHP_EOL); } }$o = new A('sheep'); $o = new A('sheep','cat'); $o = new A('sheep','cat','dog');// results: // __construct with 1 param called: sheep // __construct with 2 params called: sheep,cat // __construct with 3 params called: sheep,cat,dog ?>3,
__call(): __call() wird aufgerufen, wenn eine nicht zugängliche Methode im Objekt aufgerufen wird.
public mixed __call ( string , $name
array ) $arguments
<?phpclass MethodTest { public function __call($name, $arguments) { // 注意: $name 的值区分大小写 echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; } /** PHP 5.3.0之后版本 */ public static function __callStatic($name, $arguments) { // 注意: $name 的值区分大小写 echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; } }$obj = new MethodTest;$obj->runTest('in object context'); MethodTest::runTest('in static context'); // PHP 5.3.0之后版本 ?>
4. __callStatic(): Wenn eine nicht zugängliche Methode in einem statischen Kontext aufgerufen wird, wird __callStatic() aufgerufen.
5. __set(): Beim Zuweisen Wenn Sie einen Wert für eine unzugängliche Eigenschaft angeben, wird __set() aufgerufen.
6. __get(): Wann lesen Wenn auf den Wert der Eigenschaft nicht zugegriffen werden kann, wird __get() aufgerufen.
7、__isset() : 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。
8、__unset() : 当对不可访问属性调用 unset() 时,__unset() 会被调用。
9、__sleep() :方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。
serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL
被序列化,并产生一个 E_NOTICE
级别的错误。与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。
10、__wakeup() :经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
应用范例:
<?php class Connection { protected $link; private $server, $username, $password, $db; public function __construct($server, $username, $password, $db) { $this->server = $server; $this->username = $username; $this->password = $password; $this->db = $db; $this->connect(); } private function connect() { $this->link = mysql_connect($this->server, $this->username, $this->password); mysql_select_db($this->db, $this->link); } public function __sleep() { return array('server', 'username', 'password', 'db'); } public function __wakeup() { $this->connect(); } } ?>
11、__toString() :__toString() 方法用于一个类被当成字符串时回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR
级别的致命错误。
<?php// Declare a simple classclass TestClass { public $foo; public function __construct($foo) { $this->foo = $foo; } public function __toString() { return $this->foo; } }$class = new TestClass('Hello');echo $class; //输出 Hello ?>
11、__invoke() :当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。(本特性只在 PHP 5.3.0 及以上版本有效)
<?phpclass CallableClass { function __invoke($x) { var_dump($x); } } $obj = new CallableClass;$obj(5); var_dump(is_callable($obj)); // is_callable — 检测参数是否为合法的可调用结构
?>以上会输出: int(5) bool(true)
12、__set_state() :自 PHP 5.1.0 起当调用 var_export() 导出类时,此静态 方法会被调用。本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。
应用范例:
<?phpclass A { public $var1; public $var2; public static function __set_state($an_array) // As of PHP 5.1.0 { $obj = new A; $obj->var1 = $an_array['var1']; $obj->var2 = $an_array['var2']; return $obj; } }$a = new A; $a->var1 = 5;$a->var2 = 'foo'; eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array( // 'var1' => 5, // 'var2' => 'foo', // ));var_dump($b); ?>以上例程会输出:object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo"}
13、__clone():对象复制。当复制完成时,如果定义了 __clone() 方法,则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,可用于修改属性的值(如果有必要的话)
应用范例:
<?php class SubObject { static $instances = 0; public $instance; public function __construct() { $this->instance = ++self::$instances; } public function __clone() { $this->instance = ++self::$instances; } }class MyCloneable { public $object1; public $object2; function __clone() { // 强制复制一份this->object, 否则仍然指向同一个对象 $this->object1 = clone $this->object1; } }$obj = new MyCloneable(); $obj->object1 = new SubObject(); $obj->object2 = new SubObject(); $obj2 = clone $obj; print("Original Object:\n"); print_r($obj); print("Cloned Object:\n"); print_r($obj2); ?> 以上例程会输出: Original Object:MyCloneable Object( [object1] => SubObject Object ( [instance] => 1 ) [object2] => SubObject Object ( [instance] => 2 ) ) Cloned Object:MyCloneable Object( [object1] => SubObject Object ( [instance] => 3 ) [object2] => SubObject Object ( [instance] => 2 ) )
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Das obige ist der detaillierte Inhalt vonEinführung in die magischen Konstanten (Variablen), magischen Methoden (Funktionen) und superglobalen Variablen von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Die Gründe, warum PHP für viele Websites der bevorzugte Technologie -Stack ist, umfassen die Benutzerfreundlichkeit, die starke Unterstützung der Community und die weit verbreitete Verwendung. 1) Einfach zu erlernen und zu bedienen, geeignet für Anfänger. 2) eine riesige Entwicklergemeinschaft und eine reichhaltige Ressourcen haben. 3) in WordPress, Drupal und anderen Plattformen häufig verwendet. 4) Integrieren Sie eng in Webserver, um die Entwicklung der Entwicklung zu vereinfachen.

PHP bleibt ein leistungsstarkes und weit verbreitetes Tool in der modernen Programmierung, insbesondere im Bereich der Webentwicklung. 1) PHP ist einfach zu bedienen und nahtlos in Datenbanken integriert und für viele Entwickler die erste Wahl. 2) Es unterstützt die Erzeugung der dynamischen Inhalte und die objektorientierte Programmierung, die für die schnelle Erstellung und Wartung von Websites geeignet sind. 3) Die Leistung von PHP kann verbessert werden, indem Datenbankabfragen zwischengespeichert und optimiert werden, und die umfangreiche Community und sein reiches Ökosystem machen es im heutigen Technologiestack immer noch wichtig.

In PHP werden schwache Referenzen in der WeaPreference -Klasse implementiert und verhindern nicht, dass der Müllsammler Objekte zurückerobern. Schwache Referenzen eignen sich für Szenarien wie Caching -Systeme und Event -Hörer. Es ist zu beachten, dass es das Überleben von Objekten nicht garantieren kann und dass die Müllsammlung möglicherweise verzögert wird.

Mit der \ _ \ _ -Invoke -Methode können Objekte wie Funktionen bezeichnet werden. 1. Definieren Sie die Methode \ _ \ _, damit das Objekt aufgerufen werden kann. 2. Bei Verwendung der Syntax $ OBJ (...) wird PHP die Methode \ _ \ _ aufrufen. 3.. Geeignet für Szenarien wie Protokollierung und Taschenrechner, Verbesserung der Codeflexibilität und Lesbarkeit.

Fasern wurde in Php8.1 eingeführt, wodurch die gleichzeitigen Verarbeitungsfunktionen verbessert wurden. 1) Fasern ist ein leichtes Parallelitätsmodell, das Coroutinen ähnelt. 2) Sie ermöglichen es den Entwicklern, den Ausführungsfluss von Aufgaben manuell zu steuern, und eignen sich zum Umgang mit E/O-intensiven Aufgaben. 3) Die Verwendung von Fasern kann effizientere und reaktionsschnelle Code schreiben.

Die PHP -Community bietet umfangreiche Ressourcen und Unterstützung, um Entwicklern zu helfen, zu wachsen. 1) Zu den Ressourcen gehören offizielle Dokumentation, Tutorials, Blogs und Open -Source -Projekte wie Laravel und Symfony. 2) Die Unterstützung kann durch Stackoverflow-, Reddit- und Slack -Kanäle erhalten werden. 3) Entwicklungstrends können durch Befolgung von RFC gelernt werden. 4) Die Integration in die Community kann durch aktive Teilnahme, Beitrag zum Code und Lernfreigabe erreicht werden.

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor