自动添加autoload
Automatically add autoload
我制作了一个 "HelperCommand" 来在 Laravel 中生成助手。 "HelperCommand" 将在 "app/Console/Commands/Helpers" 中创建一个文件。
php artisan helper:command time.php
public function handle()
{
$name = $this->argument('name');
File::put(app_path().'/Console/Commands/Helpers/'.$name, '');
}
我在composer.json中手动添加文件名:
"autoload": {
"files": [
"app/Console/Commands/Helpers/time.php"
]
}
我的问题是如何在生成helper时自动添加autoload?
谢谢!
您可以通过多种方式修改composer.json
。
不推荐
一种简单的方法是使用 file_get_contents ()
和 file_put_contents ()
。
$composer = file_get_contents(base_path('composer.json')); // get composer.json
$array = json_decode($composer, true); // convert to array
// Add new file
$array['autoload']['files'][] = $name;
// convert to json
$json = json_encode($array, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
file_put_contents(base_path('composer.json'), $json); // Write composer.json
但是,这种方式 无效 ,并且你会浪费很多时间来更新自动加载器,通过 :
composer dump-autoload
推荐
我的建议是,您应该制作自己的作曲家包。
在您的包服务提供商中,您可以在不更新自动加载器的情况下获取所有助手。
$files = glob(
// app/Helpers
app_path('Helpers') . '/*.php')
);
foreach ($files as $file) {
require_once $file;
}
我是 laravel-helpers
的所有者。你可以看到我在那里使用的技术。
我制作了一个 "HelperCommand" 来在 Laravel 中生成助手。 "HelperCommand" 将在 "app/Console/Commands/Helpers" 中创建一个文件。
php artisan helper:command time.php
public function handle()
{
$name = $this->argument('name');
File::put(app_path().'/Console/Commands/Helpers/'.$name, '');
}
我在composer.json中手动添加文件名:
"autoload": {
"files": [
"app/Console/Commands/Helpers/time.php"
]
}
我的问题是如何在生成helper时自动添加autoload?
谢谢!
您可以通过多种方式修改composer.json
。
不推荐
一种简单的方法是使用 file_get_contents ()
和 file_put_contents ()
。
$composer = file_get_contents(base_path('composer.json')); // get composer.json
$array = json_decode($composer, true); // convert to array
// Add new file
$array['autoload']['files'][] = $name;
// convert to json
$json = json_encode($array, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
file_put_contents(base_path('composer.json'), $json); // Write composer.json
但是,这种方式 无效 ,并且你会浪费很多时间来更新自动加载器,通过 :
composer dump-autoload
推荐
我的建议是,您应该制作自己的作曲家包。
在您的包服务提供商中,您可以在不更新自动加载器的情况下获取所有助手。
$files = glob(
// app/Helpers
app_path('Helpers') . '/*.php')
);
foreach ($files as $file) {
require_once $file;
}
我是 laravel-helpers
的所有者。你可以看到我在那里使用的技术。