PHP 언어 완벽 가이드 - 기초 문법과 데이터 타입
PHP Basic Syntax and Data Types
PHP 기본 문법과 데이터 타입
PHP 기본 문법
PHP 태그
PHP 코드는 특별한 시작 및 종료 태그로 둘러싸여 있어 PHP 엔진이 코드를 인식할 수 있습니다.
<?php
// PHP 코드 작성
?>
또는 짧은 에코 태그(PHP 7.0+ 기본 활성화):
<?= $변수 ?> // 이것은 <?php echo $변수; ?>와 동일
주석
PHP에서는 한 줄 주석과 여러 줄 주석을 모두 지원합니다.
<?php
// 한 줄 주석
# 또 다른 한 줄 주석 스타일
/*
여러 줄 주석
이렇게 작성합니다
*/
?>
문장 구분자
PHP에서 각 명령문은 세미콜론(;)으로 끝나야 합니다.
<?php
echo "안녕하세요";
$x = 5;
$y = 10;
$z = $x + $y;
?>
PHP와 HTML 혼합 사용
PHP는 HTML 내에 쉽게 삽입할 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<title>PHP 예제</title>
</head>
<body>
<h1>안녕하세요!</h1>
<?php
echo "<p>오늘 날짜는: " . date("Y-m-d") . "</p>";
?>
<p>이것은 HTML 내용입니다.</p>
<p>현재 시간: <?= date("H:i:s") ?></p>
</body>
</html>
변수와 데이터 타입
변수 선언
PHP에서 변수는 달러 기호($)로 시작하며, 타입을 명시적으로 선언할 필요가 없습니다.
<?php
$name = "홍길동"; // 문자열
$age = 25; // 정수
$height = 175.5; // 실수
$isStudent = true; // 불리언
?>
변수 명명 규칙
- 변수명은 달러 기호($)로 시작해야 합니다.
- 변수명은 문자나 밑줄(_)로 시작해야 합니다.
- 변수명에는 문자, 숫자, 밑줄만 포함할 수 있습니다.
- 변수명은 대소문자를 구분합니다 ($name과 $Name은 다른 변수).
<?php
$name = "유효한 변수명";
$_name = "유효한 변수명";
$name1 = "유효한 변수명";
$name_1 = "유효한 변수명";
// $1name = "잘못된 변수명"; // 숫자로 시작할 수 없음
// $name-1 = "잘못된 변수명"; // 하이픈 사용 불가
?>
변수 범위
PHP에서 변수는 세 가지 범위를 가질 수 있습니다:
- 지역 변수: 함수 내에서 선언된 변수로, 함수 내에서만 접근 가능합니다.
- 전역 변수: 함수 외부에서 선언된 변수로, 함수 내에서
global
키워드를 사용해 접근 가능합니다. - 정적 변수: 함수 내에서
static
키워드로 선언된 변수로, 함수 실행이 끝나도 값이 유지됩니다.
<?php
$globalVar = 10; // 전역 변수
function testScope() {
$localVar = 5; // 지역 변수
global $globalVar; // 전역 변수 접근
echo "지역 변수: $localVar<br>";
echo "전역 변수: $globalVar<br>";
static $staticVar = 0; // 정적 변수
$staticVar++;
echo "정적 변수: $staticVar<br>";
}
testScope(); // 출력: 지역 변수: 5, 전역 변수: 10, 정적 변수: 1
testScope(); // 출력: 지역 변수: 5, 전역 변수: 10, 정적 변수: 2
// echo $localVar; // 오류: 지역 변수는 함수 외부에서 접근 불가
?>
슈퍼글로벌 변수
PHP는 전역적으로 접근 가능한 내장 변수들을 제공합니다:
<?php
// 슈퍼글로벌 변수 예시
echo $_SERVER['HTTP_USER_AGENT']; // 브라우저 정보
echo $_GET['name']; // URL 파라미터
echo $_POST['email']; // POST 데이터
echo $_REQUEST['id']; // GET, POST, COOKIE 데이터
echo $_SESSION['user_id']; // 세션 데이터
echo $_COOKIE['preference']; // 쿠키 데이터
echo $_FILES['upload']; // 업로드된 파일 정보
echo $_ENV['HOME']; // 환경 변수
?>
데이터 타입
PHP는 다음과 같은 기본 데이터 타입을 지원합니다:
문자열(String)
$name = "홍길동"; $address = '서울시 강남구'; // 작은따옴표도 사용 가능
정수(Integer)
$age = 25; $negativeNum = -10; $hex = 0x1A; // 16진수 (값: 26) $oct = 057; // 8진수 (값: 47) $bin = 0b11; // 2진수 (값: 3)
실수(Float 또는 Double)
$height = 175.5; $scientificNotation = 1.5e3; // 1500
불리언(Boolean)
$isActive = true; $hasPermission = false;
배열(Array)
$colors = array("빨강", "녹색", "파랑"); $colors = ["빨강", "녹색", "파랑"]; // PHP 5.4+ 단축 문법 // 연관 배열 $person = [ "name" => "홍길동", "age" => 25, "city" => "서울" ];
객체(Object)
class Person { public $name; public $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } function introduce() { return "안녕하세요, 저는 {$this->name}이고 {$this->age}살입니다."; } } $person = new Person("홍길동", 25); echo $person->introduce();
NULL
$var = NULL; // 값이 없음을 나타냄
리소스(Resource)
$file = fopen("test.txt", "r"); // 파일 리소스
타입 확인 및 변환
PHP에서는 변수의 타입을 확인하고 변환할 수 있는 다양한 함수를 제공합니다.
<?php
$var = "42";
// 타입 확인
var_dump($var); // string(2) "42"
echo gettype($var); // string
echo is_string($var); // 1 (true)
echo is_int($var); // (빈 출력, false)
// 타입 변환
$varInt = (int)$var; // 정수로 변환
$varFloat = (float)$var; // 실수로 변환
$varBool = (bool)$var; // 불리언으로 변환
$varString = (string)$varInt; // 문자열로 변환
// 타입 확인 함수
echo is_int($varInt); // 1 (true)
echo is_float($varFloat); // 1 (true)
echo is_bool($varBool); // 1 (true)
echo is_string($varString); // 1 (true)
?>
상수
상수는 한 번 정의되면 변경할 수 없는 값입니다. 상수는 define()
함수나 const
키워드를 사용하여 정의합니다.
<?php
// define() 함수 사용
define("PI", 3.14159);
define("SITE_NAME", "PHP 튜토리얼");
// const 키워드 사용 (PHP 5.3+)
const MAX_USERS = 100;
const DB_HOST = "localhost";
echo PI; // 3.14159
echo SITE_NAME; // PHP 튜토리얼
echo MAX_USERS; // 100
// PI = 3.15; // 오류: 상수는 변경할 수 없음
?>
매직 상수
PHP는 특별한 내장 상수(매직 상수)를 제공합니다:
<?php
echo __LINE__; // 현재 라인 번호
echo __FILE__; // 현재 파일의 전체 경로와 파일명
echo __DIR__; // 현재 파일의 디렉토리
echo __FUNCTION__; // 현재 함수 이름
echo __CLASS__; // 현재 클래스 이름
echo __METHOD__; // 현재 클래스의 메소드 이름
echo __NAMESPACE__; // 현재 네임스페이스 이름
?>