Defining multiple namespaces in the same file
Meerdere namespaces in hetzelfde bestand definiëren
Meerdere namespaces kunnen ook in hetzelfde bestand worden gedeclareerd. Er zijn twee toegestane syntaxes.
Voorbeeld: Meerdere namespaces declareren, eenvoudige combinatie syntaxis
<?php
namespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
namespace AnotherProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
?>
Deze syntaxis wordt niet aanbevolen voor het combineren van namespaces in één bestand. In plaats daarvan wordt aanbevolen om de alternatieve haakjes-syntaxis te gebruiken.
Voorbeeld: Meerdere namespaces declareren, haakjes-syntaxis
<?php
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace AnotherProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
?>
Het is sterk af te raden als programmeerpraktijk om meerdere namespaces in hetzelfde bestand te combineren. De primaire gebruiksdoel is om meerdere PHP-scripts in hetzelfde bestand te combineren.
Om globale niet-namespaced code met namespaced code te combineren, wordt alleen haakjes-syntaxis ondersteund. Globale code moet worden ingekapseld in een namespace-declaratie zonder namespace-naam, zoals in:
Voorbeeld: Meerdere namespaces en niet-namespaced code declareren
<?php
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace { // globale code
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
Geen PHP-code mag buiten de namespace-haakjes bestaan, behalve voor een openings declare-statement.
Voorbeeld: Meerdere namespaces en niet-namespaced code declareren
<?php
declare(encoding='UTF-8');
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace { // globale code
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>