PHP(Hypertext Preprocessor)
PHP는 C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어
특징
장점
1. 주요 운영체제와 대부분의 웹 서버에서 지원
2. 다른 프로그래밍 언어보다 직관적으로 코드를 작성할 수 있어서, 작성해야 하는 코드의 양이 적음
3. 텍스트 처리에 특화되어 있어 HTML 문서 처리에 적합
단점
1. 간단한 사이트를 제작하기 위해 만든 언어라서 복잡한 사이트를 만드는 데 효율적이지 못
2. 보안에 안전하지 않은 언저 구조를 가짐
동작원리
php는 웹 시스템인 클라이언트 / 서버 환경에서 동작하는 서버 사이드 스크립트 언어이다.
문법
1. PHP 권장 스타일 : <?php ... ?>
2. HTML 스크립트 스타일 : <script language = "php"> ... </script>
3. SGML 스타일 : <? ... ?>
4. ASP 스타일 : <% ... %>
SGML 스타일과 ASP 스타일은 php.ini 설정 파일의 특정 태그를 활성화했을 경우에만 정확히 인식
키워드, 클래스, 함수, 사용자 함수 이름의 대소문자를 구분하지 않음
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP Syntax</title>
</head>
<body>
<?php
echo "<table border='1'><thead><tr><th>표제목</th></tr></thead>";
echo "<tbody><tr><td>html 태그가 먹네</td></tr></tbody>";
#주석은 자바와 똑같고, 한 줄 주석은 #으로도 가능
?>
</body>
</html>
echo() 함수
- C언어의 printf() 함수나 C++의 cout 객체와 같이 HTML 스트림에 문자열 출력
- 실제 함수가 아니므로 인수를 전달할 때 괄호를 사용해도 되고 생략해도 된다.
- 가변 길이 인수와같이 함수 문맥으로 사용할 수 없음
- 두 개 이상의 인수를 전달할 때는 반드시 괄호를 사용해서는 안됨
제어문 대체 문법
<div style="margin: 100px auto; width: 200px; ">
<?php $var = 7; ?>
<?php if ($var > 6): ?>
<h1>변수의 값은 6보다 큽니다.</h1> <!-- 이 부분은 HTML 구문임 -->
<?php elseif ($var == 6): ?>
<h3>변수의 값은 6입니다.</h3> <!-- 이 부분은 HTML 구문임 -->
<?php elseif ($var < 6): ?>
<small>변수의 값은 6보다 작습니다.</small> <!-- 이 부분은 HTML 구문임 -->
<?php endif; ?>
</div>
변수
$변수명 = 초깃값;
- 변수명 앞에 달러($) 기호 사용
- 데이터 타입 명시하지 않음
- 대입되는 값에 따라 자동으로 타입 변환이 일어남
- 문자열 내에 변수를 사용할 때는 중괄호로 변수의 이름을 감싸야함
- php는 모든 전역 변수를 $globals 배열에 저장하기 때문에 함수 내부에서 전역 변수를 호출하려면
global $변수명;
으로 접근하거나 배열을 통해{$GLOBALS['var']}
으로 출력할 수 있다.
슈퍼글로벌(superglobal)
- 미리 정의된 전역 변수
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_COOKIE
- $_SESSION
- $_REQUEST
- $_ENV
정적 변수
- 키워드 : static
- 함수 호출이 종료되더라도 메모리상에서 사라지지 않음
- 지역 변수처럼 해당 함수 내부에서만 접근 가능
상수
- 변수와 마찬가지로 데이터를 저장할 수 있지만, 한 번 선언되면 스크립트가 실행되는 동안 그 데이터를 변경하거나 해제 할 수 없다.
define() 함수
- 상수 선언하는 함수
- 세번째 인수인 대소문자구분여부는 기본값이 false로, 대소문자를 구분함
- 스크립트 어디에서라도 참조할 수 있음(단, 해당 상수가 선언되기 이전 영역은 불가)
define(상수 이름, 상숫값, 대소문자구분여부)
마법 상수
__LINE__ | 파일의 현재 줄 번호 반환 |
__FILE__ | 파일의 전체 경로와 이름 반환 INCLUDE 내부에서 사용할 경우 INCLUDE된 파일명 반환 |
__DIR__ | 파일의 디렉터리 반환 dirname(__FILE__)과 같은 결과 반환 |
__FUNCTION__ | 함수의 이름을 반환 |
__CLASS__ | 클래스의 이름을 반환. 클래스 이름은 대소문자를 구분함. |
__TRAIT__ | 트레이트(trait)의 이름을 반환. 트레이트의 이름은 트레이트를 선언한 네임스페이스를 포함함. |
__METHOD__ | 클래스의 메소드 이름을 반환 |
__NAMESPACE__ | 현재 네임스페이스의 이름을 반환 |
기본타입
1. boolean : 참(true)과 거짓(false), 대소문자 구분x,
정수0/실수0.0/빈 문자열과 문자열 "0"/빈 배열/NULL => false, 위의 값 모든 값(음수도) => true
2. 정수(integer) : 부호를 가지는 소수부가 없는 수
3. 실수(float) : 소수부나 지수부를 가지는 수
4. 문자열(string) : 일련의 연속된 문자들의 집합, 큰따옴표(")/작은따옴표(') 가능
아스키 인코딩 -> 영문1바이트,한글 2바이트 , UTF-8 인코딩 -> 영문 1바이트, 한글 3바이트
5. 배열(array) : 한 쌍의 키와 값으로 이루어진 맵(map)으로 구성되는 순서가 있는 집합
키값으로는 정수와 문자열만이 가능, 하나의 배열에 두 가지 키값을 같이 사용할 수 있음
$arr = array(
1 => "첫 번째 값",
"1" => "두 번째 값",
10 => "세 번째 값",
-10 => "네 번째 값"
);
var_dump($arr);
echo $arr[1]; //두 번째 값
echo $arr["1"]; //두 번째 값
echo $arr[10]; //세 번째 값
echo $arr[-10]; //네 번째 값
키 값 자동 타입 변환
- boolean : true=1, false=0
- 유효한 숫자로만 이루어진 문자열은 정수나 실수로 자동 타입 변환
- 실수는 소수 부분이 제거되어 정수로 자동 타입 변환
- NULL은 빈 문자열("")로 자동 타입 변환
- 배열과 객체는 배열의 키 값으로 사용할 수 없음
6. 객체(object) : 클래스의 인스턴스(instance)를 저장하기 위한 타입, properties와 methods를 포함할 수 있음
class Lecture {
function Lecture(){
$this->lec_01 = "PHP";
$this->lec_02 = "MySQL";
}
}
$var = new Lecture; //객체 생성
echo $var->lec_01."<br>"; //객체의 속성 접근
echo $var->lec_02
7. 리소스(resource) : PHP 외부에 존재하는 외부 자원을 의미,
데이터베이스 함수 등에서 데이터베이스 연결 등을 반환할 때 사용
8. NULL : 오직 한 가지 값(NULL 상수)만을 가질 수 있는 타입, 아직 어떠한 값도 대입되지 않은 변수
타입 변환
자동 타입 변환(Type juggling) : PHP에서 변수의 타입은 해당 변수에 대입하는 값에 따라 자동으로 결정되기 때문에 변수를 선언할 때 타입을 명시할 필요가 없다.
강제 타입 변환(Type casting) : 타입 캐스트 연산자인 괄호를 사용하여 수행 가능
$var_01 = 10;
var_dump($var_01); // int(10)
$var_02 = (boolean) $var_01;
var_dump($var_02); // bool(true)
가변 변수(variable variables) : 변수의 타입 뿐만 아니라 변수의 이름까지 동적 변경 가능
$PHP = "HTML";
$HTML = "CSS";
$CSS = "JavaScript";
$JavaScript = "Ajax";
$Ajax = "PHP";
echo $PHP."<br>"; // HTML
echo $$PHP."<br>"; // $HTML -> CSS
echo $$$PHP."<br>"; // $$HTML -> $CSS -> JavaScript
echo $$$$PHP."<br>"; // $$$HTML -> $$CSS -> $JavaScript -> Ajax
echo $$$$$PHP."<br>"; // $$$$HTML -> $$$CSS -> $$JavaScript -> $Ajax -> PHP
echo $$$$$$PHP."<br>"; // $$$$$HTML -> $$$$CSS -> $$$JavaScript -> $$Ajax -> $PHP -> HTML
출처 : TCP School
'{ "Hello World!" }; > PHP' 카테고리의 다른 글
(php) PHPMailer 메일 전송 (지메일, Composer 설치, openssl 오류) (0) | 2022.06.22 |
---|---|
(php) 파일업로드 및 파일 다운로드 (0) | 2022.06.16 |
php/ 식단 사이트 구조 잡기 (0) | 2022.05.26 |
(php) 함수, 내장 함수 (0) | 2022.05.25 |
(php) 이클립스 개발 환경 구축하기 (0) | 2022.05.23 |