언어에 애정을 가지려면... 그 언어에 대해서 잘 알아야 한다고 생각한다..
( 문법 말고... ) ( 진짜 그 언어에 대해서... )
원래 PHP의 약자는 Personal Home Page Tools 였음. 그 말대로 진짜 자기 페이지 만들때 쉽게 쓰라고 나온거라서 문법이 쉬웠다고 들음. 지금은 PHP : Hypertext Preprocessor의 재귀약자를 쓴다고 한다. 하이퍼텍스트 전처리기
근데 php를 검색해보면, 다른 언어와는 다르게 욕이 되게 많다. (?)
그래서 나도 php가 뭐하는 언어인지는 대충 알고 있었지만 (next.js가 사실 php랑 비스무리한 역할이라고 들었다),
욕 먹는 언어라는 건 확실히 알고 있었다.
근데 tiobe 2024를 보면 php는 꽤 상위에 있다.
매년 개발자들이 가장 배우고 싶어하는 언어! Rust! ( 아마 10년 후에도 가장 배우고 싶어하는 언어일 수도 있다 )
보다도 높다.
전세계 웹사이트의 43%, 전체 CMS 중 64.2%가 워드프레스로 제작되어있는데 이 워드프레스가 PHP로 만들어져 있다.
우리가 검색할 때 많이 쓰곤하는 디시인사이드도 php로 빌드되었다.
( 난 광고를 제외하고 검색할 때 "{$검색어}디시" 로 검색하곤 한다.
요즘 많이 쓰는 슬랙 slack도 그렇고
NordVPN
수강신청할 때 많이 쓰는 네이비즘 등이 php로 빌드되었다.
회사에서 쓸 일이 있어서 소스코드를 끄적거리며 배운지 며칠 되었지만....
읭?! 진짜 난 좋다고 생각했다. 문법이 정말 간결하고, 직관적이고 파이썬 + 자바스크립트 같은 느낌이다.
변수선언하는건 파이썬 같고, 나머지는 자바스크립트 같다.
아예 자바스크립트 쓰고 싶으면
echo "<?php echo"<script> </script>"?> 해서 넣으면 되고
은근히 보안에 대한 메서드들도 많다. 공부하면서 계속 내가 들은거랑 실제는 다르구나 라는 걸 계속 느꼈다.
아 근데 php 자체에 대해서 알아보는 글이었지..
더 알아보자.
- perl 언어의 영향을 많이 받았다고 한다.
1. $변수 라던지
2. 배열이 연관배열로 작동한다던지 ( 키 - 값 )
3. 문자열끼리 결합할 때 점 . 연산자로 결합한다던지 ( +로 문자결합 하지 않는다. +는 숫자에만 )
- 큰 특징 중 무상태성이 있다.
1. HTTP 프로토콜 같이 상태를 유지하지 않는다.
2. php 웹서버에 요청을 하면, 해당 스크립트를 실행한 뒤 완전히 종료되고,
그 다음 새 요청이 들어오면 처음부터 다시 시작한다.
3. 그래서 php에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날때까지만 유지된다.
4. 그래서 장단점이 있는데
장점 : 메모리 관리가 쉬움, 사용자가 잘못된 입력을 해서 오류가 났을 때 개별적으로 처리해서 안전
단점 : 상태 유지가 안되서 DB 연결 풀들을 만들어 놓을 수가 없음
- 다른 스크립트 언어와 다르게 런타임 중에 타입을 체크한다. php 7이후에는 달라졌다고 한다.
- <?php ...?> 써라 <?...?> 쓰지마라.
- 7.4 이하 버전에서는 정의되지 않은 변수를 사용할 수 있었는데 이제 쓰지마라.
- 오류와 예외처리가 다른언어와 다르게 좀 유별나다.
그렇지만 초기 세팅만 해준다면 JS와 거의 동일한 로직으로 개발할 수 있는 듯 하다.
- 주요 프레임워크로는 라라벨과 CI (code igniter)가 있는데 리액트 경험자로서 디렉터리 구조가 굉장히 현란하다.
(정신 잃을 뻔..)
- 모던 PHP라는 말이 있기는 하나 아직까지 제대로 된 디자인 패턴이나 프레임워크가 확립되지 않았다.
- PHP8부터는 인터프리터에 JIT을 도입하여 JIT 구동 여부에 따라서 7.4 대비 2배의 성능향상이 있다.
뭐 볼 때마다 추가하겠음!
'Language > php' 카테고리의 다른 글
php 호스팅 후에 404 처리 feat chatgpt (2) | 2024.09.19 |
---|---|
post restful api / 프리플라이트 / 왜 배포할 때 모든 도메인에서의 요청을 다 받으면 안될까 (0) | 2024.09.19 |
inc 파일 ... 대신에? (1) | 2024.09.12 |
PDO를 활용한 데이터베이스 연동 (2) | 2024.09.11 |
간단한 프로파일링 예시 (0) | 2024.09.11 |