라라벨 5부터는 artisan 의 make 명령어로 애플리케이션에 필요한 다양한 유형의 클래스를 만들 수 있는 기능을 제공하며 프레임워크에서 제공하는 이런 기능들을 스캐폴딩(scaffolding) 이라고 부릅니다.

생성된 클래스 종류에 따라 app 폴더밑에 적절한 폴더에 위치하게 되며 예로 make:controller 명령어로 컨트롤러를 생성하면 app/Http/Controllers 폴더에 위치하며 make:model 로 모델을 생성하면 app 에 , Provider 를 생성하면 app/Providers 에 위치하게 됩니다.

 

그러면 먼저 모델 클래스를 생성해 보겠습니다. make:model 명령어의 사용법을 알아보기 위해 -h 옵션을 사용해 봅시다.

$ php artisan make:model -h
 
Usage:
  make:model [options] [--] <name>
Arguments:
  name                  The name of the class
Options:
  -m, --migration       Create a new migration file for the model.
  -h, --help            Display this help message
CODE

 

Usage: 를 보면 인수로 모델의 이름을 필수로 주어야 하며 옵션으로는 모델에 대한 마이그레이션(마이그레이션은 다음 장에서 설명합니다) 파일을 만드는 -m 이 있는 것을 알수 있습니다.

모델 클래스의 작명은 카멜케이스(camelCase) 처럼 대소문자를 섞어 쓰지만 앞 자리는 대문자로 쓰는 StudlyCase 라 부르는 방식으로 지어야 합니다.

그러면 할일을 모델링하는 Task 라는 모델 클래스와 Task 들을 갖고 있는 Project 라는 모델 클래스를 만들어 보겠습니다.

$ php artisan make:model Task
Model created successfully.
 
$ php artisan make:model Project
Model created successfully.
CODE

 

Artisan 파사드의 call 메소드를 이용하면 artisan 명령을 커맨드가 아닌 다른 곳(라우트, 콘트롤러등)에서도 사용할 수 있습니다. 다음은 model/ URL 로 접근할 경우 모델을 생성하는 라우트 설정으로 http://homestead.app/model/Greeting 에 연결하면 Greeting 이라는 모델 클래스가 생성됩니다.

app/Http/routes.php

Route::get('model/{name}', function($name) {
    return Artisan::call('make:model', ['name' => $name]);
});
PHP

 

모델은 app 폴더밑에 생성되므로 선호하는 에디터로 app\Task.php 파일을 열어봅시다.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    //
}
CODE

모든 모델은 라라벨에 내장된 ORM 인 Eloquent의 Model 클래스(Illuminate\Database\Eloquent\Model)  클래스를 상속받고 있으며 테이블의 컬럼을 자동으로 모델과 매핑하므로 컬럼을 만들어줄 필요가 없습니다. 

 

artisan 으로 그외 다양한 유형의 클래스를 만들수 있으며 이는 각 기능이 필요한 챕터에서 설명할 예정입니다. 그러면 라라벨 5 부터 포함된 강력한 디버깅 도구인 tinker 에 대해 알아 봅시다.