دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / شیءگرایی چیست؟ (PHP OOP Intro)

شیءگرایی چیست؟ (PHP OOP Intro)

30 دقیقه Article

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

برنامه‌نویسیِ شیءگرا یا Object-Oriented Programming روشی است برایِ مدل‌سازیِ دنیایِ واقعی در دنیایِ کدها. در این پارادایم، ما به جایِ فکر کردن به توابعِ جداگانه، به "اشیاء" فکر می‌کنیم.

چرا OOP؟

  • تولدِ دوباره‌یِ کد: می‌توانید از کدهایِ قبلی به راحتی در پروژه‌هایِ جدید استفاده کنید.
  • مدیریتِ پیچیدگی: پروژه‌هایِ بزرگ را به قطعاتِ کوچک و مستقل تقسیم می‌کنید.
  • امنیتِ بیشتر: داده‌هایِ حساس را درونِ کلاس‌ها مخفی می‌کنید.

دو بالِ پرواز در OOP: کلاس و شیء

کلاس (Class): نقشه‌یِ ساختمانی یا Blueprint است (مثلاً نقشه‌یِ یک ماشین).

شیء (Object): نمونه‌یِ واقعی ساخته شده از رویِ نقشه است (مثلاً یک ماشینِ قرمز با رنگ و سرعتِ مشخص).

تغییرِ ذهنی: در برنامه‌نویسیِ سنتی (Procedural) شما می‌پرسید "چه کاری باید انجام شود؟"، اما در OOP می‌پرسید "چه کسی (چه شیئی) این کار را انجام می‌دهد؟"

یک مثالِ ذهنی:

تصور کنید یک بازیِ کامپیوتری می‌سازید. "قهرمان" یک کلاس است که ویژگی‌هایی مثل (سلامتی، نام) و رفتارهایی مثل (دویدن، حمله کردن) دارد. هر بازیکن، یک "شیء" از این کلاس است.

قدرتِ PHP: نسخه‎های جدید PHP به شدت در زمینه‌یِ OOP پیشرفت کرده‌اند و امروزه فریم‌ورک‌هایِ بزرگی مثل لاراول کاملاً بر این پایه استوار هستند.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: معماریِ پیشرفته و مهندسیِ اشیاء 🐘💎

برنامه‌نویسیِ شیءگرا در PHP پس از نسخه‌یِ ۷ و ۸ تغییراتِ بنیادینی داشته و به ابزاری بسیار قدرتمند برایِ ساختِ سیستم‌هایِ پیچیده تبدیل شده است.

۱. ساختارِ حافظه و Object Handles

در PHP، متغیرهایی که حاویِ یک شیء هستند، خودِ شیء را ذخیره نمی‌کنند؛ بلکه یک Identifier یا دستگیره (Handle) را نگه می‌دارند که به جدولِ اشیاءِ درونیِ موتورِ Zend Engine اشاره می‌کند. به همین دلیل است که وقتی یک شیء را به تابعی پاس می‌دهید، تغییرات در همان شیءِ اصلی اعمال می‌شود (شبه‌ارجاع).

۲. رعایتِ اصولِ SOLID

در طراحیِ کلاس‌ها، همیشه به اصلِ Single Responsibility پایبند باشید. یک کلاس باید فقط یک دلیل برایِ تغییر داشته باشد. استفاده از Interfaces به شما اجازه می‌دهد وابستگی‌هایِ کدتان را به حداقل برسانید (Dependency Inversion).

۳. کدهایِ JIT-Friendly

موتورِ JIT در PHP 8 کدها را به زبانِ ماشین تبدیل می‌کند. نوشتنِ کدهایِ شیءگرا با ساختارِ مشخص و استفاده از Property Typing به JIT کمک می‌کند تا کدهایِ شما را بسیار بهینه‌تر اجرا کند.

نکته مهندسی: همیشه از Strict Types استفاده کنید. این کار باعث می‌شود خطاهایِ منطقی در زمانِ توسعه پیدا شوند و از رفتارهایِ پیش‌بینی‌نشده در هنگامِ کار با متدها جلوگیری شود.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تعریفِ یک کلاسِ خالی Easy
سوال تمرین

یک کلاسِ ساده به نام Fruit (با حرف اول بزرگ) تعریف کنید. فعلاً داخلِ آن چیزی ننویسید.

پاسخ تمرین
PHP
<?php
class Fruit {
}
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.