شی گرایی در php چیست؛ بررسی مفاهیم و مثال های کاربردی

مقالات
یکشنبه 11 شهریور 1403
جهت مطالعه این مقاله به 15 دقیقه زمان نیاز دارید
شی گرایی در php چیست؛ بررسی مفاهیم و مثال های کاربردی
آنچه در این مقاله خواهیم خواند:

مقدمه

شی‌گرایی (Object-Oriented Programming یا OOP) یکی از پارادایم‌های برنامه‌نویسی است که به توسعه‌دهندگان این امکان را می‌دهد تا کدهای خود را به صورت ساختاریافته‌تر و قابل مدیریت‌تر بنویسند. این پارادایم بر مبنای مفهوم "اشیاء" (Objects) و "کلاس‌ها" (Classes) بنا شده است. در زبان PHP، شی‌گرایی از نسخه ۵ به بعد به طور کامل پشتیبانی می‌شود و به یکی از مهم‌ترین ویژگی‌های این زبان تبدیل شده است. در این مقاله، به بررسی مفاهیم پایه‌ای شی‌گرایی در PHP و همچنین مثال‌های کاربردی آن خواهیم پرداخت.



 

مفاهیم پایه‌ای شی‌گرایی

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



 

کلاس‌ها (Classes)

کلاس‌ها در واقع الگوهایی هستند که اشیاء بر اساس آن‌ها ساخته می‌شوند. هر کلاس می‌تواند دارای خواص (Properties) و متدها (Methods) باشد. خواص، ویژگی‌ها و متغیرهایی هستند که در کلاس تعریف می‌شوند و متدها، توابعی هستند که برای انجام عملیات روی این خواص به کار می‌روند.


 

php

Copy code

class Car {

    public $color;

    public $model;


 

    public function setProperties($color, $model) {

        $this->color = $color;

        $this->model = $model;

    }


 

    public function display() {

        return "This car is a " . $this->color . " " . $this->model;

    }

}



 

اشیاء (Objects)

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


 

php

Copy code

$myCar = new Car();

$myCar->setProperties('Red', 'Toyota');

echo $myCar->display();


 

در این مثال، شیء $myCar از کلاس Car ساخته شده است و می‌توانیم به خواص و متدهای آن دسترسی داشته باشیم.



 

وراثت (Inheritance)

وراثت یکی از ویژگی‌های کلیدی شی‌گرایی است که به وسیله آن می‌توان یک کلاس جدید را بر اساس یک کلاس موجود تعریف کرد. این ویژگی به کلاس جدید امکان می‌دهد که تمامی خواص و متدهای کلاس پایه (پدر) را به ارث برده و از آن‌ها استفاده کند.


 

php

Copy code

class ElectricCar extends Car {

    public $batteryCapacity;


 

    public function setBatteryCapacity($capacity) {

        $this->batteryCapacity = $capacity;

    }


 

    public function display() {

        return parent::display() . " with a battery capacity of " . $this->batteryCapacity . " kWh.";

    }

}

در این مثال، کلاس ElectricCar از کلاس Car به ارث برده شده و علاوه بر خواص و متدهای کلاس پایه، ویژگی‌ها و متدهای جدیدی نیز به آن اضافه شده است.



 

چندریختی (Polymorphism)

چندریختی به این معناست که یک متد یا کلاس می‌تواند در اشکال مختلف عمل کند. این ویژگی به توسعه‌دهندگان این امکان را می‌دهد که با استفاده از یک نام واحد، متدهای مختلفی را با عملکردهای متفاوت در کلاس‌های مختلف تعریف کنند.


 

php

Copy code

class GasCar extends Car {

    public function display() {

        return "This is a gas-powered " . $this->model;

    }

}


 

$myElectricCar = new ElectricCar();

$myElectricCar->setProperties('Blue', 'Tesla');

$myElectricCar->setBatteryCapacity(85);


 

$myGasCar = new GasCar();

$myGasCar->setProperties('Black', 'Ford');


 

echo $myElectricCar->display(); // Output: This car is a Blue Tesla with a battery capacity of 85 kWh.

echo $myGasCar->display(); // Output: This is a gas-powered Ford

در این مثال، متد display در کلاس‌های ElectricCar و GasCar به صورت متفاوتی پیاده‌سازی شده است.



 

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

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


 

php

Copy code

