Namnrymder och dynamiska språkfunktioner
Namnrymder och dynamiska språkliga funktioner
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
PHP:s implementering av namnrymder påverkas av dess dynamiska natur som programmeringsspråk. Därför, för att omvandla kod som följande exempel till kod med namnrymder:
Exempel #1 Dynamisk åtkomst till element
<?php class classname { function __construct() { echo __METHOD__,"\n"; } } function funcname() { echo __FUNCTION__,"\n"; } const constname = "global"; $a = 'classname'; $obj = new $a; // skriver ut classname::__construct $b = 'funcname'; $b(); // skriver ut funcname echo constant('constname'), "\n"; // skriver ut global ?>
Man måste använda det fullständigt kvalificerade namnet (klassnamn med namnrymdsprefix). Notera att eftersom det inte finns någon skillnad mellan ett kvalificerat och ett fullständigt kvalificerat namn inuti ett dynamiskt klassnamn, funktionsnamn eller konstantnamn, är det ledande omvänt snedstrecket inte nödvändigt.
Exempel #2 Dynamisk åtkomst till element med namnrymder
<?php namespace namespacename; class classname { function __construct() { echo __METHOD__,"\n"; } } function funcname() { echo __FUNCTION__,"\n"; } const constname = "namespaced"; /* notera att om man använder dubbla citattecken måste "\\namespacename\\classname" användas */ $a = '\namespacename\classname'; $obj = new $a; // skriver ut namespacename\classname::__construct $a = 'namespacename\classname'; $obj = new $a; // skriver också ut namespacename\classname::__construct $b = 'namespacename\funcname'; $b(); // skriver ut namespacename\funcname $b = '\namespacename\funcname'; $b(); // skriver också ut namespacename\funcname echo constant('\namespacename\constname'), "\n"; // skriver ut namespaced echo constant('namespacename\constname'), "\n"; // skriver också ut namespaced ?>
Var noga med att läsa noteringen om att undkomma namnrymdsnamn i strängar.
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.namespaces.dynamic.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/