شی گرایی در php چیست؟ (مثال های کاربردی)

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

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

 

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

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

 

کلاس‌ها (Classes)  در شی‌گرایی PHP

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

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

 

php

Copy code

$myCar = new Car();

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

echo $myCar->display();

 

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

 

وراثت (Inheritance)  در شی‌گرایی PHP

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

 

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

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

 

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

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

 

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، بهتر است به چند مثال کاربردی بپردازیم.

 

سیستم مدیریت کارمندان  در شی‌گرایی 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

 

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

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

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