PHP/4단계 PHP 닌자비법서

챕터6~7 - 구조적 프로그래밍 / 함수 고도화

에혀 2020. 2. 17.

우왕 어렵다.... 절차 지향이 쉽다는 말이 뼈에 사뭇치는구먼.

 

절차형 방식으로 배웠던 생활코딩이나 헤드퍼스트php 에서는 include 문으로 분리해서, 리팩토링하며, 아 뭐 간단하네 였는데.....

 

닌자비법에서는 하.........................

1) public templates includes 디렉토리로 분류 후, include 로 불러들인다.

그리고, 처음 학습한 방식은 페이지 상단에서 db 커넥션 or die() 후, 코드를 작성했는데,

try ~ catch 문을 사용하며, 세부페이지를 템플릿에서 include 사용

 

2) 리팩토링이란게, include 문 정도로 생각했었는데, 온통 함수화다. 분명 깔끔하긴 한데, 우와 이렇게까지 해야되나... ㅠ

함수화하고 그 함수를 재사용할 수 있게 계속 변형해간다. 아 어려워. 챕터6, 7 에서 계속이어진다.

 

7장이 끝나면,

7-8 이번 장은 중복 코드를 제거하고 모든 데이터베이스 테이블에 통용되는 함수를 제작하는 과정을 선보였다. 매우 특정한 상황에서 작동했던 함수가 이제 다양한 상황에 두루 사용하는 함수로 탈바꿈했다.
범용 함수는 웹사이트를 확장하거나 새로 구축할 때 공통적으로 사용하는 도구며, 유머 글이나 작성자 같은 특정 개념에 얽매이지 않는다. 책, 제품, 블로그 등 분야가 완전히 다른 웹사이트를 모두 범용 함수 라이브러리로 제작할 수 있다. 이제 어려운 부분은 모두 끝났다. 대장장이의 연장처럼 프로그래머만의 도구가 완성됐으니, 이를 무기 삼아 다음 단계로 거침없이 진행할 차례다.

8장에서 객체 이야기하면서, 그 함수를 다시 객체화할꺼 다 안다. ㅠ

우와... 이거 진짜 어렵네.

 

챕터 14 마지막장을 미리 봤다.

 

14.5 마치며
PHP 수련 과정의 마지막 단계가 끝났다.
이번 장에서는 기초적인 정규표현식 지식과
LIMIT, OFFSET 쿼리, 페이지 나누기 기능을 선보였다. 모두 다음 번 웹사이트를 개발할 때 요긴하게 쓰일 것이다.이제 여러분은 실제 웹사이트를 구축할 때 필요한 자질을 모두 갖추었다. 코드가 흐르는 방식대로 사고하고, 프로젝트 코드와 공통 코드의 관심사를 분리할 수 있다.

PHP 프레임워크의 개념과 내부 구조도 이해한다. 지금 심포니Symfony, 젠드Zend, 라라벨Laravel 같은 유명 프레임워크를다뤄도 큰 어려움이 없을 것이다. 코드는 서로 달라도 기본적인 개념과 구조는 여기서 배운 내용에서 크게 벗어나지 않는다.

 

14.5.1 다음 단계
이 책에서 다룬 내용 외에도 자신의 프로젝트와 실무에 활용할 만한 기술이 수두룩하게 많다. 특히 신입 PHP 개발자는 앞으로 더욱 많은 지식을 쌓아야 한다. 다음 단계로 나아가기 전에 여기서 배운 내용을 바탕으로 여러 웹사이트를 만들어보기 바란다. 아무리 기초적인 지식도 단번에 이해하기는 힘들다. 실습을 사용해 다양한 문제를 직접 겪고 극복하는 과정이 필요하다. 모든 지식과 기술을 온전히 자기 것으로 만들려면 적당히 시행착오를 거쳐야 한다.


