Översikt

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

Namnrymdsöversikt

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Vad är namnrymder? I den bredaste definitionen är namnrymder ett sätt att kapsla in element. Detta kan ses som ett abstrakt koncept på många platser. Till exempel, i ett operativsystem fungerar kataloger som en grupp för relaterade filer och fungerar som en namnrymd för filerna inom dem. Som ett konkret exempel kan filen foo.txt existera både i katalogen /home/greg och i /home/other, men två kopior av foo.txt kan inte samexistera i samma katalog. Dessutom, för att komma åt filen foo.txt utanför katalogen /home/greg, måste vi föregå filnamnet med katalognamnet med hjälp av katalogseparatorn för att få /home/greg/foo.txt. Denna princip sträcker sig även till namnrymder i programmeringsvärlden.

I PHP-världen är namnrymder designade för att lösa två problem som författare av bibliotek och applikationer stöter på när de skapar återanvändbara kodelement som klasser eller funktioner:

  1. Namnkollisioner mellan kod du skapar och interna PHP-klasser/funktioner/konstanter eller tredjepartsklasser/funktioner/konstanter.
  2. Möjligheten att aliasera (eller förkorta) Extra_Långa_Namn som är designade för att mildra det första problemet, vilket förbättrar läsbarheten i källkoden.

PHP-namnrymder ger ett sätt att gruppera relaterade klasser, gränssnitt, funktioner och konstanter. Här är ett exempel på namnrymdsyntax i PHP:

Exempel #1 Namnrymdsyntax

<?php
namespace my\name; // se avsnittet "Definiera namnrymder"

class MyClass {}
function myfunction() {}
const MYCONST = 1;

$a = new MyClass;
$c = new \my\name\MyClass; // se avsnittet "Globalt utrymme"

$a = strlen('hi'); // se avsnittet "Använda namnrymder: fallback till global
                   // funktion/konstant"

$d = namespace\MYCONST; // se avsnittet "namespace-operatör och __NAMESPACE__
                        // konstant"
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // se avsnittet "Namnrymder och dynamiska språkfunktioner"
?>

Notering: Namnrymdnamn är inte skiftlägeskänsliga.

Notering:

Namnrymden PHP, och sammansatta namn som börjar med detta namn (som PHP\Classes), är reserverade för internt språkbruk och bör inte användas i användarkod.


Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.namespaces.rationale.php
PHP
Språkreferens
Språkreferens#Namnrymder


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/