آموزش رایگان PHP

آموزش جامع برنامه‌نویسی شی‌گرا (OOP) در PHP بر اساس استانداردهای گوگل

1405/05/15 00:33 محراب حسن زاده
آموزش جامع برنامه‌نویسی شی‌گرا (OOP) در PHP بر اساس استانداردهای گوگل

مقدمه‌ای بر برنامه‌نویسی شی‌گرا (OOP) در PHP

برنامه‌نویسی شی‌گرا یا Object-Oriented Programming (OOP) یک الگوی برنامه‌نویسی است که بر اساس مفهوم «اشیاء» (Objects) شکل گرفته است. اشیاء می‌توانند داده‌ها (در قالب ویژگی‌ها یا Properties) و کدها (در قالب توابع یا Methods) را در بر بگیرند. استفاده از شی‌گرایی به ما کمک می‌کند کدهایی با قابلیت استفاده مجدد بالا، ساختاریافته‌تر و خواناتر بنویسیم.

بر اساس استانداردهای توسعه نرم‌افزار گوگل، استفاده از مفاهیم OOP برای پروژه‌های بزرگ مقیاس‌‌پذیر الزامی است چرا که توسعه تیمی را آسان‌تر و فرآیند دیباگ را به شکل چشمگیری سریع‌تر می‌کند.

تعریف کلاس (Class) و شیء (Object)

کلاس مانند یک نقشه ساختمان یا قالب اولیه است و شیء، نمونه واقعی ساخته شده از روی آن قالب است. برای مثال، کلاس «خودرو» مشخصات کلی خودرو را تعریف می‌کند، اما «پراید» یا «تسلا» اشیاء واقعی ساخته شده از روی این کلاس هستند.

در ادامه نحوه تعریف یک کلاس و نمونه‌سازی (Instantiation) از آن را در PHP مشاهده می‌کنید:

class Car {
    // Properties
    public $brand;
    public $color;

    // Constructor
    public function __construct($brand, $color) {
        $this->brand = $brand;
        $this->color = $color;
    }

    // Method
    public function getDetails() {
        return "این خودرو یک " . $this->brand . " به رنگ " . $this->color . " است.";
    }
}

// Instantiating objects
$tesla = new Car("Tesla Model S", "مشکی");
$bmw = new Car("BMW M4", "آبی");

echo $tesla->getDetails(); // خروجی: این خودرو یک Tesla Model S به رنگ مشکی است.

اصول چهارگانه برنامه‌نویسی شی‌گرا

برنامه‌نویسی شی‌گرا بر پایه ۴ ستون اصلی استوار است:

۱. ارث‌بری (Inheritance)

ارث‌بری به یک کلاس اجازه می‌دهد ویژگی‌ها و متدهای کلاس دیگری را به ارث ببرد. این ویژگی از تکرار بیهوده کدها جلوگیری می‌کند.

class Vehicle {
    public $engineStatus = false;

    public function startEngine() {
        $this->engineStatus = true;
        return "موتور روشن شد.";
    }
}

class ElectricCar extends Vehicle {
    public $batteryLevel = 100;
}

$myElectricCar = new ElectricCar();
echo $myElectricCar->startEngine(); // خروجی: موتور روشن شد.

۲. کپسوله‌سازی (Encapsulation)

کپسوله‌سازی به معنای محدود کردن دسترسی مستقیم به داده‌های درون یک شیء است. این کار با کمک کلمات کلیدی دسترسی (Access Modifiers) یعنی public، protected و private انجام می‌شود. گوگل همیشه توصیه می‌کند که ویژگی‌ها به صورت private تعریف شوند و دسترسی به آن‌ها از طریق متدهای Getter و Setter صورت گیرد.

class User {
    private $password;

    public function setPassword($password) {
        if (strlen($password) < 8) {
            throw new Exception("رمز عبور باید حداقل ۸ کاراکتر باشد.");
        }
        $this->password = password_hash($password, PASSWORD_BCRYPT);
    }
}

۳. چندریختی (Polymorphism)

چندریختی به اشیاء کلاس‌های مختلف اجازه می‌دهد که متدهایی با نام یکسان اما با پیاده‌سازی‌های متفاوت داشته باشند. این کار معمولاً از طریق Interfaceها یا کلاس‌های انتزاعی انجام می‌شود.

۴. انتزاع (Abstraction)

انتزاع به معنای پنهان کردن جزئیات پیچیده پیاده‌سازی و نمایش دادن فقط ویژگی‌های ضروری به کاربر است. کلاس‌های abstract نقش مستقیمی در ایجاد انتزاع ایفا می‌کنند.

بهترین شیوه‌ها و استانداردهای گوگل در PHP OOP

  • پیروی از استاندارد PSR-12: نام کلاس‌ها باید به صورت تک‌کلمه‌ای و با استاندارد StudlyCaps (مانند UserSession) نام‌گذاری شوند.
  • قانون تک مسئولیتی (Single Responsibility): هر کلاس باید فقط و فقط یک وظیفه مشخص داشته باشد.
  • استفاده از Type Hinting: همیشه نوع ورودی‌ها و خروجی‌های متدها را مشخص کنید تا خطاهای زمان اجرا به حداقل برسند.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل
1403/08/16 22:58

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل

مطالعه بیشتر
مقایسه کامل و جامع MySQLi و PDO در PHP: کدام یک برای پروژه شما مناسب‌تر است؟
1405/05/04 23:45

مقایسه کامل و جامع MySQLi و PDO در PHP: کدام یک برای پروژه شما مناسب‌تر است؟

مطالعه بیشتر
آموزش جامع خواندن و نوشتن فایل متنی در PHP (به زبان ساده)
1405/05/04 23:17

آموزش جامع خواندن و نوشتن فایل متنی در PHP (به زبان ساده)

مطالعه بیشتر
آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination
1402/05/29 21:27

آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination

مطالعه بیشتر
آموزش اصول کار با WebSockets و ارتباطات بلادرنگ در وب: راهنمای کامل
1403/08/05 20:55

آموزش اصول کار با WebSockets و ارتباطات بلادرنگ در وب: راهنمای کامل

مطالعه بیشتر
تفاوت Callbacks و Promises در جاوا اسکریپت: مقایسه جامع با مثال‌ها
1403/07/30 21:53

تفاوت Callbacks و Promises در جاوا اسکریپت: مقایسه جامع با مثال‌ها

مطالعه بیشتر
نصب Vue.js و ایجاد پروژه ساده: آموزش گام‌به‌گام راه‌اندازی Vue
1402/06/28 00:41

نصب Vue.js و ایجاد پروژه ساده: آموزش گام‌به‌گام راه‌اندازی Vue

مطالعه بیشتر
آشنایی با Vue CLI و ایجاد پروژه‌های پیشرفته در Vue.js | راهنمای کامل
1404/09/29 21:09

آشنایی با Vue CLI و ایجاد پروژه‌های پیشرفته در Vue.js | راهنمای کامل

مطالعه بیشتر
آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها
1403/06/02 20:49

آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها

مطالعه بیشتر
آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل
1405/05/13 21:34

آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل

مطالعه بیشتر
آموزش استفاده از object-fit و object-position در CSS: تنظیم و قرارگیری تصاویر به‌صورت دقیق
1403/08/12 19:51

آموزش استفاده از object-fit و object-position در CSS: تنظیم و قرارگیری تصاویر به‌صورت دقیق

مطالعه بیشتر
آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد
1404/09/24 20:52

آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد