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

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

小云云
小云云Original
2018-03-20 09:52:051499Durchsuche

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

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函数

Ausgabe:


I want to play!
Please study!
I want to play!
You must stay here!

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


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


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


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

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();   //报错


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!

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