코딩 스쿨 PHP

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

PHP Keywords

PHP 키워드 참조: PHP 프로그래밍의 기본 요소


  • *PHP 키워드(Reserved Keywords)**는 PHP 언어에서 특별한 의미를 가지며, 변수명이나 함수명으로 사용할 수 없는 예약어들입니다. 이 키워드들은 PHP의 구문을 구성하는 기본 요소로, 제어 구조, 클래스, 함수 정의 등 다양한 프로그래밍 구조를 형성합니다. 이 참조 가이드는 PHP의 주요 키워드들을 카테고리별로 정리하고, 각 키워드의 의미와 사용 예제를 제공하여 PHP 프로그래밍을 보다 효과적으로 이해하고 활용할 수 있도록 돕습니다.

1. 제어 구조 키워드

제어 구조 키워드는 프로그램의 흐름을 제어하는 데 사용됩니다. 조건문, 반복문, 분기문 등이 포함됩니다.

1.1 조건문 키워드

  • if: 조건이 참일 때 특정 코드를 실행합니다.

    <?php
    $age = 20;
    
    if ($age >= 18) {
        echo "성인입니다.";
    }
    ?>
    
    
  • else: if 조건이 거짓일 때 대체 코드를 실행합니다.

    <?php
    if ($age >= 18) {
        echo "성인입니다.";
    } else {
        echo "미성년자입니다.";
    }
    ?>
    
    
  • elseif: 추가적인 조건을 검사할 때 사용됩니다.

    <?php
    if ($age < 13) {
        echo "어린이입니다.";
    } elseif ($age < 18) {
        echo "청소년입니다.";
    } else {
        echo "성인입니다.";
    }
    ?>
    
    
  • switch: 여러 조건을 비교할 때 사용됩니다.

    <?php
    $day = "월요일";
    
    switch ($day) {
        case "월요일":
            echo "출근일입니다.";
            break;
        case "토요일":
        case "일요일":
            echo "휴일입니다.";
            break;
        default:
            echo "평일입니다.";
    }
    ?>
    
    

1.2 반복문 키워드

  • for: 정해진 횟수만큼 코드를 반복 실행합니다.

    <?php
    for ($i = 0; $i < 5; $i++) {
        echo "숫자: $i<br>";
    }
    ?>
    
    
  • foreach: 배열이나 객체의 각 요소를 순회할 때 사용됩니다.

    <?php
    $fruits = ["사과", "바나나", "체리"];
    
    foreach ($fruits as $fruit) {
        echo "과일: $fruit<br>";
    }
    ?>
    
    
  • while: 조건이 참인 동안 코드를 반복 실행합니다.

    <?php
    $i = 0;
    
    while ($i < 5) {
        echo "숫자: $i<br>";
        $i++;
    }
    ?>
    
    
  • do...while: 최소 한 번은 코드를 실행한 후 조건을 검사합니다.

    <?php
    $i = 0;
    
    do {
        echo "숫자: $i<br>";
        $i++;
    } while ($i < 5);
    ?>
    
    

1.3 분기문 키워드

  • break: 현재 반복문이나 switch 문을 종료합니다.

    <?php
    for ($i = 0; $i < 10; $i++) {
        if ($i == 5) {
            break;
        }
        echo "숫자: $i<br>";
    }
    ?>
    
    
  • continue: 현재 반복을 건너뛰고 다음 반복으로 진행합니다.

    <?php
    for ($i = 0; $i < 10; $i++) {
        if ($i % 2 == 0) {
            continue;
        }
        echo "홀수: $i<br>";
    }
    ?>
    
    
  • goto: 코드의 특정 위치로 점프합니다. (권장되지 않음)

    <?php
    echo "시작<br>";
    goto end;
    
    echo "이 코드는 실행되지 않습니다.<br>";
    
    end:
    echo "끝<br>";
    ?>
    
    

2. 함수 및 클래스 정의 키워드

함수와 클래스를 정의할 때 사용되는 키워드들입니다.

2.1 함수 정의 키워드

  • function: 함수를 정의합니다.

    <?php
    function greet($name) {
        echo "안녕하세요, $name!";
    }
    
    greet("홍길동");
    ?>
    
    
  • return: 함수에서 값을 반환합니다.

    <?php
    function add($a, $b) {
        return $a + $b;
    }
    
    $sum = add(3, 5);
    echo "합계: $sum";
    ?>
    
    

