独学者Fossa

独学していることなど

CodeIgniter 4.5 Modules

codeigniter.com

Modules

CodeIgniter 4.5で、modulesフォルダを設置する場合で、わかったことを書きます。

Info
自分自身の備忘録として、書いています。
まだ十分に把握してなかったり、勘違いしている部分もあるかもしれません。
ご了承ください。

使用環境

Name Version
PHP 8.3.6
CodeIgniter 4.5.1

app/Config/Autoload.php

下記は、ドキュメントから引用しています。

public $psr4 = [
    APP_NAMESPACE => APPPATH, // For custom namespace
    'Config'      => APPPATH . 'Config',
    'Acme\Blog'   => ROOTPATH . 'acme/Blog',
];

'Config' => APPPATH . 'Config',の行は、app\Config\Routing.phpに移動したので、要らないはずです。

私が行なった設定は、下記の通りです。

public $psr4 = [
    APP_NAMESPACE  => APPPATH, // For custom app namespace
    'Modules'      => ROOTPATH. 'modules',
    'Modules/Blog' => ROOTPATH. 'modules/Blog'
];

app/Config/Routing.php

    public string $defaultNamespace = '';

そもそも、defaultNamespaceを設定する必要性があるとは、思えない。

app/Config/Routes.php

$routes->get('/', 'App\Controllers\Home::index');

modules/Blog/Config

<?php

namespace Modules\Blog\Config;

$routes->get('blog', 'Modules\Blog\Controllers\Blog::index');

php spark routes

php spark routesをした結果が、下記の通りです。

+--------+------------------------+------+-----------------------------------------------------------------------+----------------+---------------+
| Method | Route                  | Name | Handler                                                               | Before Filters | After Filters |
+--------+------------------------+------+-----------------------------------------------------------------------+----------------+---------------+
| GET    | /                      | »    | \App\Controllers\Home::index                                          |                |               |
| GET    | blog                   | »    | \Modules\Blog\Controllers\Blog::index                                 |                |               |
+--------+------------------------+------+-----------------------------------------------------------------------+----------------+---------------+