شیءگرایی چیست؟ (PHP OOP Intro)
مقدمهای بر برنامهنویسی شیءگرا (OOP) 🧱✨
برنامهنویسیِ شیءگرا یا Object-Oriented Programming روشی است برایِ مدلسازیِ دنیایِ واقعی در دنیایِ کدها. در این پارادایم، ما به جایِ فکر کردن به توابعِ جداگانه، به "اشیاء" فکر میکنیم.
چرا OOP؟
- تولدِ دوبارهیِ کد: میتوانید از کدهایِ قبلی به راحتی در پروژههایِ جدید استفاده کنید.
- مدیریتِ پیچیدگی: پروژههایِ بزرگ را به قطعاتِ کوچک و مستقل تقسیم میکنید.
- امنیتِ بیشتر: دادههایِ حساس را درونِ کلاسها مخفی میکنید.
دو بالِ پرواز در OOP: کلاس و شیء
کلاس (Class): نقشهیِ ساختمانی یا Blueprint است (مثلاً نقشهیِ یک ماشین).
شیء (Object): نمونهیِ واقعی ساخته شده از رویِ نقشه است (مثلاً یک ماشینِ قرمز با رنگ و سرعتِ مشخص).
یک مثالِ ذهنی:
تصور کنید یک بازیِ کامپیوتری میسازید. "قهرمان" یک کلاس است که ویژگیهایی مثل (سلامتی، نام) و رفتارهایی مثل (دویدن، حمله کردن) دارد. هر بازیکن، یک "شیء" از این کلاس است.
بخش تخصصی: معماریِ پیشرفته و مهندسیِ اشیاء 🐘💎
برنامهنویسیِ شیءگرا در PHP پس از نسخهیِ ۷ و ۸ تغییراتِ بنیادینی داشته و به ابزاری بسیار قدرتمند برایِ ساختِ سیستمهایِ پیچیده تبدیل شده است.
۱. ساختارِ حافظه و Object Handles
در PHP، متغیرهایی که حاویِ یک شیء هستند، خودِ شیء را ذخیره نمیکنند؛ بلکه یک Identifier یا دستگیره (Handle) را نگه میدارند که به جدولِ اشیاءِ درونیِ موتورِ Zend Engine اشاره میکند. به همین دلیل است که وقتی یک شیء را به تابعی پاس میدهید، تغییرات در همان شیءِ اصلی اعمال میشود (شبهارجاع).
۲. رعایتِ اصولِ SOLID
در طراحیِ کلاسها، همیشه به اصلِ Single Responsibility پایبند باشید. یک کلاس باید فقط یک دلیل برایِ تغییر داشته باشد. استفاده از Interfaces به شما اجازه میدهد وابستگیهایِ کدتان را به حداقل برسانید (Dependency Inversion).
۳. کدهایِ JIT-Friendly
موتورِ JIT در PHP 8 کدها را به زبانِ ماشین تبدیل میکند. نوشتنِ کدهایِ شیءگرا با ساختارِ مشخص و استفاده از Property Typing به JIT کمک میکند تا کدهایِ شما را بسیار بهینهتر اجرا کند.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک کلاسِ ساده به نام Fruit (با حرف اول بزرگ) تعریف کنید. فعلاً داخلِ آن چیزی ننویسید.
<?php
class Fruit {
}
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.