PHP: MVC(Model, View, Controller)

MVC(Model, View, Controller) 모델, 뷰, 컨트롤러로 분리하는 이 아키텍쳐는 많은 프레임워크에서 사용되는 개념이다. 모델은 코드상 어플리케이션에서 사용되는 데이터인 데이터베이스를 클래스화 시켜놓은 것이라고 볼 수 있다. 뷰는 말 그대로 보여주기만 한다. 마지막으로 컨트롤러는 모델과 소통하여 뷰에게 현재의 상태를 알려주게 되는 것이다. 물론 위의 설명이 정확한 것이라고 볼 수는 없겠지만, 대체로 모델은 '무엇' 을 어플리케이션에게 제공(대체로 데이터)할 것이며, 컨트롤러는 '어떻게' 처리할 것인지에 대한 것이라고 보면 좋겠다. 이를 코드로 한정지어 이해할 필요는 없다. 이를테면 위에서 모델은 '클래스화 시켜 놓은 것' 이라고 했지만, 그것은 단지 코드에서일 뿐이다. 모델 우리가 블로그..

PHP 7+ 핸드북 목차 정리

PHP 7+ 핸드북 해당 포스팅은 PHP 7+ 핸드북의 목차를 정리하기 위해 작성되었습니다. 물론 카테고리에서 볼 수 있겠지만, 주제별로 나눠 놓으면 조금 더 좋을 것 같았습니다. 현재 PHP 7+ 핸드북은 완성에 가까우며, 추가적인 내용으로 포스팅 할 계획은 아직 없습니다. PHP를 사랑하는 개발자로서 PHP 7+ 로 구성된 PHP 공식 매뉴얼은 내용이 썩 알차지 못하기 때문에 글을 작성하게 되었습니다. 기본 매뉴얼이 영문인 것도 어렵게 하지만, 한글버전이 정상적으로 갱신이 되어있지 않습니다. 이 글은 현재 PHP 7.4 를 기준으로 하며 PHP 7+ 핸드북은 되도록 핵심적인 내용만 전달하고자 하고, 핸드북이기 때문에 각각의 내용이 그렇게 길지 않습니다. 언어 레퍼런스 기초 문법 PHP: 기본 문법 P..

PHP: 파일 업로드와 다운로드

파일 업로드 파일을 업로드하는 방법은 아주 간단하다. 따로 모듈을 사용할 필요 없이 자체 내장 함수만으로도 업로드를 처리할 수 있다. 물론, 이부분도 보안을 처리해주어야 할 것들이 있다. 할 일이 그렇게 많지는 않으므로 같이 언급하고자 한다. 폼 아래의 폼은 파일을 업로드 위해 작성한 폼이다 속성 부분에 있는 entype="multipart/form-data" 부분이 있어야 하므로 폼을 작성할 때는 이점을 꼭 확인해야한다. POST 요청을 하는 것도 잊지 말자. $_FILES 이 배열은 슈퍼 글로벌 변수로써 프론트에서 요청한 파일 정보가 담겨있으며, 키값은 폼에서 보이는 것처럼 uploads 이다. 이것은 2차원 배열이기 때문에 해당 값안에는 또 다시 배열이 담겨있으며 파일의 이름과 같은 정보가 담겨있다..

PHP: 데이터베이스 (MySQLi, PDO)

데이터베이스 데이터베이스를 사용하는 일은 웹 어플리케이션을 작성한다면 대부분 있는 일이기에 이 부분을 빼놓을 수는 없다. PHP도 물론 오라클이나 MS-SQL 같은 다양한 데이터베이스에 연결할 수 있으나, 가장 많이 사용하는 것이 아무래도 MySQL 이기에 이부분을 중점으로 이야기하고자 한다. 또한 데이터베이스 관련 함수는 실무에서도 조차 올바르지 못한 방법으로 사용되어 해킹에 노출되고 있기 때문에 바르게 익혀둘 필요가 있다. MySQLi 레거시 프로젝트에는 mysql_ 로 시작하는 비교적 오래된 함수가 사용된 것을 볼 수 있는데, 이는 문제가 있어 mysqli_ 로 대체할 것을 권장하고 있다. mysqli 조차도 요즘에 쓸만한 함수도 아니고, API 수준에서 바라보자면 상당히 로우한 수준이기에 그다지 ..

PHP: 쿠키와 세션

쿠키 쿠키는 브라우저에 저장되는 정보로 Key-Value 쌍으로 구성되어 있고, 유효기간을 가지고 있다. 브라우저에 저장할 수 있는 스토리지는 쿠키 말고도 로컬 스토리지와 세션 스토리지가 있는데, 쿠키 이외에는 서버에서 직접적으로 접근할 수는 없다. PHP 에서는 $_COOKIE 글로벌 변수를 통해 접근할 수 있기 때문에 별도의 설정없이도 접근할 수 있다. 참고로 쿠키에 중요한 정보를 저장해서는 안 된다. 정말로 중요하다면 세션과 같은 서버 저장소에 저장해야 한다. setcookie(string key, [ string $value = "" [, int $expires = 0 [ ... ]]]): bool 쿠키를 지정하여 Set-Cookie 헤더에 넣을 때는 setcookie 함수를 쓴다. 제목에는 일부..