PHP شیءگرا
·
۹ دقیقه مطالعه
trait، static و namespace
trait — اشتراک کد بین کلاسها
PHP وراثت چندگانه ندارد؛ trait این خلأ را پر میکند:
trait Timestampable {
public function touch(): void {
$this->updatedAt = time();
}
}
class Post {
use Timestampable;
}
class User {
use Timestampable; // همان کد، بدون وراثت
}
static — عضو کلاس (نه نمونه)
class Counter {
public static int $count = 0;
public static function inc(): void { self::$count++; }
}
Counter::inc();
echo Counter::$count; // 1
با :: به عضو static دسترسی داری (بدون ساخت نمونه).
namespace — سازماندهی
جلوی تداخل نام کلاسها را میگیرد:
<?php
namespace App\Models;
class User { }
استفاده:
use App\Models\User;
$u = new User();
اینها پایهٔ معماری فریمورکهایی مثل Laravelاند — جایی که namespace و trait همهجا استفاده میشوند.