2.2 클래스 정의 키워드

  • class: 클래스를 정의합니다.

    <?php
    class Person {
        public $name;
        public $age;
    
        public function __construct($name, $age) {
            $this->name = $name;
            $this->age = $age;
        }
    
        public function introduce() {
            echo "안녕하세요, 저는 $this->age 세의 $this->name 입니다.";
        }
    }
    
    $person = new Person("홍길동", 30);
    $person->introduce();
    ?>
    
    
  • public, protected, private: 클래스의 속성과 메서드의 접근 제어자를 정의합니다.

    <?php
    class Car {
        public $brand;
        protected $model;
        private $year;
    
        public function __construct($brand, $model, $year) {
            $this->brand = $brand;
            $this->model = $model;
            $this->year = $year;
        }
    
        public function getModel() {
            return $this->model;
        }
    
        private function getYear() {
            return $this->year;
        }
    }
    
    $car = new Car("Toyota", "Corolla", 2020);
    echo $car->brand; // 접근 가능
    echo $car->getModel(); // 접근 가능
    // echo $car->model; // 오류
    // echo $car->getYear(); // 오류
    ?>
    
    
  • extends: 클래스를 상속할 때 사용됩니다.

    <?php
    class Vehicle {
        public $type;
    
        public function __construct($type) {
            $this->type = $type;
        }
    
        public function describe() {
            echo "이것은 $this->type 입니다.";
        }
    }
    
    class Bike extends Vehicle {
        public function __construct() {
            parent::__construct("자전거");
        }
    }
    
    $bike = new Bike();
    $bike->describe();
    ?>
    
    
  • implements: 인터페이스를 구현할 때 사용됩니다.

    <?php
    interface Drivable {
        public function drive();
    }
    
    class Truck implements Drivable {
        public function drive() {
            echo "트럭을 운전합니다.";
        }
    }
    
    $truck = new Truck();
    $truck->drive();
    ?>
    
    
  • abstract: 추상 클래스를 정의하거나 추상 메서드를 선언할 때 사용됩니다.

    <?php
    abstract class Animal {
        abstract public function makeSound();
    
        public function sleep() {
            echo "잠을 잡니다.";
        }
    }
    
    class Dog extends Animal {
        public function makeSound() {
            echo "멍멍!";
        }
    }
    
    $dog = new Dog();
    $dog->makeSound();
    $dog->sleep();
    ?>
    
    
  • final: 클래스나 메서드를 더 이상 상속하거나 오버라이드하지 못하게 합니다.

    <?php
    final class Math {
        public static function add($a, $b) {
            return $a + $b;
        }
    }
    
    // class AdvancedMath extends Math {} // 오류 발생
    
    echo Math::add(5, 7);
    ?>
    
    
  • interface: 인터페이스를 정의합니다.

    <?php
    interface Logger {
        public function log($message);
    }
    
    class FileLogger implements Logger {
        public function log($message) {
            // 파일에 로그를 기록하는 로직
            echo "파일에 로그 기록: $message";
        }
    }
    
    $logger = new FileLogger();
    $logger->log("에러 발생!");
    ?>
    
    
  • trait: 트레이트를 정의하여 클래스에 공통 기능을 추가할 때 사용됩니다.

    <?php
    trait LoggerTrait {
        public function log($message) {
            echo "로그: $message<br>";
        }
    }
    
    class User {
        use LoggerTrait;
    
        public function createUser() {
            // 사용자 생성 로직
            $this->log("사용자 생성됨.");
        }
    }
    
    $user = new User();
    $user->createUser();
    ?>
    
    
  • static: 정적 속성과 메서드를 정의하거나 접근할 때 사용됩니다.

    <?php
    class Math {
        public static $pi = 3.14159;
    
        public static function square($num) {
            return $num * $num;
        }
    }
    
    echo Math::$pi; // 3.14159
    echo Math::square(5); // 25
    ?>
    
    

