문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 PHP (문단 편집) == 특징 == PHP는 [[Perl]] 언어의 영향을 많이 받았는데, 변수 이름 앞에 $를 붙이는 것(예: $var), 펄처럼 배열이 연관 배열로 작동하는 것, 문자열끼리 결합할 때 점(.) 연산자로 결합하는 것이 그 예이다. (예: "Hello, " . "world!" = "Hello, world!"). 다른 프로그래밍 언어에서 하던 대로 더하기 기호(+)로 문자열을 결합하려 하면 엉뚱한 결과가 나온다. PHP에서는 +는 오직 숫자 덧셈만 하기 때문이다. 따라서 두 문자열에 +를 사용하면 두 값이 숫자 0 으로 형변환되어 잘못된 결과가 나온다. (예: "Hello, " + "world!" = 0) PHP의 큰 특징 중 하나는 무상태성(Stateless)으로, [[HTTP]] 프로토콜과 마찬가지로 상태를 유지하지 않는 성질이다. PHP 웹 서버에 요청을 하면, 해당 스크립트를 실행한 뒤 완전히 종료하고, 그 다음 새 요청이 들어오면 처음부터 시작하는 방식이다. 이 때문에 PHP에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날 때까지만 유지된다. 이러한 특성으로 인해 메모리 관리가 쉽고, 사용자(브라우저 요청, cli 입력등)가 잘못된 입력을 해서 오류가 났을 때 개별적으로 처리하게 되므로 안전하지만, 상태를 유지할 수 없기에 기본 배포되는 PHP로는 DB 커넥션 풀을 만들 수가 없다.[* 그런데 swoole, 로드러너와 같이 프로세스가 종료되지 않게 실행하는 프로그램을 쓰면 상태가 유지(stateful)되기 때문에 DB 커넥션 풀도 만들 수 있다. 이렇게 할 경우, 기존 PHP 코드를 수정해야 하는 단점이 있으며 앞서 말한 무상태성으로서 가졌던 장점도 사라지게 된다.] PHP 는 다른 스크립트 언어와 달리 실행중에 타입을 체크한다. 타입들이 점차 추가 되었으며 php 7 이후로 declare(strict_types=1) 을 선언하면 강타입으로 작동한다. PHP 파일은 로 이루어진 스크립트 실행 영역이 있다. ... ?>는 권장하지 않는다. 이렇게 줄여 쓰는 방식은 기본적으로 비활성화되어 있으므로 쓰려면 php.ini에서 short_open_tags 설정을 on으로 바꾸어야 한다. 줄여 쓰는 방식이 비활성화되어 있는 이유는 [[XML]]의 xml version="1.0" ?>과 같은 문법과 충돌했기 때문이다. PHP가 처음 나왔을 때는 HTML만 있었기 때문에 줄여 쓰는 방식이 문제가 없었지만, HTML에 XML의 문법을 도입한 XHTML 1.0이 나오면서 충돌이 일어났고, 결국 저 옵션이 기본적으로 꺼져 있도록 변경된 것. 다행히 [[HTML5]]에서는 XML 문법이 빠졌다. 변수 하나만 출력한다면 =$var?> 형태로 줄여 쓸 수도 있다. 원래 short_open_tags 설정값이 off라면 이것도 같이 꺼졌지만, PHP 5.4부터는 short_open_tags 설정값에 상관없이 항상 =$var?> 형태로 쓸 수 있게 되었다. 아주 옛날에는 [[WYSIWYG]] 기반 에디터를 사용할 때 로 이루어진 스크립트 실행 영역을 올바르지 않은 태그로 잘못 인식하는 문제를 회피하기 위해 [* 스크립트의 언어 속성으로 language를 쓰는 것 또한 사실은 비표준이다. 표준대로라면 type으로 쓰는 것이 옳다. HTML4 시절부터 두 가지 형태가 혼용되고 있었는데, HTML5에서 후자가 살아남은 것.] 태그를 사용하기도 했다. 그렇지만 이 태그는 [[JavaScript]]에서 쓰는 것과 혼동될 수 있어서 PHP 7부터 삭제되었다. PHP 위원회는 새 버전의 기능을 RFC 문서로 제안받고, RFC에 올라온 사항들을 찬반 투표에 부쳐 찬성이 과반을 넘길 경우 기능을 추가한다. 레딧, PHP 메일링 리스트 등에서 토론이 이루어진다. [[https://php-rfc-watch.beberlei.de|새 기능 RFC 제안 사항 찬반 투표 진행과 결과를 공개하는 사이트]]. PHP는 [[오픈 소스]]이며 [[포팅]]된 곳이 많아 거의 모든 [[웹 서버]]에서 실행할 수 있다. [[유닉스]]([[리눅스]]), [[윈도우]], [[macOS]] 모두 지원한다. PHP 공식 사이트에서는 소스 코드를 공개하고 있고, [[Linux|리눅스]] 등의 [[유닉스]] 계열 OS에서 컴파일하는 방법을 알려주고 있다. 대부분의 경우 직접 컴파일을 할 필요는 없는데, 유명 리눅스 배포본의 공식 저장소에는 PHP 설치 패키지를 기본으로 제공하기 때문이다. 만약 없다면 [[https://packagist.org/|Packagist]] 같은 패키지 저장소(repository)에서 각 OS의 환경에 맞는 PHP 설치 패키지를 찾을 수 있다. 별도의 저장소를 추가하면 버전도 입맛대로 설치할 수 있다. PHP 5.5 버전부터 64비트 버전이 나왔다. 윈도우용은 PHP 공식 사이트에서 직접 실행 파일로 만들어서 제공한다. 윈도우용의 경우 동작 방식의 차이 때문에 [[인터넷 정보 서비스|IIS]] 및 [[NGINX]]에서 돌리는 PHP는 Non-Thread Safe 버전으로, [[아파치 HTTP 서버|아파치]]에서 돌리는 PHP는 Thread-Safe 버전으로 따로 나온다. 맥 OS에는 이미 설치가 되어 나오는데, 더 최신 버전을 설치하고 싶으면 맥 OS의 패키지 관리자인 Homebrew(홈브루)를 통해서 설치할 수 있다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기