이 책을 마친 다음 우선적으로 집중할 주제를 꼽으면 다음과 같다.
1 컴포저* : 컴포저는 패키지 관리 도구다. 최근 PHP 프로젝트는 대부분 컴포저 패키지로 제작한다. 다른 개발
자의 코드를 자신의 프로젝트에 쓰려면 반드시 컴포저 사용법을 배워야 한다.
2 프레임워크 : 프레임워크는 다른 개발자들의 모범적인 코드가 담긴 교과서와 같다. 가급적 자주 참고하고 직
접 써보자.
2018년 현재 초심자에게 추천하기 좋은 프레임워크는 라라벨과 심포니다. 몇 년 뒤면 상황이 바
뀔지도 모른다.
3 PHPUnit** : 테스트 주도 개발 방법론은 이미 주요한 PHP 개발 기법으로 자리잡았다. TDD를 제대로 경
험하면 그 매력에서 벗어나기 힘들다. 프로그램의 모든 요소가
TDD를 사용해 정돈되고 간결해진다. 웹사이
트를 가동하고, 폼을 채우고, 데이터베이스에 레코드를 추가하지 않아도 테스트 스크립트를 실행해 모든 기능
을 점검할 수 있다.
4 *** : 깃은 현대 소프트웨어 개발자에게 가장 필수적인 도구다. 이미 수많은 개발자가 깃허브(GitHub) 사이
트를 사용해 서로의 코드를 공유하고 협업한다. 깃허브를 이용하려면 먼저 깃 사용법을 숙지해야 한다. 깃의
가장 기본적인 기능인 형상 관리만 잘 이용해도 막대한 이점을 누릴 수 있다. 코드를 변경할 때 기존 내용을
옮겨두거나 장문의 주석을 남길 필요가 없다. 모든 변경 사항은 깃이 기록하고 추적한다.


이제 더 이상 덧붙일 내용이 없다. 모던 PHP 웹사이트의 근간을 이루는 기술을 올바르게 이해하고 필수적인 도구를 손에 넣었다. PHP의 정수를 한데 모아 견고한 이론적 기반을 마련했다. 현업 개발자도 인정할만큼 기초를 탄탄하게 다졌다. 스스로를 믿고 자신 있게 다음 단계로 나아가기 바란다. 무엇보다 백문이 불여 일코딩임을 늘 명심하자.

 

이거 최소 3독은 하고, 작성된 템플릿으로 만들어봐야할 것 같다.

내가 배웠던 방식과 비교하면, 이건 정말 새로 공부하는거랑 다를 바가 없네 ㅠ

 

CHAPTER 1 환경 설정
CHAPTER 2 PHP 기본

2.8
구조화 .................................................................................................................... 76
2.8.1 PHP 템플릿 .................................................................................................... 76
2.8.2 보안 고려 사항 ................................................................................................. 79
2.8.3 다중 템플릿, 단일 컨트롤러 ................................................................................. 82
2.9
마치며 ..................................................................................................................... 85

CHAPTER 3 MySQL

CHAPTER 4 MySQL 데이터와 웹 출력
4.4 객체 지향 프로그래밍 훈련 ........................................................................................
131
4.7 확장성 예측 ............................................................................................................ 148

CHAPTER 5 관계형 데이터베이스 디자인

CHAPTER 6 구조적 프로그래밍
6.2 사용자 정의 함수와 라이브러리 .................................................................................. 205
6.2.1 변수 스코프 ................................................................................................... 208
6.3
코드 분리와 함수 재사용 ........................................................................................... 214
6.3.1 쿼리 대체 함수 ............................................................................................... 221


CHAPTER 7 함수 고도화
7.1 update() 함수 개선 ................................................................................................. 232
7.4 범용 함수 ............................................................................................................... 252
7.7 폼 필드 처리 ........................................................................................................... 268
7.8
마치며 .................................................................................................................. 272

 


 

 

CHAPTER 8 객체와 클래스
8.1 클래스 ................................................................................................................... 275
8.2
publicprivate .................................................................................................... 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
Dont 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 LIMITOFFSET ....................................................................................... 582
14.4.3 카테고리별 목록 ........................................................................................... 588
14.5
마치며 ................................................................................................................. 592
14.5.1 다음 단계 .................................................................................................... 593
APPENDIX 부록
A 예제 코드 저장소 ........................................................................................................ 596
B
리눅스 트러블슈팅 ...................................................................................................... 597
찾아보기 ....................................................................................................................... 599

댓글