2.3 생성자 및 소멸자 키워드

  • __construct: 클래스의 생성자를 정의합니다.

    <?php
    class Database {
        private $connection;
    
        public function __construct($host, $user, $pass, $dbname) {
            $this->connection = new mysqli($host, $user, $pass, $dbname);
            if ($this->connection->connect_error) {
                die("연결 실패: " . $this->connection->connect_error);
            }
        }
    
        public function getConnection() {
            return $this->connection;
        }
    }
    
    $db = new Database("localhost", "root", "", "testdb");
    ?>
    
    
  • __destruct: 클래스의 소멸자를 정의하여 객체가 소멸될 때 실행되는 코드를 작성합니다.

    <?php
    class FileHandler {
        private $file;
    
        public function __construct($filename) {
            $this->file = fopen($filename, 'w');
            fwrite($this->file, "파일 생성됨.\\\\n");
        }
    
        public function __destruct() {
            fclose($this->file);
            echo "파일이 닫혔습니다.";
        }
    }
    
    $handler = new FileHandler("example.txt");
    ?>
    
    

3. 변수 및 상수 관련 키워드

변수와 상수를 선언하고 관리할 때 사용되는 키워드들입니다.

  • var: 클래스 내에서 속성을 선언할 때 사용됩니다. (PHP 5 이전 스타일)

    <?php
    class OldStyleClass {
        var $property = "기본값";
    }
    
    $obj = new OldStyleClass();
    echo $obj->property;
    ?>
    
    

    참고: PHP 5 이후 public, protected, private 키워드를 사용하는 것이 권장됩니다.

  • const: 상수를 정의합니다.

    <?php
    class MathConstants {
        const PI = 3.14159;
    
        public function getPi() {
            return self::PI;
        }
    }
    
    echo MathConstants::PI; // 3.14159
    ?>
    
    
  • define: 상수를 정의합니다. (클래스 외부에서 주로 사용)

    <?php
    define("SITE_NAME", "My Website");
    
    echo SITE_NAME; // My Website
    ?>
    
    

4. 접근 제어 키워드

클래스 내의 속성과 메서드에 대한 접근 권한을 제어할 때 사용됩니다.

  • public: 모든 곳에서 접근할 수 있습니다.

    <?php
    class Person {
        public $name;
    
        public function setName($name) {
            $this->name = $name;
        }
    }
    
    $person = new Person();
    $person->setName("홍길동");
    echo $person->name; // 홍길동
    ?>
    
    
  • protected: 클래스 자신과 상속받은 클래스에서만 접근할 수 있습니다.

    <?php
    class Animal {
        protected $species;
    
        protected function setSpecies($species) {
            $this->species = $species;
        }
    }
    
    class Dog extends Animal {
        public function __construct() {
            $this->setSpecies("개");
        }
    
        public function getSpecies() {
            return $this->species;
        }
    }
    
    $dog = new Dog();
    echo $dog->getSpecies(); // 개
    ?>
    
    
  • private: 클래스 자신만 접근할 수 있습니다.

    <?php
    class Secret {
        private $data;
    
        public function setData($data) {
            $this->data = $data;
        }
    
        public function getData() {
            return $this->data;
        }
    }
    
    $secret = new Secret();
    $secret->setData("비밀 데이터");
    echo $secret->getData(); // 비밀 데이터
    // echo $secret->data; // 오류 발생
    ?>
    
    

5. 네임스페이스 및 사용 키워드

코드의 충돌을 방지하고, 코드의 구조를 개선하기 위해 네임스페이스를 정의하고 사용할 때 사용되는 키워드들입니다.

  • namespace: 네임스페이스를 정의합니다.

    <?php
    namespace MyApp\\\\Utils;
    
    class Helper {
        public static function greet() {
            echo "안녕하세요!";
        }
    }
    ?>
    
    
  • use: 네임스페이스의 클래스를 가져올 때 사용됩니다.

    <?php
    namespace MyApp\\\\Main;
    
    use MyApp\\\\Utils\\\\Helper;
    
    Helper::greet(); // 안녕하세요!
    ?>
    
    
  • as: use와 함께 사용하여 별칭을 지정할 때 사용됩니다.

    <?php
    use MyApp\\\\Utils\\\\Helper as UtilHelper;
    
    UtilHelper::greet(); // 안녕하세요!
    ?>
    
    

6. 예외 처리 키워드

