Återgå till globalt utrymme

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

Användning av namnrymder: återfall till det globala utrymmet för funktioner och konstanter

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

Inom en namnrymd, när PHP stöter på ett okvalificerat namn i en klassnamn, funktions- eller konstantkontext, löses dessa med olika prioriteter. Klassnamn löses alltid till det aktuella namnrymdsnamnet. För att komma åt interna eller icke-namnrymdade användarklasser måste man därför referera till dem med deras fullständiga namn som i:

Exempel #1 Åtkomst till globala klasser inom en namnrymd

<?php
namespace A\B\C;
class Exception extends \Exception {}

$a = new Exception('hej'); // $a är ett objekt av klassen A\B\C\Exception
$b = new \Exception('hej'); // $b är ett objekt av klassen Exception

$c = new ArrayObject; // fatal error, klassen A\B\C\ArrayObject hittades inte
?>

För funktioner och konstanter kommer PHP att falla tillbaka på globala funktioner eller konstanter om en namnrymdsfunktion eller -konstant inte existerar.

Exempel #2 Återfall till globala funktioner/konstanter inom en namnrymd

<?php
namespace A\B\C;

const E_ERROR = 45;
function strlen($str)
{
    return \strlen($str) - 1;
}

echo E_ERROR, "\n"; // skriver ut "45"
echo INI_ALL, "\n"; // skriver ut "7" - faller tillbaka till globala INI_ALL

echo strlen('hej'), "\n"; // skriver ut "1"
if (is_array('hej')) { // skriver ut "är inte en array"
    echo "är en array\n";
} else {
    echo "är inte en array\n";
}
?>


Sidslut

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