라라벨 - 애플리케이션 구조

안녕하세요, 야심찬 개발자 여러분! 오늘 우리는 라라벨 애플리케이션 구조의 흥미로운 여정을 시작할 것입니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저는 이 강력한 PHP 프레임워크의 내부와 외부를 안내해 드리겠습니다. 프로그래밍에 처음이라면 걱정하지 마세요 - 기본에서 시작하여 점진적으로 올라갈 것입니다. 그럼 커피 한 잔을 손에 들고, 이제 시작해 보겠습니다!

Laravel - Application Structure

전체 그림

세부 사항에 들어가기 전에, 라라벨의 구조가 왜 중요한지 잠시 이해해 보겠습니다. 집을 짓는다고 상상해 보세요. 마음대로 나무 판을 이어붙이지는 않을 것입니다, 아닙니까? 설계도, 계획이 필요합니다. 그게 exactamente 라라벨의 구조가 제공하는 것입니다 - 여러분의 웹 애플리케이션에 대한 잘 정리된 설계도입니다.

이제 라라벨의 주요 디렉토리를 탐구해 보겠습니다:

App

app 디렉토리는 여러분의 라라벨 애플리케이션의 핵심입니다. 여기에 애플리케이션의 대부분의 핵심 코드가 있습니다.

예제: 간단한 컨트롤러 생성

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class WelcomeController extends Controller
{
public function index()
{
return view('welcome');
}
}

이 예제에서 우리는 WelcomeController라는 간단한 컨트롤러를 생성했습니다. index 메서드는 'welcome'이라는 뷰를 반환합니다. 이는 일반적으로 애플리케이션의 홈페이지를 표시하는 데 사용됩니다.

Bootstrap

bootstrap 디렉토리는 프레임워크를 실행하는 데 필요한 파일을 포함하고 있습니다. 일반적으로 이 디렉토리를 수정할 필요는 없지만, 존재하는 것을 알아 두는 것이 좋습니다.

Config

이름 그대로, config 디렉토리는 애플리케이션의 모든 구성 파일을 포함하고 있습니다.

예제: 애플리케이션 이름 변경

config/app.php에서:

'name' => env('APP_NAME', 'My Awesome Laravel App'),

이 줄은 애플리케이션의 이름을 설정합니다. env 함수는 .env 파일에 APP_NAME 값이 있는지 확인합니다. 만약 없다면, 기본적으로 'My Awesome Laravel App'을 사용합니다.

Database

database 디렉토리는 데이터베이스 마이그레이션, 모델 팩토리, 그리고 시드를 포함하고 있습니다. 마이그레이션은 데이터베이스 스키마의 버전 관리라고 생각하면 됩니다.

예제: 간단한 마이그레이션 생성

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
}

public function down()
{
Schema::dropIfExists('users');
}
}

이 마이그레이션은 'users' 테이블을 생성합니다. 'id', 'name', 'email', 그리고 타임스탬프 열을 포함하고 있습니다. down 메서드는 필요에 따라 마이그레이션을 되돌릴 수 있도록 합니다.

Public

public 디렉토리는 index.php 파일을 포함하고 있습니다. 이 파일은 애플리케이션에 들어오는 모든 요청의 진입점입니다. 이 디렉토리는 또한 이미지, 자바스크립트, CSS와 같은 자산을 저장합니다.

Resources

resources 디렉토리는 뷰와 LESS, SASS, 자바스크립트와 같은 원시, 컴파일되지 않은 자산을 포함하고 있습니다.

예제: 간단한 뷰 생성

resources/views/welcome.blade.php에서:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to My App</title>
</head>
<body>
<h1>Hello, {{ $name }}!</h1>
</body>
</html>

이 뷰는 라라벨의 Blade 템플릿 엔진을 사용합니다. {{ $name }} 문법은 뷰가 렌더링될 때 $name의 실제 값으로 치환됩니다.

Storage

storage 디렉토리는 컴파일된 Blade 템플릿, 파일 기반 세션, 파일 캐시, 그리고 프레임워크에 의해 생성된 기타 파일을 포함하고 있습니다.

Tests

tests 디렉토리는 자동화된 테스트를 포함하고 있습니다. 라라벨은 기본적으로 쉽게 사용할 수 있는 테스트 프레임워크를 제공합니다.

예제: 간단한 테스트 작성

<?php

namespace Tests\Feature;

use Tests\TestCase;

class ExampleTest extends TestCase
{
public function test_the_application_returns_a_successful_response()
{
$response = $this->get('/');

$response->assertStatus(200);
}
}

이 테스트는 애플리케이션의 홈페이지가 성공적인 HTTP 상태 코드(200)를 반환하는지 확인합니다.

Vendor

vendor 디렉토리는 Composer 의존성을 포함하고 있습니다. 이 디렉토리를 직접 수정해서는 안 됩니다.

라라벨의 Artisan 명령어

라라벨은 강력한 명령줄 인터페이스인 Artisan을 제공합니다. 여기 몇 가지 흔히 사용되는 Artisan 명령어를 표로 정리해 보겠습니다:

명령어 설명
php artisan serve 개발 서버 시작
php artisan make:controller 새로운 컨트롤러 생성
php artisan make:model 새로운 모델 생성
php artisan migrate 데이터베이스 마이그레이션 실행
php artisan tinker 애플리케이션과 상호작용

이 명령어들은 여러분의 친구입니다. 시간과 노력을 절약할 수 있도록 도와줍니다!

마무리

그렇습니다, 여러분! 우리는 라라벨 애플리케이션 구조의 여정을 빠르게 둘러보았습니다. 라라벨을 마스터하는 것은 시간과 연습이 필요합니다. 처음에는 이해가 잘 안되더라도 낙담하지 마세요 - 그것이 배우는 과정의 일부입니다.

마무리하면서, 저는 제가 코딩을 시작한 초기 일에 대한 이야기를 떠올립니다. 어느 날, 저는 파일 이름에 타이포를 했더니 몇 시간 동안 문제를 디버깅했습니다. 교훈은? 세부 사항에 주의를 기울이되, 큰 그림을 떠올리는 것도 잊지 마세요.

라라벨의 구조는처음에는 복잡해 보일 수 있지만, 오랜 기간 동안 여러분의 삶을 더 쉽게 만들도록 설계되었습니다. 자전거 타는 것을 배우는 것처럼 - 처음에는 흔들릴 수 있지만, 한 번 익숙해지면 빠르게 달릴 수 있습니다.

계속 코딩하고, 배우고, 가장 중요한 것은 즐기세요! 기억하세요, 모든 전문가는 한 번은 초보자였습니다. 여러분도 충분히 할 수 있습니다!

Credits: Image by storyset