예외를 처리하고, 오류를 관리할 때 사용되는 키워드들입니다.

  • try: 예외가 발생할 가능성이 있는 코드를 감싸는 블록을 정의합니다.

    <?php
    try {
        // 예외가 발생할 수 있는 코드
        throw new Exception("예외 발생!");
    } catch (Exception $e) {
        echo "예외 메시지: " . $e->getMessage();
    }
    ?>
    
    
  • catch: try 블록에서 발생한 예외를 처리합니다.

    <?php
    try {
        // 코드
    } catch (Exception $e) {
        echo "오류: " . $e->getMessage();
    }
    ?>
    
    
  • finally: 예외 발생 여부와 상관없이 항상 실행되는 블록을 정의합니다.

    <?php
    try {
        // 코드
    } catch (Exception $e) {
        echo "오류: " . $e->getMessage();
    } finally {
        echo "항상 실행됩니다.";
    }
    ?>
    
    
  • throw: 예외를 던집니다.

    <?php
    function divide($a, $b) {
        if ($b == 0) {
            throw new Exception("0으로 나눌 수 없습니다.");
        }
        return $a / $b;
    }
    
    try {
        echo divide(10, 0);
    } catch (Exception $e) {
        echo "오류: " . $e->getMessage();
    }
    ?>
    
    
  • use: 클로저에서 외부 변수를 사용할 때 사용됩니다.

    <?php
    $message = "안녕하세요!";
    
    $greet = function() use ($message) {
        echo $message;
    };
    
    $greet(); // 안녕하세요!
    ?>
    
    

7. 기타 키워드

  • echo: 문자열이나 변수를 출력합니다. (언어 구조)

    <?php
    echo "Hello, World!";
    ?>
    
    
  • print: 문자열이나 변수를 출력합니다. echo와 유사하지만, 표현식으로 사용할 수 있습니다.

    <?php
    print "Hello, World!";
    ?>
    
    
  • include, include_once: 외부 파일을 포함합니다.

    <?php
    include 'header.php';
    include_once 'config.php';
    ?>
    
    
  • require, require_once: 외부 파일을 포함합니다. include와 달리 파일이 없을 경우 치명적인 오류를 발생시킵니다.

    <?php
    require 'database.php';
    require_once 'functions.php';
    ?>
    
    
  • die, exit: 스크립트 실행을 종료합니다.

    <?php
    if (!$user) {
        die("사용자를 찾을 수 없습니다.");
    }
    
    // 또는
    
    exit("프로그램을 종료합니다.");
    ?>
    
    
  • unset: 변수를 해제합니다.

    <?php
    $var = "데이터";
    unset($var);
    echo $var; // 오류 발생
    ?>
    
    
  • isset: 변수가 설정되어 있는지 확인합니다.

    <?php
    if (isset($var)) {
        echo "변수가 설정되어 있습니다.";
    }
    ?>
    
    
  • empty: 변수가 비어있는지 확인합니다.

    <?php
    $var = "";
    
    if (empty($var)) {
        echo "변수가 비어 있습니다.";
    }
    ?>
    
    
  • global: 함수 내부에서 전역 변수를 사용할 때 사용됩니다.

    <?php
    $count = 10;
    
    function increment() {
        global $count;
        $count++;
    }
    
    increment();
    echo $count; // 11
    ?>
    
    
  • static: 정적 변수나 메서드를 정의할 때 사용됩니다.

    <?php
    function counter() {
        static $count = 0;
        $count++;
        echo $count . "<br>";
    }
    
    counter(); // 1
    counter(); // 2
    counter(); // 3
    ?>
    
    
  • clone: 객체를 복제할 때 사용됩니다.

    <?php
    class Person {
        public $name;
    
        public function __construct($name) {
            $this->name = $name;
        }
    }
    
    $original = new Person("홍길동");
    $clone = clone $original;
    $clone->name = "김철수";
    
    echo $original->name; // 홍길동
    echo $clone->name; // 김철수
    ?>
    
    
  • instanceof: 객체가 특정 클래스의 인스턴스인지 확인합니다.

    <?php
    class Animal {}
    class Dog extends Animal {}
    
    $dog = new Dog();
    
    if ($dog instanceof Animal) {
        echo "Dog는 Animal의 인스턴스입니다.";
    }
    ?>
    
    
  • insteadof: 트레이트에서 메서드를 사용할 때 충돌을 해결하는 데 사용됩니다.

    <?php
    trait A {
        public function sayHello() {
            echo "안녕하세요 from A<br>";
        }
    }
    
    trait B {
        public function sayHello() {
            echo "안녕하세요 from B<br>";
        }
    }
    
    class Greeting {
        use A, B {
            B::sayHello insteadof A;
        }
    }
    
    $greet = new Greeting();
    $greet->sayHello(); // 안녕하세요 from B
    ?>
    
    

