서버 사이드에서 자주 사용하는 언어
브라우저의 요청 HTML 문서에 서버 사이드 스크립트 언어의 코드가 포함되어 있으면, 서버는 이 부분을 처리하고 결과를 브라우저로 반환.
동적 웹 페이지:
서버에 미리 저장된 파일이 아닌 서버에 있는 데이터들을 서버 사이드 스크립트 언어로 가공하여 생성되는 페이지
PHP 의 특징
1. 대부분의 웹 서버에서 지원
1. 작성해야하는 코드의 양이 적다(?)
1. 텍스트 처리에 특화 - HTML 문서 처리에 적합(?)
PHP 의 단점
1. 간단한 사이트 제작을 위한 언어로써 복잡한 사이트에 효율이 떨어진다.
1. 보안에 안전하지 않다.
버전별 주요 특징
5 -> 객체 지향 프로그래밍의 개념이 많이 추가
5.3 -> 네임스페이스가 추가
5.4 -> 단일 상속의 한계를 없앤 트레이트 개념 추가
7 -> 2배 이상의 속도 향상 및 익명 클래스 추가
공식 사이트
PHP: Hypertext Preprocessor
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
www.php.net
웹 프로그래밍 언어
1. PHP (리눅스/윈도우, 아파치... , 오픈소스, 빠름, 이식성 : 보통)
2. JSP (리눅스/윈도우, 톰캣 제우스... , 오라클, 느림, 좋음)
3. ASP.NET (윈도우, I1S, 마소, 보통, 나쁨)
PHP 동작원리
1. 웹페이지 요청 > 스크립트 실행요청 > DB 작업 > 작업 결과 반환 > 페이지 렌더링
PHP 코드 영역
1. 권장스타일 : <?php ... ?>
2. HTML 자바스크립트 스타일 : <script language = "php"> ... </script>
3. SGML : <? ... ?>
4. ASP : <% ... %>
PHP 문법
// 기본
<?php
echo "php에 어서오십쇼";
?>
// 자동세미콜론 장착기능
<?php
echo "php에 어서오십쇼"
?>
// 종료 태그 생략 (가동석 떨어지고 예상치 못한 이슈 발생)
<?php
echo "php에 어서오십쇼";
// echo, Echo, ECHO 다 같은 동작, print() 와 같은 기능
변수 선언
$변수명 = 초기값;
자바나 C 처럼 타입 명시 하지 않음 -> 대입 값에 따라 자동 타입 결정
변수 생성 규칙
1. 영문 대소문자, 숫자, 언더스코어
2. 숫자로 시작 X
3. 공백 X
4. $this 사용 불가
5. 대소문자 구분
$var = 111;
echo "{$var}";
처럼 중괄호 {} 로 변수를 감싸 명시해야함 -> 뒤에 다른 문자열이 오게 되면 정확히 인식 X
변수의 초기화
PHP에서는 반드시 변수으 선언과 동시에 값을 초기화할 필요가 없음 -> 자동초기화
// 선언되지 않은 변수의 기본값
var_dump($var); // NULL
// 초기화되지 않은 불리언(boolean) 타입 변수의 기본값
echo $bool ? "true<br>" : "false<br>"; // false
// 초기화되지 않은 정수(integer) 타입 변수의 기본값
$int += 10; var_dump($int); // 0 + 10 = 10
// 초기화되지 않은 실수(float) 타입 변수의 기본값
$flt += 3.14; var_dump($flt); // 0.0 + 3.14 = 3.14
// 초기화되지 않은 문자열(string) 타입 변수의 기본값
$str .= "프로그래밍"; var_dump($str); // ""."프로그래밍" = "프로그래밍"
// 초기화되지 않은 배열(array) 타입 변수의 기본값
$arr[2] = "2번째 배열 요소"; var_dump($arr); // array(1) { [2]=> string(21) "2번째 배열 요소" }
지역변수
함수 내부에서만 사용가능
전역변수
함수 밖에서 선언된 변수 global 키워드 사용
$var = 10; // 전역 변수 선언
function varFunc() {
echo "함수 내부에서 호출한 전역 변수 var의 값은 {$var}입니다.<br>"; // 값이 안뜸
global $var; // 전역 변수를 명시
echo "함수 내부에서 호출한 전역 변수 var의 값은 {$var}입니다.<br>";
}
varFunc();
echo "함수 밖에서 호출한 전역 변수 var의 값은 {$var}입니다."; // 에러
PHP는 모든 전역 변수를 $GLOBALS 배열에 저장, 인덱스로 변수의 이름을 사용하여 접근
$var = 111;
function varFun() {
echo "변수 사용해 봄 {$GLOBALS['var']}";
}
슈퍼 글로벌
1. $GLOBALS
2. $_SERVER
3. $_GET
4. $_POST
5. $_FILES
6. $_COOKIE
7. $_SESSION
8. $_REQUEST
9. $_ENV
정적변수
static 키워드로 선언한 변수 -> 함수 내부에서 선언된 변수는 호출이 종료되도 메모리에서 사리지지 않음, 함수 내부에서 접근가능
function cnt() {
static $cnt = 0;
echo "호출 해볼까요? cnt 는? {$cnt} 입니다.";
$cnt++;
}
cnt();
cnt();
cnt();
// 호출 해볼까요? cnt 는? 0 입니다.
// 호출 해볼까요? cnt 는? 1 입니다.
// 호출 해볼까요? cnt 는? 2 입니다.
상수
변수와 같지만 한번 선언되면, 스크립트가 실행되는 동안 그 데이터를 변경하거나 해제 불가능
define() 함수
define(상수이름, 상숫값, 대소문자구분여부)
//대소문자 구분 여부는 boolean, 디폴트는 false
define("PHP", "내가 바로 PHP");
echo PHP; // 내가 바로 PHP
echo php; // php
define("PHP", "내가 바로 PHP", true);
echo PHP; // 내가 바로 PHP
echo Php; // 내가 바로 PHP
마법 상수