Ich implementiere Namespaces in meinem vorhandenen Projekt. Ich habe festgestellt, dass Sie das Schlüsselwort 'use' verwenden können, um Klassen in Ihren Namespace zu importieren. Meine Frage ist, kann ich auch alle Klassen aus einem Namespace in einen anderen importieren. Beispiel:
namespace foo
{
class bar
{
public static $a = 'foobar';
}
}
namespace
{
use \foo; //This doesn't work!
echo bar::$a;
}
Update für PHP 7+
Eine neue Funktion in PHP 7 sind gruppierte Deklarationen. Dies macht es nicht so einfach wie die Verwendung von 1 'use-Anweisung' für alle Klassen in einem bestimmten Namespace, macht es aber etwas einfacher ...
Beispielcode:
<?php
// Pre PHP 7 code
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
// PHP 7+ code
use some\namespace\{ClassA, ClassB, ClassC as C};
?>
php
import
namespaces
rauben
quelle
quelle
use foo/*
Antworten:
Dies ist in PHP nicht möglich.
Alles was Sie tun können ist:
namespace Foo; use Bar; $obj = new Bar\SomeClassFromBar();
quelle
use Bar\SomeClassFromBar; $obj = new SomeClassFromBar();
)Sie können das "as" zum Kürzen und Aliasing langer Namespaces verwenden
composer.json
{ "autoload": { "psr-4": { "Lorem\\Ipsum\\": "lorem/ipsum", "Lorem\\Ipsum\\Dolor\\": "lorem/ipsum/dolor", "Lorem\\Ipsum\\Dolor\\Sit\\": "lorem/ipsum/dolor/sit" } } }
index.php
<?php use Lorem\Ipsum\Dolor\Sit as FOO; define ('BASE_PATH',dirname(__FILE__)); require BASE_PATH.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php'; $bar = new FOO\Bar(); $baz = new FOO\Baz(); $qux = new FOO\Qux();
quelle