PHP 7+ 프로그래밍
기초 문법부터 내장 함수, 웹 보안, 게시판 만들기까지 PHP 언어를 시작하는 분들을 위해 바이블이 될 수 있게 만들어보고자 하는 마음으로 이번 강좌를 만들어보았습니다.
입문자를 위해 준비한
[웹 개발, 프로그래밍 언어] 강의입니다.
이런 걸
배워요!
PHP 7+ 기초문법
PHP 에서 사용하는 다양한 내장함수들
PHP 의 웹 보안 요소들
PHP 로 회원제 게시판 만들기
PHP 레거시 프로젝트 탈출
PHP 7+ 프로그래밍
기초 문법부터 내장 함수, 웹 보안, 게시판 만들기까지 입문과 초급단계에서 PHP 언어를 시작하는 분들을 위해 바이블이 될 수 있게 만들어보고자 하는 마음으로 이번 강좌를 만들어보았습니다.
커리큘럼
이번 강좌에서는 PHP 프로그래밍을 기초 문법부터 시작하여 내장 함수, 웹 보안, 게시판 만들기까지 웹 개발에 있어서 기초가 될 수 있는 부분을 이야기합니다. 기존에 있던 'PHP 7+ 프로그래밍' 강좌에서 다루지 않았던 여러 내장 함수들이나 게시판에서 단순 구현 뿐만이 아닌 함수화를 통해 코드의 품질 향상까지 도모할 수 있도록 구성해 보았습니다.
꼭 알아야 할 PHP 기초 문법
PHP 7+ 버전에 해당하는 기본적인 문법을 익힙니다. 해당 강좌는 기본적으로 PHP 7.2 버전을 기준으로 하나 PHP 7.4 버전에 등장한 Arrow Function, Spread Operator in Array 도 커버할 수 있도록 구성하였습니다. 따라서 강의를 천천히 따라오다보면 강의가 제작된 시점으로 최신버전인 PHP 7.4 버전까지 익힐 수 있습니다.
많이 사용하는 PHP 내장 함수들
String, Password Hashing 등 PHP 프로그래밍을 하면서 꼭 알아야 할 내장 함수에 대해 배웁니다. 내용이 많아 보일 수 있지만, 게시판 만들기에서 상당 수 사용하게 됩니다. 다만 단순하게 나열하는 방식으로 진행되기 때문에 지루할 수 있습니다. 따라서 게시판 만들기를 먼저 진행하다가 내장 함수 파트를 보는 것도 한 가지 방법입니다.
*다른 챕터보다 내장 함수에서 유달리 다수의 중도포기가 발생합니다. 레퍼런스 방식으로 진행되므로 재미없기 때문입니다. 전부 다 하려고 하지 마시고, 해당 기능이 필요하다고 생각되는 때에 수강하는 것이 바람직합니다.
보안을 잊지 마십시오.
Session, XSS 등 웹 보안에 대해 익힙니다. PHP 는 타 언어에 비해 진입 장벽이 다소 낮기 때문에 오히려 보안과 같은 사항이 지켜지지 않는 경우가 많습니다. 이는 웹 어플리케이션 작성에 있어서 문제가 될 수 있으며 우리가 설령 보안 전문가는 아니라고 할 지라도 기본적인 보안 사항은 지켜줄 필요가 있습니다.
결국, 게시판을 만들게 되어 있습니다.
레거시 프로젝트로 게시판을 만듭니다. 백지에서 index.php 를 작성하는 것을 시작으로 프로젝트가 진행됩니다. 이러한 게시판 프로젝트가 현재 프레임워크 위주로 개발되어 돌아가는 웹 어플리케이션 세계에 있어서 맞지 않을 수 있습니다. 하지만 PHP 의 프레임워크인 라라벨을 조금이라도 이해하기 위해서는 레거시로 프로젝트를 작성해볼 필요가 있으며, 놀랍게도 현장에는 레거시로 작성된 PHP 4, PHP 5 어플리케이션 또한 많습니다.
언제까지, 레거시입니까?
레거시로 작성한 게시판 프로젝트를 '어떤 아키텍쳐' 를 묘사하며 비슷하게 따라합니다. 객체지향으로 구현한 '진짜' 는 아니기에 언급하지 않습니다. 하지만 현재 존재하는 코드를 함수화 함으로써 코드가 극적으로 변화하는 모습을 볼 수 있습니다. 객체지향으로 구현해보는 것은 『PHP 7+ 프로그래밍: 객체지향』 에서 이야기 할 예정입니다.
강의를 듣기 전에 필요한 것들
개발 서버는 빌트인 내장 서버를 사용하지만, 필요에 따라 WAMP와 같은 도구를 사용하거나, PHP 매뉴얼을 참고해주세요.
- PHP 7.4.21 TS(Thread Safe) (64bit)
- XDebug 3.0.4 TS (64bit)
- 코드 편집기는 VSCode(Visual Studio Code)를 사용합니다.
예제코드
이 강좌의 예제코드는 깃허브 레포지토리에서 찾을 수 있습니다. 프론트엔드에 UIkit CSS Framework 와 텍스트 에디터로 CKEditor 5 를 사용합니다.
Q&A
2023년 07월 24일부터 개인적인 사유로 강의에 대한 질문을 받지 않고 있습니다. 하지만 이미 수년간 작성된 질의응답은 살펴볼 수 있습니다. 커뮤니티에서 질문을 찾아보실 것을 권합니다.
- php.ini: https://www.inflearn.com/questions/27056
- routes 설정: https://www.inflearn.com/questions/27766
- image: https://www.inflearn.com/questions/27903
- 세션과 쿠키에 대해 질문이 있는데요: https://www.inflearn.com/questions/31619
- Call to undefined function mysqli_connect() 에러: https://www.inflearn.com/questions/39965
- Functional PHP: https://www.inflearn.com/questions/92871
- 개발 환경 설정하기: https://www.inflearn.com/questions/76353
- 디버깅 하는 방법 알려주세요: https://www.inflearn.com/questions/89654
- assert 테스트를 많이 사용하지 않는 이유: https://www.inflearn.com/questions/325968
공식문서 & 서적
- PHP Manual: http://docs.php.net/manual/en/index.php
- PHP Wiki: https://wiki.php.net/
- Laravel Framework: https://laravel.com/
- WAMP: https://bitnami.com/stack/wamp/installer
- 러닝 PHP: https://book.naver.com/bookdb/book_detail.nhn?bid=11823282
Q. 이 강좌 이후에는 어떤 것을 공부하면 좋을까요?
A. 객체지향 파트를 반드시 공부해야 합니다. 자료는 PHP 문서를 보는 것이 그나마 낫습니다. 물론, PHP 는 함수형 프로그래밍을 할 수도 있으므로 그것을 알아보는 것도 좋습니다. 그 외에 PHP Coding Stadnard, PSR(PHP Standard Recommendation) 등을 알아봐야 합니다. 한 가지 확실한 것은 객체지향을 공부하기 이전에 라라벨 프레임워크로 넘어가는 것은 지양하는 것이 좋습니다.
이 강좌의 다음 강좌는 『PHP 7+ 프로그래밍: 객체지향』입니다. 이번 강좌에서 함수에 대한 이야기를 주로 했다면, 객체지향에서는 클래스와 객체에 대한 이야기를 주로하고, 그 뿐만 아니라 패키지매니저 등 조금 더 깊은 내용을 살펴봅니다.
2020년 06월 09일 『PHP 7+ 프로그래밍: 객체지향』 강의가 공개되었습니다.
이런 분들께
추천드려요!
학습 대상은
누구일까요?
PHP 를 배워보고 싶으신 분
PHP 로 웹 서비스를 구축해보고 싶으신 분
PHP 를 확실하게 알아보고 싶으신 분
커리큘럼
전체
71개 ∙ 15시간 33분
03 - 자료형 (Types) (1)
11:22
04 - 자료형 (Types) (2)
15:21
05 - 변수 (Variables)
13:08
06 - 상수 (Constants)
04:22
18 - Error Handling
10:30
19 - Strings (1)
22:38
20 - Strings (2)
21:55
21 - Hash
09:26
23 - PCRE
22:54
24 - Math
07:41
25 - CSPRNG
03:38
26 - Array (1)
17:04
27 - Array (2)
06:33
29 - Filter
17:43
31 - Date
15:52
32 - Network
11:25
33 - Sessions
14:18
34 - URLs
07:55
35 - cURL
08:46
36 - JSON
02:57
37 - Directory
06:44
38 - Filesystem (1)
23:50
39 - Filesystem (2)
08:43
40 - Streams (1)
13:33
41 - Streams (2)
11:37
42 - Readline
04:20
43 - Output Control
05:26
45 - MySQLi
21:53
마지막 업데이트일: 2021년 07월 03일