PHP 치트 시트
검색 및 인쇄 가능한 PHP 8.3+ 레퍼런스 — 구문, 문자열, 배열, 함수, 클래스, enum, 속성, 최신 기능. 무료.
기초와 타입
10declare(strict_types=1);
엄격한 스칼라 타입 검사 적용
$x = 1;
변수는 달러 기호로 시작
const MAX = 100;
컴파일 타임 상수
gettype($x)
값의 타입 가져오기
(int) $x
정수로 캐스팅
is_int($x)
타입 검사 헬퍼 (is_string, ...)
int|string $x
유니온 타입 선언
?string $x
널 허용 타입 (string 또는 null)
$a ?? 'default'
널 병합 연산자
$a ??= 'default'
null일 때만 할당
문자열
11"Hello $name"
큰따옴표는 변수 보간
'literal $x'
작은따옴표는 리터럴
$a . $b
문자열 연결
strlen($s)
문자열의 바이트 길이
str_contains($s, 'a')
부분 문자열 확인
str_starts_with($s, 'a')
접두사 확인
substr($s, 0, 3)
문자열 일부 추출
str_replace('a', 'b', $s)
모든 항목 치환
explode(',', $s)
배열로 분할
sprintf('%05.2f', $n)
형식화된 문자열 출력
trim($s)
양쪽 공백 제거
배열
11$a = [1, 2, 3];
인덱스 배열 리터럴
$a = ['k' => 'v'];
연관 배열
array_map(fn($x) => $x * 2, $a)
각 요소 변환
array_filter($a, fn($x) => $x > 0)
일치하는 요소 유지
array_reduce($a, $fn, 0)
단일 값으로 축약
in_array($v, $a, true)
엄격한 값 확인
array_keys($a)
모든 키 가져오기
array_merge($a, $b)
배열 병합
[...$a, ...$b]
배열 펼치기/병합
count($a)
요소 개수
[$x, $y] = $a;
배열 구조 분해
함수
9function f(int $a): int {}
타입 지정 매개변수와 반환
function f(int $a = 1) {}
기본 매개변수 값
function f(int ...$nums) {}
가변 매개변수
f(...$args)
인자 펼치기
f(name: 'Sam', age: 30)
이름 있는 인자
$fn = fn($x) => $x + 1;
화살표 함수 (스코프 자동 캡처)
function () use ($x) {}
변수를 캡처하는 클로저
$fn = strlen(...);
일급 호출 가능 문법
function f(): never {}
반환하지 않음 (throw 또는 종료)
제어 흐름
9if ($a) {} elseif ($b) {} else {}
조건 분기
$a ? $b : $c
삼항 표현식
$a ?: $b
짧은 삼항 (falsy 대체)
match ($x) { 1, 2 => 'a', default => 'b' }
엄격한 표현식 기반 match
switch ($x) { case 1: break; }
느슨한 다중 분기
foreach ($a as $k => $v) {}
키와 값 순회
for ($i = 0; $i < 10; $i++) {}
카운트 루프
while ($cond) {}
조건이 참인 동안 반복
break / continue
반복 종료 또는 건너뛰기
클래스와 OOP
10class A extends B implements C {}
상속과 인터페이스
public function __construct(private int $id) {}
생성자 속성 승격
public readonly string $name;
초기화 후 불변
public function f(): static {}
지연 바인딩 타입 반환
static::create()
지연 정적 바인딩
$obj?->method()
널 안전 메서드 호출
abstract class A {}
직접 인스턴스화 불가
trait T {} use T;
재사용 가능한 수평 코드
$obj instanceof A
런타임 타입 검사
A::class
정규화된 클래스 이름 문자열
열거형
9enum Status { case Active; case Draft; }
순수 열거형
enum Status: string { case A = 'a'; }
백업 열거형 (string/int)
Status::Active
열거형 케이스 참조
Status::from('a')
백업 값으로 생성
Status::tryFrom('x')
유효하지 않으면 null 반환
Status::cases()
모든 케이스 배열
$status->value
케이스의 백업 값
$status->name
케이스의 이름
enum E { public function label() {} }
열거형은 메서드를 가질 수 있음
오류 처리
9try {} catch (Throwable $e) {}
오류와 예외 잡기
catch (TypeError | ValueError $e)
여러 타입 잡기
catch (Exception)
비캡처 catch (변수 없음)
finally {}
try/catch 후 항상 실행
throw new RuntimeException('x')
예외 던지기
throw $e;
잡은 예외 다시 던지기
$x = $v ?? throw new Error();
표현식으로 throw
$e->getMessage()
오류 메시지 읽기
$e->getPrevious()
연결된 예외 가져오기
어트리뷰트와 최신 기능
9#[Attribute] class Route {}
커스텀 어트리뷰트 선언
#[Route('/home')]
대상에 어트리뷰트 적용
new ReflectionClass($x)
리플렉션으로 클래스 검사
$ref->getAttributes()
선언된 어트리뷰트 읽기
json_encode($data)
JSON으로 직렬화
json_decode($s, true)
JSON을 배열로 디코딩
array_is_list($a)
키가 0..n 순서면 true
str_word_count($s)
문자열의 단어 수 세기
$obj::class
인스턴스에서 클래스 이름
“:q”와 일치하는 항목이 없습니다.
도움이 필요하신가요?
이 도구에서 문제를 발견하셨나요? 저희 팀에 알려주세요.