평점 : 10점 ㅠ
PHP 절차형 기법으로 대충 돌아가는 것은 알았으니까, 다음 언어로 파이썬을 할까. Node.js 를 할까 고민하던 차에... 평점이 괜찮아서 전자책 구입 후, 살펴보는데, 그냥 2~3일 쭉 읽어보고 팁만 취하자는 생각이였다. 다 똑같겠지 뭐.. 이런.
그란데말이죠..... ㅠㅠㅠㅠㅠㅠ
그냥 달라... 완전 달라....
이 책은
본격 PHP 7.x 버전의 문법과 함수 사용.
함수와 템플릿, 객체를 최대한 이용. ( 단순 include, require 정도로 충분하다며 만족했었는데.. )
처음 내가 배우고, 익숙해진 방식 ㅠㅠ
$conn = mysqli_connect('localhost','test','password','dbname') or die();
$sql = "select * from table";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_array($result)){
echo $row[0];
}
// pdo 방식 db 접근 / query
try {
$pdo = new PDO('mysql:host=localhost;dbname=ninja;charset=utf8', 'test', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * FROM `table`';
$result = $pdo->query($sql);
** 반복문
}
}
catch (PDOException $e) {
$title = '오류가 발생했습니다';
$output = '데이터베이스 오류: ' . $e->getMessage() . ', 위치: ' .
$e->getFile() . ':' . $e->getLine();
}
기존 PHP 와 비교하면, 새 언어를 배우는 것 같다.
PHP OOP 방식이나 최신 문법 익히느니, 다른 언어 한다는 의견이 뼈때리게 와 닿았다.
잘 하는 짓인지 모르겠다는 생각도 반반 들면서....
서문에서 저자가 강조한 말 때문에 책을 계속 붙잡게 했다.
( 쉽게 접할 수 없는 훌륭한 지식이 너무나 많았다. )
우리가 배울 것은 PHP가 아니다
이 책은 전적으로 PHP와 MySQL에 중점을 두고 있지만 PHP를 배운다고 생각하는 함정에 빠
지지 말아야 한다. 물론 PHP를 배우긴 한다. 하지만 이 책은 코드를 작성하는 법을 가르치는
수단으로 PHP를 이용할 뿐이다. ( <-- 코딩 교육용으로 파이썬을 선택하는 비율이 늘고 있다는 말과 같지 않나? )
.
.
여러분이 배우게 될 프로그래밍 개념은 앞으로 여러분이 배울 거의 모든 프로그래밍 언어에 적
용할 수 있다. 물론 약간의 차이는 있겠지만 근간을 이루는 개념은 모두 같다.
일단 한 프로그래밍 언어에 능숙해지면 다른 언어도 쉽게 익힐 수 있다. 며칠만 공부하면 일
정한 수준에 이른다. 그러니 이 책을 볼 때 ‘PHP를 배운다’가 아닌 ‘코딩을 배운다’고 생각하기
바란다. 문법보다 개념을 숙지하는 것이 중요하다.
이 책에서 여러 종류의 하마에 대해 미리 경고하겠지만 적용과 확인은 스스로 해봐야 한다. 직
접 뛰어들어 경험하라. 아무 코드라도 작성하라. 처음에는 되는 일이 거의 없겠지만 그 과정에
서 뭔가 얻을 것이다. 시행착오를 겪고 다른 접근 방법을 시도하다 보면 어느 순간 제대로 된
결과를 얻을 수 있다. 자신이 쓸 수 있는 도구의 한계와, 자신이 마주칠 문제를 인지하고 나서
야 프로그램을 설계할 수 있는 법이다
CHAPTER 1 환경 설정
1.1 웹 서버 설치 ............................................................................................................ 27
1.1.1 방법 1 : 개별 소프트웨어 수동 설치 ...................................................................... 28
1.1.2 방법 2 : 통합 설치 ........................................................................................... 29
1.1.3 방법 3 : 가상 서버 ........................................................................................... 29
1.2 OS별 가상 서버 설치 ................................................................................................. 31
1.2.1 윈도우 환경 ..................................................................................................... 31
1.2.2 맥OS 환경 ..................................................................................................... 31
1.2.3 리눅스 환경 ..................................................................................................... 32
1.3 베이그런트 실행 ....................................................................................................... 32
CHAPTER 2 PHP 기본
2.1 기초 문법과 구문 ....................................................................................................... 40
2.2 변수, 연산자, 주석 ...................................................................................................... 43
2.2.1 변수 ............................................................................................................... 43
2.2.2 주석 ............................................................................................................... 44
2.2.3 연산자 ............................................................................................................ 44
2.3 제어문 ..................................................................................................................... 45
2.3.1 if문 ................................................................................................................ 46
2.4 반복문 ..................................................................................................................... 51
2.4.1 for문 .............................................................................................................. 51
2.4.2 while문 .......................................................................................................... 54
2.5 배열 ........................................................................................................................ 59
2.6 사용자 상호작용과 폼 ................................................................................................. 65
2.6.1 링크를 이용한 변수 전달 .................................................................................... 66
2.7 폼 변수 전달 ............................................................................................................. 73
2.7.1 GET vs POST ................................................................................................ 76
2.8 구조화 .................................................................................................................... 76
2.8.1 PHP 템플릿 .................................................................................................... 76
2.8.2 보안 고려 사항 ................................................................................................. 79
2.8.3 다중 템플릿, 단일 컨트롤러 ................................................................................. 82
2.9 마치며 ..................................................................................................................... 85
CHAPTER 3 MySQL
3.1 데이터베이스 ............................................................................................................ 88
3.2 MySQL 워크벤치를 이용한 SQL 쿼리 실행 ................................................................... 89
3.3 데이터베이스 생성 ..................................................................................................... 95
3.4 구조화된 쿼리 언어(SQL) ........................................................................................... 97
3.5 테이블 생성 ............................................................................................................. 99
3.6 데이터 추가 .................................................................................................... 104
3.7 예약어 ................................................................................................................... 109
3.8 데이터 조회 ............................................................................................................ 111
3.9 데이터 수정 ............................................................................................................ 115
3.10 데이터 삭제 .......................................................................................................... 116
3.11 PHP를 통한 쿼리 실행 ........................................................................................... 116
CHAPTER 4 MySQL 데이터와 웹 출력
4.1 개요 ...................................................................................................................... 120
4.2 MySQL 사용자 계정 생성 ......................................................................................... 121
4.3 PHP를 이용한 MySQL 접속 .................................................................................... 125
4.4 객체 지향 프로그래밍 훈련 ........................................................................................ 131
4.4.1 커넥션 설정 ................................................................................................... 133
4.5 PHP를 이용한 SQL 쿼리 전송 ................................................................................. 137
4.6 SELECT 결과 처리 ................................................................................................. 140
4.7 확장성 예측 ............................................................................................................ 148
4.8 데이터 추가 폼 ........................................................................................................ 159
4.9 데이터 삭제 ........................................................................................................... 169
4.10 완성 .................................................................................................................... 176
CHAPTER 5 관계형 데이터베이스 디자인
5.1 테이블 확장 ............................................................................................................ 178
5.2 디자인 원칙 : 엔티티 분리 .......................................................................................... 181
5.3 다중 테이블 SELECT .............................................................................................. 185
5.4 단순 관계 ............................................................................................................... 190
5.5 다대다 관계 ............................................................................................................ 193
5.6 마치며 ................................................................................................................... 196
CHAPTER 6 구조적 프로그래밍
6.1 인클루드 ................................................................................................................ 198
6.1.1 HTML ........................................................................................................ 199
6.1.2 PHP 코드 ..................................................................................................... 201
6.1.3 인클루드 형태 ................................................................................................ 204
6.2 사용자 정의 함수와 라이브러리 .................................................................................. 205
6.2.1 변수 스코프 ................................................................................................... 208
6.3 코드 분리와 함수 재사용 ........................................................................................... 214
6.3.1 쿼리 대체 함수 ............................................................................................... 221
6.3.2 데이터 수정 ................................................................................................... 223
6.3.3 유머 글 수정 페이지 ........................................................................................ 224
6.3.4 삭제 함수 ...................................................................................................... 227
6.3.5 목록 함수 ...................................................................................................... 228
6.4 마치며 ................................................................................................................... 230
CHAPTER 7 함수 고도화
7.1 update() 함수 개선 ................................................................................................. 232
7.1.1 쉼표 제거 ...................................................................................................... 235
7.1.2 insert() 함수 개선 ........................................................................................... 238
7.2 날짜 처리 ............................................................................................................... 242
7.2.1 날짜 출력 ...................................................................................................... 248
7.3 맞춤 연장 ............................................................................................................... 250
7.4 범용 함수 ............................................................................................................... 252
13
7.5 활용 ...................................................................................................................... 257
7.6 중복 코드 ............................................................................................................... 261
7.6.1 등록/수정 페이지 ............................................................................................ 262
7.7 폼 필드 처리 ........................................................................................................... 268
7.8 마치며 .................................................................................................................. 272
CHAPTER 8 객체와 클래스
8.1 클래스 ................................................................................................................... 275
8.2 public과 private .................................................................................................... 279
8.3 객체 ...................................................................................................................... 280
8.4 클래스 변수 ............................................................................................................ 281
8.5 생성자 ................................................................................................................... 288
8.6 타입 힌트 ............................................................................................................... 291
8.7 Private 변수 .......................................................................................................... 293
8.8 DatabaseTable 클래스 사용하기 .............................................................................. 295
8.9 컨트롤러 ............................................................................................................... 300
8.10 Don’t Repeat Yourself 원칙 ................................................................................. 303
8.11 컨트롤러 클래스 .................................................................................................... 304
8.12 단일 진입점 .......................................................................................................... 309
8.13 한 번 더, DRY 원칙 ............................................................................................... 315
8.14 템플릿 변수 .......................................................................................................... 320
8.15 extract 주의 사항 ................................................................................................. 323
CHAPTER 9 프레임워크 구축
9.1 검색 엔진 ............................................................................................................... 329
9.2 범용성 ................................................................................................................... 332
9.3 사용자 등록 ............................................................................................................ 333
9.4 의존성 ................................................................................................................... 338
9.5 URL 재작성 ........................................................................................................... 344
9.6 코드 정리 ............................................................................................................... 348
9.6.1 OOP 원칙 .................................................................................................... 349
9.7 웹사이트 호환 코드 .................................................................................................. 355
9.8 범용성과 특수성 ...................................................................................................... 356
9.8.1 범용 EntryPoint 클래스 .................................................................................. 358
9.9 오토로딩과 네임스페이스 .......................................................................................... 363
9.10 대소문자 .............................................................................................................. 365
9.11 오토로더 구현 ....................................................................................................... 366
9.12 디렉터리 구조 ....................................................................................................... 367
9.13 네임스페이스 ........................................................................................................ 369
9.14 PSR-4와 오토로딩 ............................................................................................... 372
9.15 컴포저 ................................................................................................................. 375
9.16 REST ................................................................................................................. 375
9.17 인터페이스와 의존성 .............................................................................................. 384
9.18 마치며 ................................................................................................................ 387
15
CHAPTER 10 사용자 계정
10.1 메일 주소 검증 ...................................................................................................... 398
10.2 중복 등록 방지 ...................................................................................................... 399
10.3 비밀번호 저장 ....................................................................................................... 403
10.4 마치며 ................................................................................................................. 406
CHAPTER 11 쿠키, 세션, 접근 제어
11.1 쿠키 .................................................................................................................... 410
11.2 PHP 세션 ............................................................................................................ 416
11.2.1 방문 카운터 ................................................................................................. 418
11.3 접근 제어 ............................................................................................................. 419
11.3.1 로그인 ........................................................................................................ 420
11.3.2 페이지 보호 ................................................................................................. 427
11.3.3 인터페이스와 반환 타입 ................................................................................. 431
11.3.4 Authentication 클래스 활용 .......................................................................... 433
11.3.5 로그인 오류 메시지 ....................................................................................... 434
11.4 로그인 폼 ............................................................................................................ 436
11.5 로그아웃 .............................................................................................................. 439
11.5.1 사용자 데이터 연동 ....................................................................................... 441
11.5.2 사용자 권한 ................................................................................................. 444
11.5.3 보안 ........................................................................................................... 446
11.6 마치며 ................................................................................................................. 449
CHAPTER 12 MySQL 관리
12.1 MySQL 데이터베이스 백업 .................................................................................... 453
12.1.1 MySQL 워크벤치 백업 .................................................................................. 453
12.1.2 mysqlpump 백업 ........................................................................................ 455
12.1.3 바이너리 로그 증분 백업 ................................................................................ 457
12.2 MySQL 권한 제어 ............................................................................................... 460
12.2.1 호스트명 ..................................................................................................... 461
12.2.2 비밀번호 분실 .............................................................................................. 463
12.3 인덱스 ................................................................................................................. 465
12.3.1 다중 칼럼 인덱스 .......................................................................................... 469
12.4 외래 키 ................................................................................................................ 471
12.5 마치며 ................................................................................................................. 474
CHAPTER 13 관계
13.1 객체 관계 매퍼 ...................................................................................................... 480
13.1.1 Public 속성 ................................................................................................. 481
13.1.2 엔티티 클래스 메서드 .................................................................................... 482
13.1.3 DatabaseTable 클래스와 엔티티 클래스 ......................................................... 485
13.1.4 Joke 엔티티 객체 ......................................................................................... 492
13.1.5 Joke 엔티티 클래스 ...................................................................................... 495
13.1.6 참조 변수 .................................................................................................... 496
13.1.7 List 컨트롤러 정리 ........................................................................................ 497
13.1.8 정리 ........................................................................................................... 499
13.2 캐싱 .................................................................................................................... 500
13.3 카테고리 .............................................................................................................. 502
13.3.1 목록 페이지 ................................................................................................. 506
13.4 카테고리 관계 구조 ................................................................................................ 508
13.4.1 카테고리 할당 .............................................................................................. 520
13.5 카테고리별 목록 .................................................................................................... 522
13.6 카테고리 해제 ....................................................................................................... 527
13.7 사용자 권한 .......................................................................................................... 531
13.8 권한 관리 폼 ......................................................................................................... 537
13.8.1 사용자 목록 ................................................................................................. 537
13.8.2 권한 설정 페이지 .......................................................................................... 539
13.8.3 권한 데이터 구조 .......................................................................................... 541
13.8.4 대안 ........................................................................................................... 542
13.8.5 이진 데이터 ................................................................................................. 543
13.8.6 비트 연산자 ................................................................................................. 545
13.8.7 권한 검사 .................................................................................................... 546
13.8.8 권한 데이터 저장 .......................................................................................... 548
13.8.9 조인 테이블과 비트 연산자 ............................................................................. 549
13.8.10 마무리 ...................................................................................................... 550
13.8.11 수정/삭제 권한 ........................................................................................... 551
13.9 마치며 ................................................................................................................. 554
CHAPTER 14 콘텐츠 서식과 정규표현식
14.1 정규표현식 ........................................................................................................... 559
14.2 정규표현식 일치 문자열 교체 ................................................................................... 562
14.2.1 텍스트 강조 ................................................................................................. 563
14.2.2 문단 ........................................................................................................... 568
14.2.3 하이퍼링크 .................................................................................................. 570
14.3 서식 변환 클래스 ................................................................................................... 572
14.4 정렬, 제한, 오프셋 ................................................................................................. 576
14.4.1 정렬 ........................................................................................................... 576
14.4.2 LIMIT와 OFFSET ....................................................................................... 582
14.4.3 카테고리별 목록 ........................................................................................... 588
14.5 마치며 ................................................................................................................. 592
14.5.1 다음 단계 .................................................................................................... 593
APPENDIX 부록
A 예제 코드 저장소 ........................................................................................................ 596
B 리눅스 트러블슈팅 ...................................................................................................... 597
찾아보기 ....................................................................................................................... 599
댓글