II. 일러 두기

이 책을 읽는 독자층을 다양하리라 예상한다. 저자가 책을 통해 어떤 도구를 권장하고 사용하든, 실력 있는 독자분들은 자신의 도구로 해석해서 사용할 것이다. 이미 PHP와 개발도구에 익숙한 독자분들은 저자의 주장대로 라라벨 입문이 어렵지 않다. 반면, 개발 환경조차 꾸미지 못하는 분들도 있다는 것을 이해해 주시면 좋겠다. 이런 분들은 도구 선택의 자유도를 드리는 것보다는 오히려 개발 환경을 강제하는 것이 많은 문제점을 피해가는 방법이라 생각한다.

자신의 환경을 이해하고 제어할 수 있는 독자라면, 자신이 선호하는 환경을 사용하시기 바란다(예: PHP 내장 웹 서버 대신 엔진엑스, 크롬 대신 사파리).

II.1. 라라벨 버전

이 책과 소스코드는 라라벨 프레임워크(laravel/laravel) 5.2.29, 핵심 컴포넌트(laravel/framework) 5.2.29 버전을 기준으로 한다. 라라벨 5.1 버전(LTSi-3)과 용법이 다른 부분은 병행해서 설명한다.

라라벨의 업데이트 속도는 상당히 빠르다. 프레임워크가 살아 있다는 증거다. 독자 여러분이 이 책을 볼 즈음, 여러분은 5.2.29와 다른 버전을 설치하고 사용할 것이다. 라라벨이 6.x 가 아니라면 이 책의 모든 코드가 동작한다. 그리고 6.x 시절이 오더라도 이 책에서 학습한 내용은 대부분 유효하다고 보증한다.

II.2. 용어 혼동 주의

PHP는 웹 개발 분야에 많이 쓰는 '프로그래밍 언어'다. PHP 프로그래밍 언어의 문법에 맞게 쓴 프로그램을 'PHP 스크립트'라 부른다. 그리고, 컴퓨터에 설치하여 PHP 스크립트를 해석하고 실행하는 소프트웨어를 'PHP 인터프리터'라 부른다.

그런데 우리는 PHP 프로그래밍 언어, PHP 스크립트, PHP 인터프리터를 구분하지 않고 편의상 PHP라 부른다. 이 책에서도 PHP란 단어는 일반적인 용법을 따르므로 문맥에 맞게 이해하기 바란다.

II.3. PHP 내장 웹 서버

이 책에서는 전용 웹 서버(아파치, 엔진엑스, IIS) 대신 PHP 내장 웹 서버를 이용하는 것으로 설명한다. 콘솔 ii-1 명령으로 PHP 내장 웹 서버를 실행하고, 실습 예제를 브라우저에서 확인할 수 있다(편의상 '로컬 서버'로 부르기도 한다). 전용 웹 서버를 사용하는 독자는 이 명령을 실행할 필요가 없다.

# 콘솔 ii-1 PHP 내장 웹 서버 실행

$ php artisan serve
# Laravel development server started on http://localhost:8000/

이제 웹 브라우저에서 http://localhost:8000으로 접속해서 실습 예제의 동작을 확인한다.

다른 호스트 이름이나 포트를 사용하고 싶으면 --host, --port 옵션을 이용한다.

# 콘솔 ii-2 PHP 내장 웹 서버의 호스트와 포트

$ php artisan serve --host=0.0.0.0 --port=8001

0.0.0.0 호스트를 이용하면 로컬 서버와 같은 네트워크에 연결된 다른 컴퓨터에서 이 서버에 접속할 수 있다. 이때 로컬 서버의 주소는 $ ifconfig (Windows는 $ ipconfig) 명령으로 확인한다.

II.4. 웹 브라우저와 URL

본문에서 브라우저의 개발자 도구를 이용할 때 크롬을 기준으로 설명한다. 본문에 사용한 브라우저 화면 캡처도 모두 크롬이다. 실습을 위해 다른 웹 브라우저를 사용해도 무방하다.

웹 서버의 호스트와 포트는 독자마다 다를 수 있다. 그래서, 본문에서 URL을 표현할 때 호스트:포트를 제외한 경로를 HTTP 메서드와 함께 표시한다. 예를 들어, GET /articles/create는 웹 브라우저 주소 표시줄에 http://호스트:포트/articles/create를 입력한다는 의미다.

II.5. 콘솔

영화에서 해커들이 오직 키보드 타이핑만으로 컴퓨터와 응용프로그램을 빠르게 제어하는 도구. 이 도구를 콘솔이라 한다. 해커들이 GUI를 사용하지 않고 콘솔에서 명령줄 인터페이스(CLI)를 사용하는 이유는 간단하다. 바로 생산성!

다른 PHP 프레임워크 대비 라라벨은 명령줄 도구를 많이 이용하는 편이다. 반복되는 작업을 수행하거나, 뼈대 코드(boilerplate code)를 빠르게 만들 때 주로 사용한다.

운영체제의 콘솔 명령은 $로 시작한다. MySQL 데이터베이스의 콘솔은 mysql>로 시작한다. REPL은 >>> 또는 php>로 시작한다. 이런 기호를 프롬프트(prompt)라 한다.

책 본문에서 프롬프트를 만나면 콘솔에서 명령을 실행한다. $ ls라는 구문은 $를 빼고 ls 를 타이핑하고 Enter 키를 치라는 의미이다. 콘솔 명령 박스에서 # 는 주석이므로 콘솔에는 입력하지 않는다.

# 콘솔 ii-3 디렉터리 목록 조회 하기

$ ls

콘솔 명령을 대체할 수 있는 GUI 툴이 있는 경우, GUI 툴을 사용해도 무방하다. 저자는 콘솔과 명령줄 인터페이스에 익숙해질 것을 권장한다. GUI는 시간이 지남에 따라 메뉴의 위치나 이름이 바뀌지만, 콘솔 명령은 바뀌지 않아서 한번 배워두면 계속 사용할 수 있다. 모든 운영체제에서 공통으로 사용할 수 있다는 이점도 있다(Windows 10에 배시 쉘을 탑재한다고 발표했다).

II.6. 코드 블록

이 책에는 예제가 많다. 될 수 있으면 전체 코드를 수록하려 한다. 그러나 긴 코드를 수록한 후 코드의 내용을 설명하면, 읽기가 매끄럽지 않을 때가 있다. 그래서 작은 코드 블록으로 나누어 설명과 함께 기재한다. 본문에 수록된 소스코드의 첫 줄은 파일 경로를 표시한다.

예를 들어 아래 코드는 app/Providers/AppServiceProvider.php 의 코드 일부를 나타낸다. 중간에 표시된 // ... 은 기존과 같은 코드를 생략한 것이다.

// 코드 ii-1 app/Providers/AppServiceProvider.php

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton(Optimus::class, function () {
            return new Optimus(182961291, 1384265379, 30817169);
        });

        // ...
    }
}
i-3. 장기지원 버전(LTS, Long Term Support)_ 라라벨 5.1은 장기지원 버전이다(2015년 6월에 공개). 라라벨의 장기지원 정책은 버그 수정 2년, 보안 패치 3년이다.

results matching ""

    No results matching ""