Definiera flera namnrymder i samma fil
Definiera flera namnrymder i samma fil
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Flera namnrymder kan också deklareras i samma fil. Det finns två tillåtna syntaxer.
Exempel #1: Deklarera flera namnrymder, enkel kombinationssyntax
<?php
namespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
namespace AnotherProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
?>
Denna syntax rekommenderas inte för att kombinera namnrymder i en enda fil. Istället rekommenderas det att använda den alternativa syntaxen med klamrar.
Exempel #2: Deklarera flera namnrymder, syntax med klamrar
<?php
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace AnotherProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
?>
Det avråds starkt från att kombinera flera namnrymder i samma fil som en kodningspraxis. Det primära användningsområdet är att kombinera flera PHP-skript i samma fil.
För att kombinera global, icke-namnrymd kod med namnrymd kod, stöds endast syntaxen med klamrar. Global kod bör inneslutas i ett namespace-uttryck utan namnrymdsnamn som i:
Exempel #3: Deklarera flera namnrymder och icke-namnrymd kod
<?php
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace { // global kod
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
Ingen PHP-kod får existera utanför namnrymdens klamrar förutom en inledande declare-deklaration.
Exempel #4: Deklarera flera namnrymder och icke-namnrymd kod
<?php
declare(encoding='UTF-8');
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace { // global kod
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.namespaces.definitionmultiple.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/