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 همه‌جا استفاده می‌شوند.

برای ثبت پیشرفت و کسب XP وارد شو.

ورود به میدان
→ وراثت، abstract و interface