8. 네임스페이스 관련 키워드

네임스페이스는 코드의 충돌을 방지하고, 코드를 더 구조화된 방식으로 관리할 수 있게 해줍니다.

  • namespace: 네임스페이스를 정의합니다.

    <?php
    namespace MyApp\\\\Utilities;
    
    class Helper {
        public static function greet() {
            echo "안녕하세요!";
        }
    }
    ?>
    
    
  • use: 네임스페이스의 클래스를 가져올 때 사용됩니다.

    <?php
    namespace MyApp\\\\Main;
    
    use MyApp\\\\Utilities\\\\Helper;
    
    Helper::greet(); // 안녕하세요!
    ?>
    
    
  • as: use와 함께 사용하여 별칭을 지정할 때 사용됩니다.

    <?php
    use MyApp\\\\Utilities\\\\Helper as UtilHelper;
    
    UtilHelper::greet(); // 안녕하세요!
    ?>
    
    

9. 키워드 요약

아래는 PHP에서 사용되는 주요 키워드들의 요약입니다.

카테고리 키워드 설명
제어 구조 if, else, elseif, switch, for, foreach, while, do, break, continue, goto 프로그램의 흐름을 제어하는 구조
함수 및 클래스 function, return, class, extends, implements, interface, trait, abstract, final, static, public, protected, private 함수와 클래스 정의 및 상속, 접근 제어
변수 및 상수 var, const, define 변수 및 상수 선언
네임스페이스 namespace, use, as 네임스페이스 정의 및 사용
예외 처리 try, catch, finally, throw 예외 처리 구조
기타 echo, print, include, require, die, exit, unset, isset, empty, global, clone, instanceof, insteadof 출력, 파일 포함, 스크립트 종료, 변수 관리 등 다양한 기능

10. PHP 키워드 사용 시 주의사항

  • 키워드 충돌 방지: 변수명, 함수명, 클래스명으로 PHP 키워드를 사용하면 구문 오류가 발생합니다. 키워드를 식별자(identifier)로 사용하지 않도록 주의하세요.

    <?php
    // 잘못된 예시
    $class = "MyClass"; // 오류 발생
    
    // 올바른 예시
    $myClass = "MyClass";
    ?>
    
    
  • 대소문자 구분: PHP 키워드는 대소문자를 구분하지 않습니다. 그러나 일반적으로 소문자로 작성하는 것이 관례입니다.

    <?php
    IF ($age >= 18) {
        echo "성인입니다.";
    }
    ?>
    
    

    위 코드는 정상적으로 작동하지만, if 키워드를 소문자로 사용하는 것이 표준입니다.

  • PHP 버전 호환성: 일부 키워드는 PHP의 특정 버전에서만 사용할 수 있습니다. 예를 들어, match 키워드는 PHP 8.0부터 도입되었습니다. 코드를 작성할 때 사용하는 PHP 버전을 확인하세요.


11. 참조 자료


12. 요약

PHP 키워드 참조는 PHP 프로그래밍에서 필수적인 예약어들을 체계적으로 정리하여, 각 키워드의 의미와 사용법을 명확히 이해할 수 있도록 돕습니다. 제어 구조, 함수 및 클래스 정의, 변수 및 상수 관리, 네임스페이스, 예외 처리 등 다양한 카테고리로 분류된 키워드들은 PHP 코드를 작성할 때 핵심적인 역할을 합니다. 키워드의 올바른 사용과 주의사항을 숙지함으로써, 보다 안정적이고 효율적인 PHP 애플리케이션을 개발할 수 있습니다.


: PHP 키워드를 효과적으로 활용하려면, 각 키워드의 용도와 사용법을 실습을 통해 직접 경험해보는 것이 중요합니다. 또한, 최신 PHP 버전의 기능과 키워드를 지속적으로 학습하여 최신 개발 트렌드에 맞추어 코드를 작성하세요.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com