PHP Namespaces
Mit PHP-Namespaces ist es möglich einen Funktionsnamen mehrfach in verschiedenen Namespaces zu verwenden.
Als Beispiel kann die Funktion mit dem Namen "MyFunction" in 2 verschiedenen Libraries verwendet werden.
hier ein Beispiel ohne Namespace
Library1, File: Lib1.php
<?php
function MyFunction() {
return "this is MyFunction in Library1";
}
?>
Library2, File: Lib2.php
<?php
function MyFunction() {
return "this is MyFunction in Library2";
}
?>
Ich lade die 2 Dateien in z.B. index.php:
<?php
header('Content-type: text/plain');
require_once('lib1.php');
require_once('lib2.php');
echo MyFunction() . "\n";
?>
Ausgabe:
Fatal error: Cannot redeclare MyFunction() (previously declared in ...
der Funktionsname kann nicht mehrfach verwendet werden. Eine Lösung zu dem Problem bieten Namespaces:
Namespace
Namespaces sind so ähnlich wie Ordner in einem Dateisystem. Durch das Hinzufügen von Namespace\ können nur noch Funktionen in dem Namespace ausgeführt werden.
lib1.php
<?php
namespace Lib1;
function MyFunction() {
return "this is MyFunction in Library1";
}
?>
lib2.php
<?php
namespace Lib2;
function MyFunction() {
return "this is MyFunction in Library2";
}
?>
index.php:
<?php
header('Content-type: text/plain');
require_once('lib1.php');
require_once('lib2.php');
echo Lib1\MyFunction() . "\n";
echo Lib2\MyFunction() . "\n";
?>
Ausgabe:
this is MyFunction in Library1 this is MyFunction in Library2
({{pro_count}})
Beitrag bewerten:{{percentage}} % positiv
({{con_count}})