서브메뉴

본문

실전 PHP 웹 프로그래밍 (라라벨로 배우는)
실전 PHP 웹 프로그래밍 (라라벨로 배우는)
저자 : 김주원
출판사 : 제이펍
출판년 : 2016
정가 : 30000, ISBN : 9791185890623

책소개


입문에서 중급까지, 한 권으로 배우는 단계별 라라벨 학습!

PHP 프로그래밍 언어로 작성된 라라벨은 웹 프레임워크뿐만 아니라 개발 환경, 서버 프로비전, 코드 배포까지 웹 서비스 개발에 필요한 모든 도구를 제공한다. 그리고 풀 스택(full stack)과 데브옵스(DevOps)를 지향하는 웹 개발자가 알아야 할 기획, UI와 사용자 경험, 데이터 모델링, 비즈니스 로직, HTTP 프로토콜, 서버 준비 및 운영 등 웹 프로그래머가 갖추어야 할 다양한 소양을 쌓을 수 있을 것이다.

1부에서는 라라벨에 입문하기 위한 기본 스킬을 소개한다. 2부에서 4부까지는 마크다운 뷰어, 포럼, RESTful API 서비스를 직접 만들면서 중급자로 도약할 수 있도록 도와준다. 5부에서는 개발한 웹 서비스를 운영 서버에 배포하는 방법을 다루며, 마지막 부록에서는 이 책을 학습하기 위한 개발 환경 준비와 간단한 PHP 문법, 객체 지향 프로그래밍을 소개한다.

목차


PART 1 라라벨 입문 _1
CHAPTER 01 라라벨 설치 _ 2
1.1 새로운 라라벨 프로젝트 만들기 _ 2
1.2 라라벨 프로젝트 구조 _ 4
1.3 라라벨 작동 원리 _ 7
1.4 버전 관리 _ 8

CHAPTER 02 전역 환경 설정 _ 9
2.1 dotenv 파일이 하는 일 _ 9
2.2 APP 환경 설정 _ 11
2.3 마치며 _ 12

CHAPTER 03 라우팅 _ 13
3.1 URL _ 13
3.2 라우팅 만들기 _ 16
3.3 URL 파라미터 _ 18
3.4 라우트 이름 _ 19
3.5 마치며 _ 20

CHAPTER 04 뷰와 데이터 바인딩 _ 21
4.1 뷰 반환 _ 21
4.2 데이터 바인딩 _ 22
4.3 마치며 _ 23

CHAPTER 05 블레이드 _ 24
5.1 변수를 이용한 문자열 보간 _ 25
5.2 주석 _ 25
5.3 제어 구조 _ 26
5.4 템플릿 상속 _ 28
5.5 조각 뷰 삽입 _ 31
5.6 마치며 _ 33

CHAPTER 06 데이터베이스와 모델 _ 34
6.1 데이터베이스 준비 _ 35
6.2 REPL _ 36
6.3 데이터베이스 쿼리 _ 37
6.4 쿼리 빌더 _ 40
6.5 엘로퀀트 ORM _ 43
6.6 마치며 _ 49

CHAPTER 07 데이터베이스 마이그레이션 _ 50
7.1 마이그레이션 만들기 _ 51
7.2 마이그레이션 실행 _ 55
7.3 롤백 _ 56
7.4 열 추가 _ 57
7.5 초기화 및 새로고침 _ 58
7.6 마치며 _ 59

CHAPTER 08 컨트롤러 _ 60
8.1 컨트롤러 만들기 _ 60
8.2 RESTful 라우트와 컨트롤러 _ 61
8.3 마치며 _ 70

CHAPTER 09 사용자 인증 _ 71
9.1 HTTP의 무상태 특성 _ 71
9.2 기본기 다지기 _ 73
9.3 라라벨 내장 사용자 인증 _ 79
9.4 마치며 _ 81

CHAPTER 10 엘로퀀트 ORM _ 82
10.1 일대다 관계 _ 82
10.2 다대다 관계 연결 _ 86
10.3 마치며 _ 91

CHAPTER 11 데이터베이스 시딩 _ 92
11.1 시더 만들기 _ 92
11.2 모델 팩토리 _ 93
11.3 마스터 시더 _ 97
11.4 마이그레이션과 시딩 _ 99
11.5 마치며 _ 99

CHAPTER 12 즉시 로드와 페이징 _ 100
12.1 즉시 로드 _ 100
12.2 페이징 _ 104
12.3 마치며 _ 106

