0

Composer のスキームを使用して、すべてのファイルfilesに関数または定義を自動的に含めることができることは知っています。

これをさらに一歩進めて、個々のファイルに手動でステートメントを再度書き込む必要がないようにしたいと考えています。use classname asこれは私の理想的なセットアップです:

/composer.json:

{
    "require": {
        "slim/slim": "2.*"
    }
    "autoload": {
        "files": ["init.php"]
    }
}

/init.php:

use Slim\Slim as Slim;
use Slim\Route as Route;
define("RYAN","BRODIE");

/example.php:

require '/vendor/autoload.php';
echo RYAN; //  ✔ outputs "BRODIE"
new Slim(); //  × Fatal error: Class 'Slim' not found

このようにして、新しい名前空間またはクラスを既存の名前空間に追加するたびに、それを追加してinit.php、すべてのリポジトリで必要に応じて使用できます。

4

1 に答える 1

2

PHP ランタイムを変更しない限り、これは不可能です。namespaceand宣言は、それらが表示される物理ファイルでのみ有効です。これらの宣言はsuseにまたがりません。includeもしそうなら、名前空間とエイリアスを管理するのは本当に悪夢です。

これらを各ファイルの先頭で宣言することは、単に対処しなければならないことです。PHP の名前空間に似た機能を持つほとんどの言語は、同じことを行います。

ドキュメントへのリンク

于 2013-07-16T13:41:28.523 に答える