Översikt
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:
- Namnkollisioner mellan kod du skapar och interna PHP-klasser/funktioner/konstanter eller tredjepartsklasser/funktioner/konstanter.
- 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/