class BankAccount {

    private $balance = 0;


 

    public function deposit($amount) {

        $this->balance += $amount;

    }


 

    public function getBalance() {

        return $this->balance;

    }

}


 

$account = new BankAccount();

$account->deposit(500);

echo $account->getBalance(); // Output: 500


 

در این مثال، ویژگی balance خصوصی (private) است و تنها از طریق متدهای تعریف‌شده می‌توان به آن دسترسی داشت.

 

بیشتر بخوانید: php چیست و چه کاربردی دارد؟
 

مثال‌های کاربردی از شی‌گرایی در PHP

برای درک بهتر مفاهیم شی‌گرایی در PHP، بهتر است به چند مثال کاربردی بپردازیم.


 

سیستم مدیریت کارمندان

فرض کنید می‌خواهیم یک سیستم ساده برای مدیریت کارمندان یک شرکت طراحی کنیم. در این سیستم، ما می‌توانیم یک کلاس پایه به نام Employee داشته باشیم و کلاس‌های دیگر مانند Manager و Engineer از آن ارث ببرند.


 

php

Copy code

class Employee {

    protected $name;

    protected $position;


 

    public function __construct($name, $position) {

        $this->name = $name;

        $this->position = $position;

    }


 

    public function displayInfo() {

        return "Name: " . $this->name . ", Position: " . $this->position;

    }

}


 

class Manager extends Employee {

    public function assignTask($task) {

        return $this->name . " has assigned task: " . $task;

    }

}


 

class Engineer extends Employee {

    public function completeTask($task) {

        return $this->name . " has completed task: " . $task;

    }

}


 

$manager = new Manager('John Doe', 'Manager');

echo $manager->displayInfo(); // Output: Name: John Doe, Position: Manager

echo $manager->assignTask('Project A'); // Output: John Doe has assigned task: Project A


 

$engineer = new Engineer('Jane Smith', 'Engineer');

echo $engineer->displayInfo(); // Output: Name: Jane Smith, Position: Engineer

echo $engineer->completeTask('Project A'); // Output: Jane Smith has completed task: Project A


 

سیستم خرید و فروش آنلاین

در یک سیستم خرید و فروش آنلاین، ما می‌توانیم از شی‌گرایی برای مدیریت محصولات، کاربران و سفارش‌ها استفاده کنیم. به عنوان مثال، می‌توانیم یک کلاس Product برای مدیریت اطلاعات محصولات، یک کلاس User برای مدیریت کاربران و یک کلاس Order برای مدیریت سفارش‌ها داشته باشیم.


 

php

Copy code

class Product {

    private $name;

    private $price;


 

    public function __construct($name, $price) {

        $this->name = $name;

        $this->price = $price;

    }


 

    public function displayProduct() {

        return "Product: " . $this->name . ", Price: $" . $this->price;

    }

}


 

class User {

    private $username;

    private $cart = [];


 

    public function __construct($username) {

        $this->username = $username;

    }


 

    public function addToCart(Product $product) {

        $this->cart[] = $product;

    }


 

    public function displayCart() {

        $output = "Cart for " . $this->username . ": ";

        foreach ($this->cart as $product) {

            $output .= $product->displayProduct() . "; ";

        }

        return $output;

    }

}


 

class Order {

    private $user;

    private $products = [];


 

    public function __construct(User $user, $products) {

        $this->user = $user;

        $this->products = $products;

    }


 

    public function placeOrder() {

        return "Order placed by " . $this->user->displayCart();

    }

}


 

$product1 = new Product('Laptop', 1000);

$product2 = new Product('Smartphone', 700);


 

$user = new User('Alice');

$user->addToCart($product1);

$user->addToCart($product2);


 

$order = new Order($user, [$product1, $product2]);

echo $order->placeOrder();

// Output: Order placed by Cart for Alice: Product: Laptop, Price: $1000; Product: Smartphone, Price: $700;


 

نتیجه‌گیری

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

 موسسه پل استار رشت که مرکز شتابدهی استعداد کودکان و توانایی نوجوانان است، برگزار کننده دوره های آنلاینی مانند برنامه نویسی برای نوجوانان نیز هست و شما می توانید با شرکت در این دوره، فرصتی شگفت انگیز برای فرزندتان به ارمغان آورید و آینده شغلی او از همین حالا ضمانت کنید.