Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der PHP-Namespace-Namespace-Definition

Detaillierte Erläuterung der PHP-Namespace-Namespace-Definition

小云云
Freigeben: 2023-03-21 18:06:02
Original
1542 Leute haben es durchsucht

In PHP sind Funktionen oder Klassen mit demselben Namen nicht zulässig. Um wiederholte Konflikte in Klassennamen oder Funktionsnamen zu verhindern, die von Programmierern im Projekt definiert wurden , wurde das Konzept des Namespace in PHP5.3 eingeführt.

1. Namespace, d. h. Aufteilung des Codes in verschiedene Räume. Die Klassennamen in verschiedenen Räumen sind unabhängig voneinander und stehen nicht im Widerspruch zueinander. In einer PHP-Datei können mehrere Namespaces vorhanden sein, und vor dem ersten Namespace darf kein Code stehen. Der Code nach der Inhaltsraumdeklaration gehört zu diesem Namensraum , zum Beispiel:


<?php
echo 111;  //由于namespace前有代码而报错
namespace Teacher;
class Person{
  function __construct(){
   echo &#39;Please study!&#39;;
  }
}
Nach dem Login kopieren

2. Der Aufruf von Klassen oder Methoden in verschiedenen Räumen muss erfolgen klar definierter Namensraum. Zum Beispiel:


<?php
namespace Teacher;
class Person{
  function __construct(){
   echo &#39;Please study!<br/>&#39;;
  }
}
function Person(){
  return &#39;You must stay here!&#39;;
};
namespace Student;
class Person{
  function __construct(){
   echo &#39;I want to play!<br/>&#39;;
  }
}
new Person();     //本空间(Student空间)
new \Teacher\Person();   //Teacher空间
new \Student\Person();   //Student空间
echo \Teacher\Person();   //Teacher空间下Person函数
Nach dem Login kopieren

Ausgabe:


I want to play!
Please study!
I want to play!
You must stay here!
Nach dem Login kopieren

3. Das Einführen anderer Dateien in den Namespace gehört nicht zu diesem Namespace, sondern zum öffentlichen Raum oder dem in der Datei selbst definierten Namespace. Beispiel:

Definieren Sie zunächst eine 1.php- und eine 2.php-Datei:


<?php  //1.php
class Person{
 function __construct(){
   echo &#39;I am one!<br/>&#39;;
  }
}
Nach dem Login kopieren


<?php
namespace Newer;
require_once &#39;./1.php&#39;;
new Person();  //报错,找不到Person;
new \Person();  //输出 I am tow!;
Nach dem Login kopieren


<?php  //2.php
namespace Two
class Person{
 function __construct(){
   echo &#39;I am tow!<br/>&#39;;
  }
}
Nach dem Login kopieren


<?php
namespace New;
require_once &#39;./2.php&#39;;
new Person();  //报错,(当前空间)找不到Person;
new \Person();  //报错,(公共空间)找不到Person;
new \Two\Person(); //输出 I am tow!;
Nach dem Login kopieren

4. Schauen wir uns die Verwendung an: (Verwendung kann für die Zukunft abgekürzt werden Referenzen) )


namespace School\Parents;
class Man{
  function __construct(){
   echo &#39;Listen to teachers!<br/>&#39;;
  }
}
namespace School\Teacher;
class Person{
  function __construct(){
   echo &#39;Please study!<br/>&#39;;
  }
}
namespace School\Student;
class Person{
  function __construct(){
   echo &#39;I want to play!<br/>&#39;;
  }
}
new Person();     //输出I want to play!
new \School\Teacher\Person(); //输出Please study!
new Teacher\Person();   //报错
----------
use School\Teacher;
new Teacher\Person();   //输出Please study!
----------
use School\Teacher as Tc;
new Tc\Person();   //输出Please study!
----------
use \School\Teacher\Person;
new Person();   //报错
----------
use \School\Parent\Man;
new Man();   //报错
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Namespace-Namespace-Definition. 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