Definiera flera namnrymder i samma fil

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

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/