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

آموزش Property و Method در PHP شیء‌گرا (OOP) به زبان ساده

1405/07/28 21:56 محراب حسن زاده
آموزش Property و Method در PHP شیء‌گرا (OOP) به زبان ساده

مقدمه‌ای بر شیء‌گرایی (OOP) در PHP

برنامه‌نویسی شیء‌گرا یا Object-Oriented Programming (به اختصار OOP) یک الگوی برنامه‌نویسی قدرتمند است که به ما کمک می‌کند کدهای خود را با شبیه‌سازی دنیای واقعی، ساختاریافته‌تر و منظم‌تر بنویسیم. دو مفهوم پایه‌ای و بسیار اساسی در این الگو، پراپرتی (Property) و متد (Method) هستند.

اگر یک کلاس را مانند یک نقشه ساختمانی در نظر بگیریم، شیء (Object) سازه‌ای است که از روی آن نقشه ساخته می‌شود. ویژگی‌های این سازه (مانند رنگ دیوار، تعداد اتاق‌ها و مساحت) همان پراپرتی‌ها هستند و فعالیت‌هایی که در آن انجام می‌شود (مانند باز کردن درها یا روشن کردن سیستم گرمایشی) همان متدها نام دارند.

پراپرتی (Property) در PHP چیست؟

پراپرتی‌ها در واقع همان متغیرهایی هستند که درون یک کلاس تعریف می‌شوند و مشخصات یا داده‌های مربوط به آن کلاس را در خود ذخیره می‌کنند. برای تعریف یک پراپرتی، ابتدا یکی از کلمات کلیدی دسترسی (مانند public) و سپس نام متغیر را می‌آوریم.


class Car {
    public $brand;
    public $color;
}

در مثال فوق، کلاس Car دارای دو ویژگی به نام‌های brand (برند) و color (رنگ) است. این متغیرها ویژگی‌های فیزیکی خودروی ما را مشخص می‌کنند.

متد (Method) در PHP چیست؟

متدها توابعی هستند که درون یک کلاس تعریف می‌شوند و وظیفه انجام کار خاصی را بر عهده دارند. متدها رفتار شیء را توصیف می‌کنند. برای مثال، یک خودرو می‌تواند حرکت کند یا ترمز کند.


class Car {
    public $brand;
    public $color;

    public function startEngine() {
        return "موتور خودروی " . $this->brand . " روشن شد!";
    }
}

در این مثال، تابع startEngine متدی است که رفتاری را برای خودروی ما شبیه‌سازی می‌کند.

کلمه کلیدی $this چیست و چه کاربردی دارد؟

شبه‌متغیر $this در PHP برای اشاره به نمونه فعلی از کلاس (یعنی همان شیء جاری) استفاده می‌شود. زمانی که درون یک متد می‌خواهیم به پراپرتی‌ها یا دیگر متدهای همان کلاس دسترسی داشته باشیم، از $this->propertyName استفاده می‌کنیم تا PHP متوجه شود مقصود ما ویژگی‌های متعلق به همین شیء خاص است.

سطوح دسترسی (Access Modifiers) به زبان ساده

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

  • public: از همه جا (داخل کلاس و خارج کلاس) قابل دسترسی و تغییر است.
  • private: فقط و فقط از داخل کلاسی که تعریف شده قابل دسترسی است.
  • protected: فقط از داخل خود کلاس و کلاس‌هایی که از آن ارث‌بری کرده‌اند (فرزندان) قابل دسترسی است.

یک نمونه کد کامل و استاندارد

بیایید تمام مفاهیم گفته شده را در یک کلاس واقعی به نام User جمع‌بندی کنیم که شامل پراپرتی‌های private و متدهای Getter برای دسترسی امن به آن‌هاست:


class User {
    // تعریف پراپرتی‌های خصوصی (کپسوله‌سازی)
    private $username;
    private $email;

    // متد جادویی سازنده برای مقداردهی اولیه
    public function __construct($username, $email) {
        $this->username = $username;
        $this->email = $email;
    }

    // متد عمومی برای دسترسی به نام کاربری
    public function getUsername() {
        return $this->username;
    }

    // متد برای دریافت اطلاعات کامل کاربری
    public function getProfileInfo() {
        return "کاربر: " . $this->getUsername() . " | ایمیل: " . $this->email;
    }
}

// نمونه‌سازی یا ایجاد شیء جدید
$user1 = new User("mohammad_dev", "m.dev@gmail.com");
echo $user1->getProfileInfo();

بهترین شیوه‌ها (Best Practices) در توسعه استاندارد

طبق استانداردهای جهانی توسعه و تمیزنویسی کد (Clean Code):

  1. اصل کپسوله‌سازی (Encapsulation): بهتر است همیشه پراپرتی‌های خود را به صورت private یا protected تعریف کنید و برای خواندن یا تغییر مقدار آن‌ها از متدهای Getter و Setter استفاده نمایید.
  2. نام‌گذاری استاندارد: نام پراپرتی‌ها را با روش camelCase (مانند $userEmail) و نام کلاس‌ها را با PascalCase (مانند UserProfile) بنویسید.
  3. مسئولیت واحد (Single Responsibility): هر متد در کلاس باید فقط و فقط یک وظیفه مشخص را انجام دهد و از نوشتن متدهای شلوغ و چندمنظوره پرهیز کنید.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش ارث‌بری (Inheritance) در جاوا اسکریپت: نحوه استفاده از پروتوتایپ‌ها و کلاس‌ها
1403/07/28 21:20

آموزش ارث‌بری (Inheritance) در جاوا اسکریپت: نحوه استفاده از پروتوتایپ‌ها و کلاس‌ها

مطالعه بیشتر
کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius
1403/08/09 20:16

کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius

مطالعه بیشتر
آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای
1402/05/18 00:00

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای

مطالعه بیشتر
راهنمای جامع معرفی PHP؛ تاریخچه، ویژگی‌ها و جایگاه آن در توسعه وب
1405/03/14 23:35

راهنمای جامع معرفی PHP؛ تاریخچه، ویژگی‌ها و جایگاه آن در توسعه وب

مطالعه بیشتر
پیمایش اشیاء و آرایه‌ها در جاوا اسکریپت: راهنمای کامل برای Object.keys، Object.values، for...in و for...of
1403/07/04 18:12

پیمایش اشیاء و آرایه‌ها در جاوا اسکریپت: راهنمای کامل برای Object.keys، Object.values، for...in و for...of

مطالعه بیشتر
آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed
1402/06/05 23:43

آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed

مطالعه بیشتر
مفاهیم پیشرفته اشیاء در جاوا اسکریپت: مدیریت خصوصیات و متدها
1403/07/04 17:40

مفاهیم پیشرفته اشیاء در جاوا اسکریپت: مدیریت خصوصیات و متدها

مطالعه بیشتر
تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور
1404/09/21 23:58

تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور

مطالعه بیشتر
آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی
1403/08/05 20:43

آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل
1403/08/05 20:24

آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل

مطالعه بیشتر
آموزش جامع عملگرهای مقایسه‌ای در PHP؛ بررسی تفاوت == و ===
1405/04/03 23:47

آموزش جامع عملگرهای مقایسه‌ای در PHP؛ بررسی تفاوت == و ===

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

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

مطالعه بیشتر

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