PHP.nl

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();
}
?>

Documentatie