(0)
Artikel
bewerten
(100% positiv)
(1)

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
letzte Änderung dieses Artikels: 25.09.2017 22:36




Kommentare