آموزش رایگان 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: همیشه نوع ورودی‌ها و خروجی‌های متدها را مشخص کنید تا خطاهای زمان اجرا به حداقل برسند.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

تفاوت include، require، include_once و require_once در PHP
1405/05/01 20:32

تفاوت include، require، include_once و require_once در PHP

مطالعه بیشتر
عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف
1402/06/28 00:20

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف

مطالعه بیشتر
آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)
1405/05/13 21:26

آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)

مطالعه بیشتر
مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها
1403/07/28 21:58

مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها

مطالعه بیشتر
آموزش گام به گام ساخت سیستم لاگین و لاگ‌اوت در PHP به صورت ایمن
1405/05/14 22:13

آموزش گام به گام ساخت سیستم لاگین و لاگ‌اوت در PHP به صورت ایمن

مطالعه بیشتر
معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی
1402/06/28 00:33

معرفی Vue.js و ویژگی‌های کلیدی آن: فریمورک مدرن برای توسعه وب تعاملی

مطالعه بیشتر
مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها
1403/07/29 20:37

مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها

مطالعه بیشتر
آموزش ایجاد یک پروژه ساده React: شروع کار و ساختاردهی کامپوننت‌ها
1402/06/28 23:04

آموزش ایجاد یک پروژه ساده React: شروع کار و ساختاردهی کامپوننت‌ها

مطالعه بیشتر
آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها
1402/06/10 18:07

آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها

مطالعه بیشتر
آموزش مفاهیم اولیه CSS Grid Layout: طراحی شبکه‌های پیچیده و واکنش‌گرا راهنمای کامل
1402/06/06 23:24

آموزش مفاهیم اولیه CSS Grid Layout: طراحی شبکه‌های پیچیده و واکنش‌گرا راهنمای کامل

مطالعه بیشتر
آموزش کامل کنترل جریان و استفاده از if و else در جاوا اسکریپت: راهنمای جامع برای مبتدیان
1402/11/02 23:02

آموزش کامل کنترل جریان و استفاده از if و else در جاوا اسکریپت: راهنمای جامع برای مبتدیان

مطالعه بیشتر
آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی
1402/05/29 21:03

آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی

مطالعه بیشتر

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