CHAPTER 13 입력값 유효성 검사 _ 107
13.1 유효성 검사 기본기 _ 108
13.2 트레이트의 메서드 이용 _ 114
13.3 폼 리퀘스트 클래스 이용 _ 115
13.4 마치며 _ 117

CHAPTER 14 이벤트 시스템 _ 118
14.1 기본기 다지기 _ 119
14.2 이벤트 레지스트리 _ 120
14.3 이벤트 리스너 클래스 _ 121
14.4 이벤트 클래스 _ 122
14.5 실용적인 이벤트 시스템 _ 124
14.6 라라벨 내장 이벤트 채널 _ 126
14.7 마치며 _ 129

CHAPTER 15 예외 처리와 디버깅 _ 130
15.1 전역 예외 처리기 _ 130
15.2 실용적인 예외 처리 _ 132
15.3 디버깅 _ 136
15.4 디버깅 방법 _ 140
15.5 마치며 _ 143

CHAPTER 16 이메일 보내기 _ 144
16.1 지메일로 메일 보내기 _ 145
16.2 메일건으로 메일 보내기 _ 147
16.3 심화 학습 _ 150
16.4 테스트 환경 _ 153
16.5 마치며 _ 153

CHAPTER 17 컴포저 _ 154
17.1 컴포저란? _ 155
17.2 로컬 컴포넌트 레지스트리 둘러보기 _ 156
17.3 컴포넌트 가져오기 실습 I _ 158
17.4 컴포넌트 가져오기 실습 II _ 160
17.5 install? update? _ 164
17.6 문제 해결 _ 164
17.7 오토로드 _ 165
17.8 좋은 컴포넌트 찾기 _ 166
17.9 마치며 _ 167

PART 2 실전 프로젝트 I - 마크다운 뷰어 _169
CHAPTER 18 모델 _ 170
18.1 파일시스템 _ 170
18.2 모델 만들기 _ 171
18.3 테스트 _ 173
18.4 예외 처리 _ 174
18.5 마치며 _ 175

CHAPTER 19 컨트롤러와 도우미 함수 _ 176
19.1 사용자 정의 도우미 함수 _ 176
19.2 컨트롤러 _ 177
19.3 뷰 _ 178
19.4 마치며 _ 180

CHAPTER 20 다듬질 _ 181
20.1 서버 측 캐싱 _ 181
20.2 이미지 응답 _ 183
20.3 클라이언트 측 이미지 캐싱 _ 187
20.4 마치며 _ 191

CHAPTER 21 엘릭서와 프런트엔드 _ 192
21.1 필요 프런트엔드 리소스 _ 192
21.2 필요 도구 설치 _ 193
21.3 엘릭서 _ 194
21.4 빌드 스크립트 작성 _ 196
21.5 활용 사례 _ 201 21.6 마치며 _ 204

PART 3 실전 프로젝트 II - 포럼 _205
CHAPTER 22 계획과 준비 _ 206
22.1 기능 요구 사항 목록 _ 206
22.2 데이터베이스 모델링 _ 207
22.3 프로젝트 준비 _ 209
22.4 마스터 레이아웃 _ 210
22.5 마치며 _ 213

CHAPTER 23 사용자 인증 재구성 _ 214
23.1 라우팅 정의 _ 214
23.2 컨트롤러 _ 216
23.3 사용자 등록 구현 _ 216
23.4 사용자 로그인 구현 _ 225
23.5 비밀번호 바꾸기 구현 _ 229
23.6 마스터 레이아웃 _ 234
23.7 마치며 _ 234

CHAPTER 24 소셜 로그인 _ 236
24.1 소셜라이트 컴포넌트 _ 236
24.2 작동 원리 _ 237
24.3 깃허브 설정 _ 239
24.4 라우트 정의 _ 241
24.5 마이그레이션 _ 241
24.6 로그인 처리 로직 _ 242
24.7 네이티브 로그인 처리 수정 _ 245
24.8 소셜 로그인 링크 _ 247
24.9 다듬질 _ 248
24.10 마치며 _ 249

CHAPTER 25 아티클 기능 구현 _ 250
25.1 라우트 모델 바인딩 _ 250
25.2 글 목록 _ 251
25.3 글 상세 보기 _ 256
25.4 글 수정 _ 257
25.5 글 삭제 _ 260
25.6 인증과 인가 _ 261
25.7 다듬질 _ 264
25.8 마치며 _ 266

