Laravel 기초

Laravel은 우아하고 표현력이 풍부한 문법을 가진 PHP 웹 프레임워크입니다. 웹 애플리케이션 개발을 위한 다양한 기능을 제공하여 개발자의 생산성을 높여줍니다.

개요

Laravel은 웹 개발에 필요한 인증, 라우팅, 세션, 캐싱 등 다양한 기능을 제공하는 풀 스택(Full-stack) 프레임워크입니다. MVC(Model-View-Controller) 아키텍처를 기반으로 하며, 개발자들이 보다 쉽게 웹 애플리케이션을 구축할 수 있도록 돕습니다. Composer를 사용하여 의존성 관리를 하며, 강력한 커뮤니티와 방대한 문서가 장점입니다.

참고

Laravel은 PHP 기반이므로, Laravel을 사용하기 전에 PHP와 Composer에 대한 기본적인 이해가 필요합니다.

MVC 패턴

Laravel은 MVC(Model-View-Controller) 디자인 패턴을 따릅니다. 각 역할은 다음과 같습니다:

요소 설명
Model 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. Eloquent ORM을 통해 데이터베이스와 상호작용합니다.
View 사용자에게 보여지는 화면(HTML)을 담당합니다. Blade 템플릿 엔진을 사용합니다.
Controller 사용자의 요청을 받아 모델과 뷰를 연결하는 중간자 역할을 합니다.

Eloquent ORM

Eloquent ORM은 Laravel에 내장된 객체 관계 매퍼로, 데이터베이스 테이블을 클래스로, 테이블의 행을 해당 클래스의 인스턴스로 매핑합니다. SQL 쿼리를 직접 작성하지 않고도 객체 지향적인 방식으로 데이터베이스를 다룰 수 있습니다.

PHP
<?php
// Post 모델 생성 (Post 테이블과 연결)
use App\Models\Post;

// 새로운 게시물 생성
$post = new Post;
$post->title = '첫 번째 게시글';
$post->content = '안녕하세요!';
$post->save();

// 모든 게시물 조회
$posts = Post::all();

// 특정 id를 가진 게시물 조회
$post = Post::find(1);
?>

Blade 템플릿 엔진

Blade는 Laravel의 강력하고 간단한 템플릿 엔진입니다. HTML 코드에 @ 기호를 사용하여 조건문, 반복문, 레이아웃 상속 등 다양한 기능을 구현할 수 있습니다. Blade는 순수 PHP 코드로 컴파일되므로 성능 저하가 거의 없습니다.

Blade Template
<h1>{{ $title }}</h1>

@if($isLoggedIn)
    <p>안녕하세요, {{ $userName }}님!</p>
@else
    <p>로그인이 필요합니다.</p>
@endif

@foreach($posts as $post)
    <h3>{{ $post->title }}</h3>
@endforeach

사용 예제

간단한 라우팅(Routing)과 컨트롤러(Controller) 예제입니다.

PHP (routes/web.php)
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;

Route::get('/', [HomeController::class, 'index']);
?>
PHP (app/Http/Controllers/HomeController.php)
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index()
    {
        return view('welcome');
    }
}
?>

주의사항 및 팁

  • Laravel은 PHP의 최신 버전(PHP 8 이상)을 요구하며, Composer를 통해 설치 및 의존성을 관리해야 합니다.
  • artisan이라는 강력한 명령줄 도구를 사용하여 컨트롤러, 모델, 마이그레이션 파일 등을 쉽게 생성할 수 있습니다.
  • 데이터베이스 마이그레이션 기능을 사용하면 데이터베이스 스키마를 버전 관리할 수 있어 협업에 유용합니다.
주의

Laravel은 강력한 프레임워크인 만큼, 초기 프로젝트 설정과 개념 학습에 다소 시간이 걸릴 수 있습니다. 하지만 한번 익숙해지면 높은 생산성을 경험할 수 있습니다.