如何包含/要求`use`运算符语句?

时间:2017-03-04 21:21:35

标签: php laravel class namespaces

我动态生成我的use语句并尝试包含它们。

use.php (路径:/App/Test/Use/use.php)

<?php
    use App\Http\Utility\GeneralUtility;
    use App\Models\Project;
    use App\Http\Selenium;
?>

PlayController.php (路径:/App/Http/Controllers/PlayController.php)

<?php

    namespace App\Http\Controllers;
    require app_path() . '\Projects\Test\Use\use.php';
    ...

但是,如果我尝试在我的控制器中使用included / required类,那么我会得到一些类缺少的信息。 E.g。

FatalThrowableError in PlayController.php line 30:
Class 'App\Http\Controllers\Selenium' not found

当然可以工作如果我在不使用require的情况下手动将它们写入控制器:

<?php
    namespace App\Http\Controllers;

    use App\Http\Utility\GeneralUtility;
    use App\Models\Project;
    use App\Http\Selenium;

    ...

那么,如果我包含/要求它们,为什么它不起作用?

2 个答案:

答案 0 :(得分:2)

你想要做的事情可能。 以下是PHP手册中的文档

  

注意:导入规则是基于每个文件的,这意味着包含的文件将 NOT 继承父文件的导入规则。

来源来自here,完整的文档链接是here

答案 1 :(得分:1)

使用在编译时完成,并在运行时包含,因此无法实现。 但是你可以做的是,在执行脚本之前使用像PHP-Parser之类的东西替换包含。