CLI 생성기
CodeIgniter4에는 기본 컨트롤러, 모델, 엔티티 등을 쉽게 만들 수 있는 생성기가 포함되어 있습니다. 한 번의 명령으로 전체 파일 세트를 뼈대만 생성할 수도 있습니다.
소개
모든 내장 생성기는 php spark list로 목록을 볼 때 Generators 그룹 아래에 있습니다. 특정 생성기의 전체 설명과 사용 정보를 보려면 다음 명령을 사용하세요:
php spark help <generator_command>
<generator_command>는 확인할 명령으로 대체됩니다.
참고
생성된 코드를 하위 폴더에 두어야 하나요? 예를 들어 메인 Controllers 폴더의 Admin 하위 폴더에 컨트롤러 클래스를 만들고 싶다면, 클래스 이름 앞에 하위 폴더를 붙이기만 하면 됩니다. 예: php spark make:controller admin/login. 이 명령은 Controllers/Admin 하위 폴더에 Login 컨트롤러를 생성하고 네임스페이스는 App\Controllers\Admin로 설정됩니다.
참고
모듈 작업 중인가요? 코드 생성은 루트 네임스페이스를 기본값 APP_NAMESPACE로 설정합니다. 생성된 코드를 모듈 네임스페이스의 다른 위치에 두어야 한다면, 명령에 --namespace 옵션을 설정하세요. 예: php spark make:model blog --namespace Acme\\Blog.
경고
--namespace 옵션을 설정할 때 지정한 네임스페이스가 Config\Autoload의 $psr4 배열 또는 composer autoload 파일에 정의된 올바른 네임스페이스인지 확인하세요. 그렇지 않으면 코드 생성이 중단됩니다.
내장 생성기
CodeIgniter4는 기본적으로 다음 생성기를 제공합니다.
make:cell
Added in version 4.3.0.
새 Cell 파일과 뷰를 생성합니다.
사용법:
make:cell <name> [options]
인자:
name: Cell 클래스 이름입니다. PascalCase여야 합니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:command
새 spark 명령을 생성합니다.
사용법:
make:command <name> [options]
인자:
name: 명령 클래스 이름입니다. [필수]
옵션:
--command: spark에서 실행할 명령 이름입니다. 기본값은command:name입니다.--group: 명령의 그룹/네임스페이스입니다. 기본값은 기본 명령의 경우App, 생성기 명령의 경우Generators입니다.--type: 명령 유형입니다.basic명령인지generator명령인지 지정합니다. 기본값은basic입니다.--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:config
새 config 파일을 생성합니다.
사용법:
make:config <name> [options]
인자:
name: config 클래스 이름입니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:controller
새 controller 파일을 생성합니다.
사용법:
make:controller <name> [options]
인자:
name: controller 클래스 이름입니다. [필수]
옵션:
--bare:BaseController대신CodeIgniter\Controller에서 상속합니다.--restful: RESTful 리소스에서 상속합니다. 선택지는controller와presenter입니다. 기본값은controller입니다.--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
참고
--suffix를 사용하면 생성된 컨트롤러 이름이 ProductController처럼 됩니다. 이는 Auto Routing를 사용할 때의 Controller 명명 규칙(Controller 클래스 이름은 반드시 대문자로 시작해야 하며, 첫 글자만 대문자일 수 있음)을 위반합니다. 따라서 --suffix는 Defined Routes를 사용할 때 사용할 수 있습니다.
make:entity
새 entity 파일을 생성합니다.
사용법:
make:entity <name> [options]
인자:
name: entity 클래스 이름입니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:filter
새 filter 파일을 생성합니다.
사용법:
make:filter <name> [options]
인자:
name: filter 클래스 이름입니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:model
새 model 파일을 생성합니다.
사용법:
make:model <name> [options]
인자:
name: model 클래스 이름입니다. [필수]
옵션:
--dbgroup: 사용할 데이터베이스 그룹입니다. 기본값은default입니다.--return: 반환 유형을array,object,entity중에서 설정합니다. 기본값은array입니다.--table: 다른 테이블 이름을 지정합니다. 기본값은 복수형 클래스 이름입니다.--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:seeder
새 seeder 파일을 생성합니다.
사용법:
make:seeder <name> [options]
인자:
name: seeder 클래스 이름입니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:test
Added in version 4.5.0.
새 test 파일을 생성합니다.
사용법:
make:test <name> [options]
인자:
name: test 클래스 이름입니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은Tests입니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:transformer
새 API transformer 파일을 생성합니다.
사용법:
make:transformer <name> [options]
인자:
name: transformer 클래스 이름입니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:migration
새 migration 파일을 생성합니다.
사용법:
make:migration <name> [options]
인자:
name: migration 클래스 이름입니다. [필수]
옵션:
--session: 데이터베이스 세션용 migration 파일을 생성합니다.--table: 데이터베이스 세션에 사용할 테이블 이름을 설정합니다. 기본값은ci_sessions입니다.--dbgroup: 데이터베이스 세션에 사용할 데이터베이스 그룹을 설정합니다. 기본값은default그룹입니다.--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
make:validation
새 validation 파일을 생성합니다.
사용법:
make:validation <name> [options]
인자:
name: validation 클래스 이름입니다. [필수]
옵션:
--namespace: 루트 네임스페이스를 설정합니다. 기본값은APP_NAMESPACE입니다.--suffix: 생성된 클래스 이름에 컴포넌트 접미사를 추가합니다.--force: 이 플래그를 설정하면 대상의 기존 파일을 덮어씁니다.
기본 코드 전체 세트 뼈대 생성
개발 단계에서 Admin 그룹처럼 기능을 그룹별로 만들 때가 있습니다. 이 그룹에는 자체 컨트롤러, 모델, 마이그레이션 파일, 심지어 엔티티까지 포함될 수 있습니다. 터미널에 각 생성기 명령을 하나씩 입력하다 보면 이 모든 것을 한 번에 처리하는 단일 생성기 명령이 있으면 좋겠다고 생각하게 됩니다.
걱정하지 마세요! CodeIgniter4에는 전용 make:scaffold 명령도 있으며, 이는 컨트롤러, 모델, 엔티티, 마이그레이션, 시더 생성기 명령을 감싸는 래퍼입니다. 필요한 것은 생성될 모든 클래스의 이름에 사용할 클래스 이름뿐입니다. 또한 각 생성기 명령이 지원하는 개별 옵션도 scaffold 명령이 인식합니다.
터미널에서 다음을 실행하면:
php spark make:scaffold user
다음 파일들이 생성됩니다:
app/Controllers/User.php
app/Models/User.php
app/Database/Migrations/<some date here>_User.php와
app/Database/Seeds/User.php
scaffold로 생성한 파일에 Entity 클래스를 포함하려면 명령에 --return entity를 추가하면 모델 생성기로 전달됩니다.
GeneratorTrait
모든 생성기 명령은 코드 생성에 사용되는 메서드를 완전히 활용하기 위해 GeneratorTrait를 사용해야 합니다.
사용자 정의 생성기 명령 템플릿 위치 선언
생성기 템플릿을 찾는 기본 순서는 (1) app/Config/Generators.php 파일에 정의된 템플릿, (2) 찾을 수 없으면 CodeIgniter\Commands\Generators\Views 네임스페이스의 템플릿입니다.
사용자 정의 생성기 명령의 템플릿 위치를 선언하려면 app/Config/Generators.php 파일에 추가해야 합니다. 예를 들어 make:awesome-command 명령이 있고 생성기 템플릿이 app 디렉터리의 app/Commands/Generators/Views/awesomecommand.tpl.php에 있다면, 구성 파일을 다음과 같이 업데이트합니다:
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Generators extends BaseConfig
{
public array $views = [
// ..
'make:awesome-command' => 'App\Commands\Generators\Views\awesomecommand.tpl.php',
];
}