Rob*_*Rob 61 php import namespaces
我正在现有项目中实现名称空间.我发现您可以使用关键字"use"将类导入到命名空间中.我的问题是,我还可以将所有类从1个名称空间导入到另一个名称空间中.例:
namespace foo
{
class bar
{
public static $a = 'foobar';
}
}
namespace
{
use \foo; //This doesn't work!
echo bar::$a;
}
Run Code Online (Sandbox Code Playgroud)
PHP 7+更新
PHP 7中的一个新功能是分组声明.这并不像在给定命名空间中对所有类使用1'use语句'那么容易,但使它更容易......
示例代码:
<?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};
?>
Run Code Online (Sandbox Code Playgroud)
另见:https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.group-use-declarations
Ond*_*tes 63
这在PHP中是不可能的.
你所能做的就是:
namespace Foo;
use Bar;
$obj = new Bar\SomeClassFromBar();
Run Code Online (Sandbox Code Playgroud)
您可以使用“as”来缩短和别名长命名空间
作曲家.json
{
"autoload": {
"psr-4": {
"Lorem\\Ipsum\\": "lorem/ipsum",
"Lorem\\Ipsum\\Dolor\\": "lorem/ipsum/dolor",
"Lorem\\Ipsum\\Dolor\\Sit\\": "lorem/ipsum/dolor/sit"
}
}
}
Run Code Online (Sandbox Code Playgroud)
索引.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();
Run Code Online (Sandbox Code Playgroud)