ci4에서 config 확장을 위해서
http://ci4doc.cikorea.net/general/configuration.html?highlight=registrar#registrars
페이지를 참고하여 registrars 를 App\Config\Database에 하기와 같이 등록하였습니다.
class Database extends \CodeIgniter\Database\Config
{
/**
*
*/
protected $registrars = [
\Foo\Config\FooDatabase::class
];
...
그리고, \Foo\Config\FooDatabase 는 하기와 같이 작성하였구요.
namespace Foo\Config;
class FooDatabase
{
public static $default = [...];
...
public static function Database()
{
return [
... 디비구성을 위한 배열값
];
}
}
그리고, spark 돌려보니, Connot redeclare static CodeIgniter\Database\Config::$registrars as non static Config\Database::$registrars in ... 에러가 발생하더군요.
우선, 각 설정클래스가 상속하고 있는 BaseConfig에 $registars 프로퍼티가 public static 으로 선언되어 있고(4.0.3 기준),
따라서 메뉴얼과는 다르게,
$registrars 프로퍼티를 public static $registrars 로 전환해주고,
실행해보니 에러 발생하지 않고, 설정값도 잘 불러와지기는 해서 작업을 계속 진행하고 있습니다.
이게 버전업이 되면서 $registrars 프로퍼티 속성이 모르게 변경이 된 건지, 아니면 제가 메뉴얼을 곡해하고 있는건지 궁금하네요.
뭔가 확장방법도 깔끔하지 못하는 기분도 들고.. 이럴거면 차라리 예전처럼 hmvc로 만들 때 방식대로 require로 구조를 만드는게 훨씬 깔끔할 것 같다는 기분도 듭니다.
각종 설정들을 분리를 해서 잘 관리할 수 있는 노하우가 있을까요?
ci4로 hmvc확장 연구해보신분들의 의견을 듣고 싶습니다.
protected 속성을 사용하려면 Foodatabase가 \Codeigniter\Data\Config 클래스를 상속 받아야 할 텐데 상속 받는 부분이 없으니 public 으로 지정해야 사용이 가능할것 같네요.