백지 상태에서 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
현재 클래스 인스턴스 자신을 칭한다.
class Car {
public $brand;
public function setBrand($name) {
$this->brand = $name; // 이 클래스 안의 brand에 접근
}
}
| 키워드 | 외부 접근 | 자식 클래스 접근 |
|---|---|---|
| public | 가능 | 가능 |
| protected | 불가능 | 가능 |
| private | 불가능 | 불가능 |
class User {
public $name; // 누구나 접근 가능
private $password; // 클래스 내부에서만 접근 가능
public function setPassword($pwd) {
$this->password = $pwd;
}
}
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"]; // 철수
$name = $_GET['name'] ?? 'Guest';
// $_GET['name']이 존재하지 않으면 'Guest' 반환
class Animal {
public function sound() {
echo "소리!";
}
}
class Dog extends Animal {
public function bark() {
echo "멍멍";
}
}
$dog = new Dog();
$dog->sound(); // 부모 메서드 사용 가능
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)
class Math {
public static function square($x) {
return $x * $x;
}
}
echo Math::square(5); // 25
class Config {
const VERSION = "1.0.0";
}
echo Config::VERSION; // "1.0.0"
class A {
const HELLO = "안녕!";
public static function greet() {
return self::HELLO;
}
}
class B extends A {
public static function greetAgain() {
return parent::greet();
}
}
| 구문 | 의미 |
|---|---|
| $obj->method() | 객체의 메서드 호출 |
| ClassName::method() | 정적 메서드/상수 접근 (객체 없이) |
언더스코어(__) 두 개가 붙은 함수는 PHP에서 "매직 메서드(Magic Method)"라고 한다.
| 매직 메서드 | 설명 |
|---|---|
| __construct() | 생성자 (객체 생성 시 자동 호출) |
| __destruct() | 소멸자 (객체 파괴 시 자동 호출) |
| __toString() | 객체를 문자열로 변환할 때 자동 호출 |
| __get() | 비공개/존재하지 않는 속성 접근 시 호출 |
| __set() | 비공개/없는 속성에 값 설정 시 호출 |
| __call() | 존재하지 않는 메서드 호출 시 동작 |
$this는 현재 클래스 인스턴스를 가리키는 키워드이다. (JavaScript의 this랑 유사)
$this->app은 현재 객체의 app 속성 또는 메서드에 접근하는 것이다.