正在为Codeigniter 4创建合成器包

mefy6pfw  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(126)

我正在尝试为Codeigniter 4创建我的第一个composer包。但是,我总是得到一个错误Class 'Myapp\Settings\Greet' not found。我完全迷路了。
我在ThirdParty文件夹中创建了一个名为myapp-settings的文件夹。该文件夹中还有一个名为srccomposer.json的文件夹。
这是composer.json的内容

{
    "name": "myapp/settings",
    "description": ".",
    "license": "MIT",
    "minimum-stability": "dev",
    "autoload": {
        "psr-4": {
            "Myapp\\Settings\\": "src"
        }
    },
    "require": {}
}

我在src文件夹中创建了一个名为Greet.php的测试文件

<?php namespace Myapp\Settings;

class Greet
{
    public function hello()
    {
        return 'Hey, there!';
    }
}

codeigniter 的App\Config\Autoload.php

public $psr4 = [
    'Myapp\Settings' => APPPATH . 'ThirdParty/myapp-settings/src'
];

然后我在codegliiter的默认控制器上调用了它。

<?php namespace App\Controllers;

use Myapp\Settings\Greet;

class Home extends BaseController
{
    public function index()
    {
        $h = new Greet();
        echo $h->hello();
    }

    //--------------------------------------------------------------------

}

运行后出现错误Class 'Myapp\Settings\Greet' not found. APPPATH\Controllers\Home.php at line 9。如何修复此错误?

ttp71kqs

ttp71kqs1#

不要编辑codeigniter的app/Config/Autoload.php,而是将其还原并将以下行添加到项目composer.json中:

"repositories": [
    {
        "type": "path",
        "url": "app/ThirdParty/myapp-settings"
    }
],
// "require": {

然后运行composer require myapp/settings
因为我也遇到了这个问题,所以我们专门为它创建了一个GitHub repository。你可以检查和克隆,观察提交来理解步骤。

相关问题