CHAPTER 26 태그 기능 구현 _ 267
26.1 태그 데이터 _ 267
26.2 태그 선택 _ 270
26.3 태그 출력 _ 272
26.4 다듬질 _ 276
26.5 마치며 _ 277

CHAPTER 27 파일 첨부 기능 구현 _ 278
27.1 파일 업로드 _ 278
27.2 UI 개선 _ 285
27.3 다듬질 _ 291
27.4 마치며 _ 293

CHAPTER 28 댓글 기능 구현 _ 294
28.1 다형적 다대다 관계 _ 294
28.2 댓글 UI _ 300
28.3 서버 측 구현 _ 305
28.4 투표 기능 _ 309
28.5 마치며 _ 317

CHAPTER 29 다듬질 I _ 319
29.1 아티클 검색, 정렬, 조회 수, 댓글 수 _ 320
29.2 이메일 알림 _ 326
29.3 고아 첨부 파일 청소 _ 330
29.4 댓글 소프트 삭제 _ 334
29.5 모델 쿼리 캐싱 _ 338
29.6 캐시 저장소 변경 _ 343
29.7 마치며 _ 349

CHAPTER 30 다듬질 II _ 350
30.1 다국어 지원 _ 350
30.2 오류 알림 _ 363
30.3 마치며 _ 367

PART 4 실전 프로젝트 III - RESTful API _369
CHAPTER 31 기본기 익히기 _ 370
31.1 RESTful이란? _ 370
31.2 RESTful API 모범 사례 _ 371
31.3 개발 항목 _ 376

CHAPTER 32 구조 설계 _ 377
32.1 HTTP 요청 분기 _ 377
32.2 HTTP 응답 분기 _ 380
32.3 마치며 _ 386

CHAPTER 33 클라이언트 인증 _ 387
33.1 HTTP 기본 인증 _ 388
33.2 JWT 인증 _ 392
33.3 마치며 _ 402

CHAPTER 34 데이터 트랜스폼 _ 404
34.1 트랜스포머 작동 원리 _ 405
34.2 트랜스포머 컴포넌트 _ 408
34.3 컨트롤러 다듬질 _ 413
34.4 다국어 지원 _ 415
34.5 마치며 _ 417

CHAPTER 35 다듬질 I _ 418
35.1 클라이언트 측 캐싱 _ 418
35.2 응답 필드 선택 _ 424
35.3 마치며 _ 425

CHAPTER 36 다듬질 II _ 426
36.1 CORS _ 426
36.2 사용량 제한 _ 429
36.3 리소스 아이디 난독화 _ 434
36.4 마치며 _ 438

PART 5 코드 배포 _439
CHAPTER 37 서버 준비 _ 440
37.1 계정 발급 _ 440
37.2 서버 만들기 _ 441
37.3 서버 접속하기 _ 445
37.4 웹 서버 만들기 _ 447
37.5 마치며 _ 459

CHAPTER 38 코드 배포 _ 461
38.1 엔보이 _ 461
38.2 깃허브 _ 463
38.3 코드 배포 _ 467
38.4 배포 전략과 엔보이 배포 스크립트 _ 470
38.5 마치며 _ 474

APPENDIX 부록 _475
APPENDIX A 운영체제별 개발 환경 준비 _ 476
A.1 코드 에디터 준비 _ 477
A.2 Mac _ 477
A.3 우분투 데스크톱 _ 480
A.4 Windows _ 482

APPENDIX B 속성 PHP 프로그래밍 입문 _ 489
B.1 PHP 스크립트의 작동 원리 _ 489
B.2 PHP 언어 기본 _ 491
B.3 변수와 상수 _ 491
B.4 연산자 _ 493
B.5 데이터 타입 _ 494
B.6 조건문 _ 496
B.7 반복문 _ 498
B.8 함수 _ 499
B.9 클로저 _ 500
B.10 PHP 설명서 _ 502

APPENDIX C 속성 객체 지향 프로그래밍 입문 _ 503
C.1 클래스 _ 503
C.2 생성자 _ 504
C.3 메서드 _ 505
C.4 게터와 세터 _ 506
C.5 캡슐화 _ 507
C.6 상속 _ 508
C.7 추상 클래스 _ 509
C.8 의존성 주입 _ 511
C.9 인터페이스 _ 513
C.10 마치며 _ 515