繁体   English   中英

自动添加自动加载

[英]Automatically add autoload

我制作了一个“HelperCommand”来在 Laravel 中生成助手。 “HelperCommand”将在“app/Console/Commands/Helpers”中创建一个文件。

php 工匠助手:命令 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"
    ]
}

我的问题是如何在生成助手时自动添加自动加载?

谢谢!

您可以通过多种方式修改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的所有者。 你可以看到我在那里使用的技术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM