[LARAVEL] PHP 정리

김세연·2025년 4월 22일

Laravel

목록 보기
1/14
post-thumbnail

PHP 정리

백지 상태에서 laravel을 하기 위한 PHP 기본(기본이라하기에는 내가 코드 보면서 궁금했던 것들) 정리를 위한 내용이다.

$

앞에 $를 붙인다는 것은 변수라는 뜻이다.

상수라면?

// define() 함수 사용 (전통적인 방식)
define("PI", 3.14);
echo PI;  // 3.14

// const 키워드 사용 (클래스 안에서 주로 사용)
class Circle {
    const PI = 3.14;

    public function getPi() {
        return self::PI;
    }
}

echo Circle::PI;  // 3.14

$this

현재 클래스 인스턴스 자신을 칭한다.

class Car {
    public $brand;

    public function setBrand($name) {
        $this->brand = $name; // 이 클래스 안의 brand에 접근
    }
}

접근 제어자(public, private, protected)

키워드외부 접근자식 클래스 접근
public가능가능
protected불가능가능
private불가능불가능
class User {
    public $name;         // 누구나 접근 가능
    private $password;    // 클래스 내부에서만 접근 가능

    public function setPassword($pwd) {
        $this->password = $pwd;
    }
}

인스턴스 없이도 접근 가능한 변수/함수(static)

class Math {
    public static $pi = 3.14;

    public static function square($x) {
        return $x * $x;
    }
}

echo Math::$pi;              // 3.14
echo Math::square(5);        // 25

배열

// 인덱스 배열
$fruits = ["apple", "banana", "mango"];
echo $fruits[1]; // banana

// 연관 배열
$user = [
  "name" => "철수",
  "age" => 29
];
echo $user["name"]; // 철수

null 병합 연산자 (??)

$name = $_GET['name'] ?? 'Guest';
// $_GET['name']이 존재하지 않으면 'Guest' 반환

클래스 상속 (extends)

class Animal {
    public function sound() {
        echo "소리!";
    }
}

class Dog extends Animal {
    public function bark() {
        echo "멍멍";
    }
}

$dog = new Dog();
$dog->sound(); // 부모 메서드 사용 가능

인터페이스와 추상 클래스 (Laravel 내부 구조에 자주 나옴)

interface Logger {
    public function log($msg);
}

class FileLogger implements Logger {
    public function log($msg) {
        echo "Log: $msg";
    }
}

->

"객체의 프로퍼티나 메서드에 접근"할 때 사용한다.


:: 연산자

스코프 해석 연산자(Scope Resolution Operator)라고 불리며, PHP에서 클래스나 객체의 정적(static) 속성 또는 메서드에 접근할 때 사용된다.

PHP에서 ::는 다음과 같은 경우에 사용됨

  • 정적(static) 메서드/속성 접근
  • 상수 접근
  • 클래스 이름 자체로 접근해야 할 때 (self, parent, static)
  • static 메서드에 접근할 때

class Math {
    public static function square($x) {
        return $x * $x;
    }
}

echo Math::square(5);  // 25
  • const (클래스 상수) 접근할 때

class Config {
    const VERSION = "1.0.0";
}

echo Config::VERSION;  // "1.0.0"
  • self, parent, static 키워드와 함께

class A {
    const HELLO = "안녕!";
    public static function greet() {
        return self::HELLO;
    }
}

class B extends A {
    public static function greetAgain() {
        return parent::greet();
    }
}

-> vs :: 비교

구문의미
$obj->method()객체의 메서드 호출
ClassName::method()정적 메서드/상수 접근 (객체 없이)

매직 메서드

언더스코어(__) 두 개가 붙은 함수는 PHP에서 "매직 메서드(Magic Method)"라고 한다.

매직 메서드설명
__construct()생성자 (객체 생성 시 자동 호출)
__destruct()소멸자 (객체 파괴 시 자동 호출)
__toString()객체를 문자열로 변환할 때 자동 호출
__get()비공개/존재하지 않는 속성 접근 시 호출
__set()비공개/없는 속성에 값 설정 시 호출
__call()존재하지 않는 메서드 호출 시 동작

$this->app

$this는 현재 클래스 인스턴스를 가리키는 키워드이다. (JavaScript의 this랑 유사)
$this->app은 현재 객체의 app 속성 또는 메서드에 접근하는 것이다.

profile
공부 재밌따

0개의 댓글