Namnrymde-nyckelord och NAMESPACE — Namnrymde-nyckelordet och NAMESPACE magiska konstant

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

Nyckelordet namespace och den magiska konstanten __NAMESPACE__

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

PHP stöder två sätt att abstrakt komma åt element inom den aktuella namnrymden: den magiska konstanten __NAMESPACE__ och nyckelordet namespace.

Värdet av __NAMESPACE__ är en sträng som innehåller det aktuella namnrymdsnamnet. I global, icke-namnrymdd kod innehåller den en tom sträng.

Exempel #1 Exempel på __NAMESPACE__, namnrymdd kod

<?php
namespace MyProject;

echo '"', __NAMESPACE__, '"'; // skriver ut "MyProject"
?>

Exempel #2 Exempel på __NAMESPACE__, global kod

<?php

echo '"', __NAMESPACE__, '"'; // skriver ut ""
?>

Konstanten __NAMESPACE__ är användbar för att dynamiskt konstruera namn, till exempel:

Exempel #3 Använda __NAMESPACE__ för dynamisk namngivning

<?php
namespace MyProject;

function get($classname)
{
    $a = __NAMESPACE__ . '\\' . $classname;
    return new $a;
}
?>

Nyckelordet namespace kan användas för att uttryckligen begära ett element från den aktuella namnrymden eller en under-namnrymd. Det är namnrymdsekvivalenten till operatorn self för klasser.

Exempel #4 Användning av operatorn namespace inom en namnrymd

<?php
namespace MyProject;

use blah\blah as mine; // se "Using namespaces: Aliasing/Importing"

blah\mine(); // anropar funktionen MyProject\blah\mine()
namespace\blah\mine(); // anropar funktionen MyProject\blah\mine()

namespace\func(); // anropar funktionen MyProject\func()
namespace\sub\func(); // anropar funktionen MyProject\sub\func()
namespace\cname::method(); // anropar den statiska metoden "method" i klassen MyProject\cname
$a = new namespace\sub\cname(); // instansierar objekt av klassen MyProject\sub\cname
$b = namespace\CONSTANT; // tilldelar värdet av konstanten MyProject\CONSTANT till $b
?>

Exempel #5 Användning av operatorn namespace i global kod

<?php

namespace\func(); // anropar funktionen func()
namespace\sub\func(); // anropar funktionen sub\func()
namespace\cname::method(); // anropar den statiska metoden "method" i klassen cname
$a = new namespace\sub\cname(); // instansierar objekt av klassen sub\cname
$b = namespace\CONSTANT; // tilldelar värdet av konstanten CONSTANT till $b
?>

Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.namespaces.nsconstants.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/