我有以下目录结构(仅显示重要文件):
app/
- Http/
- Controllers/
- MyController.php // namespace App\Http\Controllers
- Utils/
- InternalUtils/
- Utility1.php // namespace App\Utils\InternalUtils
- Utility2.php // namespace App\Utils\InternalUtils
- ...
- MyUtility.php // namespace App\Utils
我遵循Laravel 5中提供的标准PSR-4命名空间。
在MyUtility.php
文件中,我尝试使用以下内容:
use InternalUtils\Utility1;
use InternalUtils\Utility2;
(new Utility1); // works
$className = 'Utility1';
(new $className); // throws Class 'Utility1' not found
请注意,每个Utility文件都是命名空间,并包含一个与Utility1
同名的类名。
动态生成对象失败。 关于可能出现什么问题的任何想法?
答案 0 :(得分:1)
请按以下方式进行操作
在Utility1.php中
<?php
namespace App\Utils\InternalUtils;
Class Utility1
{
//code ....
}
为了在MyUtility类中使用Utility1类,您可以导入完整命名空间
<?php
namespace App\Utils;
use App\Utils\InternalUtils;
class MyUtility
{
//other code
$utility1 = new InternalUtils\Utility1();
$utility2 = new InternalUtils\Utility2();
}