2017-03-04 20 views
1

私はuseステートメントを動的に生成し、それらをインクルードしようとします。`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'; 
    ... 

ただし、私のコントローラに含まれている/必須のクラスを使用しようとすると、いくつかのクラスがないという情報が得られます。例えば。もちろん

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; 

    ... 

私は/それらを必要と含まれている場合、なぜそれが動作しないのですか?

+0

いいえ、クラスの上に手動でuseステートメントを記述すると機能します。したがって、エラーはインクルード/要求に関連している必要があります。 – Black

+0

彼らはすべてそのエラーを出しますか、それともそれだけですか? – Nytrix

+0

これは愚かなコメントですが、 'use'はクラスを使ってPHPを作成することであり、それを含めるためだけに含めることができます。 – Syncro

答えて

2

あなたがやろうとしているもの可能ではありません。ここ は、その上にPHPマニュアルからドキュメントです:

注:はルールのインポートファイルごとされ、意味はファイルがは、親ファイルのインポートルールを継承しません含まれています。

ソースはhereで、完全なドキュメントのリンクはhereです。

1

使用すると、コンパイル時に行われ、実行時に含まれるので、それはそれは不可能にしています。 しかし、あなたができることは、PHP-Parserのようなものを使って、スクリプトが実行される前にインクルードを置き換えることです。

+0

はい、可能でしょう。それはきれいですか? *いいえ*絶対にそうではありません....私が考えている唯一の方法です。 – Nytrix

+0

将来的に機能を実装してu​​seステートメントを含めることができるようにしたいと思っています。これは非常に多くの新しい可能性をもたらします – Black

関連する問題