빠른 개발과 강력한 구조를 동시에 원하는 PHP 개발자라면 Yii2 프레임워크는 매우 유용한 선택입니다. 특히 CRUD 기반의 백엔드 시스템, 대시보드, 관리자 페이지 개발에 최적화되어 있습니다. 이 글에서는 Yii2의 설치부터 기초적인 사용법까지 단계별로 알아봅니다.
Yii2는 **Yes, it is!**라는 슬로건을 가진 PHP의 대표적인 고성능 프레임워크입니다. 다음과 같은 특징을 갖고 있습니다:
MVC 기반 구조
Gii 코드 생성 도구 제공
고성능 ORM (ActiveRecord)
RBAC, 캐싱, 이벤트 기반 구조 지원
RESTful API 빠른 구축 가능
Yii2는 두 가지 기본 프로젝트 템플릿을 제공합니다.
Basic Template: 단순한 웹 애플리케이션용
Advanced Template: 백엔드/프론트엔드 분리 및 사용자 인증 포함
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
설치가 완료되면 basic 폴더가 생성됩니다.
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced
cd advanced
php init
설치 후 php init 명령어로 개발(dev) 또는 프로덕션(prod) 환경을 선택합니다.
기본 내장 서버를 통해 바로 확인할 수 있습니다.
php yii serve
접속 주소: http://localhost:8080
혹은 직접 web 디렉토리를 웹서버(Apache/Nginx) 루트로 지정해도 됩니다.
config/db.php (Basic) 또는 common/config/main-local.php (Advanced) 파일을 열어 DB 정보를 설정합니다.
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydb',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
];
설정 후 DB 연결이 정상적으로 작동하는지 확인할 수 있습니다.
Gii는 Yii2가 제공하는 웹 기반 코드 생성기입니다. 매우 편리하게 컨트롤러, 모델, 뷰를 생성할 수 있습니다.
config/web.php에서 Gii 모듈을 활성화합니다.
'modules' => [
'gii' => [
'class' => 'yii\gii\Module',
],
],
접속 주소: http://localhost:8080/index.php?r=gii
Model 생성 → 데이터베이스 테이블 기반으로 모델 자동 생성
CRUD 생성 → 모델명을 입력하면 Controller + View 자동 생성
기본적으로 index.php?r=site/index 형식의 URL을 사용하지만, pretty URL을 활성화할 수 있습니다.
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [],
],
Apache의 경우 .htaccess도 함께 설정해줘야 합니다.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
컨트롤러 파일 예시:
// controllers/SiteController.php
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionHello()
{
return $this->render('hello');
}
}
뷰 파일 생성:
views/site/hello.php
해당 뷰에서 HTML 또는 PHP 코드를 작성하면 됩니다.
모델 기반으로 API를 만들 수도 있습니다.
use yii\rest\ActiveController;
class PostController extends ActiveController
{
public $modelClass = 'app\models\Post';
}
기본적인 CRUD API가 /post 엔드포인트에 자동 생성됩니다.