2017-03-04 20 views
1

동적으로 사용 문을 생성하여 포함 시키려고합니다.`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'; 
    ... 

그러나 컨트롤러에 포함/필수 클래스를 사용하려고하면 일부 클래스가 누락되었다는 정보가 표시됩니다. 예 : 그들을 필요로/I는 포함 할 경우

<?php 
    namespace App\Http\Controllers; 

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

    ... 

그래서 왜 작동하지 않습니다 내가 그들을 require를 사용하지 않고 컨트롤러로 수동으로 작성하는 경우 물론

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

가 작동?

+0

아니요, 클래스 위에 수동으로 use 문을 쓰면 작동합니다. 따라서 오류는 include/require와 관련되어야합니다. – Black

+0

그들은 모두 그 오류를 제공합니까, 아니면 단지 오류입니까? – Nytrix

+0

어쩌면 어리석은 논평 일지 모르지만, '사용'은 클래스를 사용하여 PHP를 작성한 것일 뿐이며이를 포함하기 만하면됩니다. – Syncro

답변

2

아니요 할 수 있습니다. 는 여기에 PHP 설명서에서 문서입니다 :

참고 : 가져 오기 규칙은 파일 단위 당이며, 의미는 파일 부모 파일의 가져 오기 규칙을 상속하지 것입니다 포함되어 있습니다.

출처는 here이고 전체 문서 링크는 here입니다.

1

사용은 컴파일 타임에 수행되며 런타임에 포함되므로 불가능합니다. 하지만 스크립트를 실행하기 전에 포함 물을 바꾸려면 PHP-Parser과 같은 것을 사용하십시오.

+0

예, 가능합니다. 깨끗한가요? * 아니 * 절대적으로 .... 그것은 내가 생각하는 유일한 방법이다. – Nytrix

+0

미래에 기능을 구현하여 use 문을 포함 할 수 있기를 바랍니다. 이렇게하면 많은 새로운 가능성이 생길 것입니다. – Black