سی ام اس نویسسی ام اس نویسیاد بگیر، سیستم خودتو بنویس
مجلهتماس با ما
سی ام اس نویسسی ام اس نویس

CMS نویس مرجعی برای آموزش برنامه نویسی وب و PHP، توسعه افزونه‌های اختصاصی وردپرس، طراحی ورک‌فلو و اتوماسیون با n8n و توسعه CMS های اختصاصی است. هدف ما ارائه آموزش‌های کاربردی و راهکارهای حرفه‌ای برای توسعه‌دهندگان، کسب‌وکارها و علاقه‌مندان به دنیای برنامه‌نویسی است.

پیوندهای سریع
محصولات فیزیکیمحصولات دیجیتالدوره‌های آموزشی
سی ام اس نویس
مجله سی ام اس نویستماس با ماپنل کاربری
سی ام اس نویس — تمامی حقوق برای سی ام اس نویس محفوظ است. © 1406 تماس با ما09307711941
Class و Object در PHP چیست؟ آموزش کلاس و آبجکت در PHP

Class و Object در PHP چیست؟ آموزش کلاس و آبجکت در PHP

ممدیر کل سیستم ۱۸ شهریور ۱۴۰۵ ۲۱ دقیقه مطالعه ۲ بازدید
Class و Object در PHP چیست؟ آموزش کلاس و آبجکت در PHP

اگر مقاله OOP در PHP را مطالعه کرده باشید، می‌دانید که Class و Object دو مفهوم پایه در برنامه‌نویسی شی‌گرا هستند.

تقریباً تمام برنامه‌های Object-Oriented که با PHP نوشته می‌شوند، از Classها و Objectها تشکیل شده‌اند. در پروژه‌های واقعی مانند فروشگاه اینترنتی، سیستم مدیریت کاربران، سیستم پرداخت، CMS، API و Applicationهای Laravel نیز با تعداد زیادی Class و Object سروکار خواهید داشت.

اما دقیقاً Class در PHP چیست؟ Object چیست؟ چه تفاوتی با یکدیگر دارند و چگونه باید آنها را طراحی و استفاده کنیم؟

در این آموزش از پایه شروع می‌کنیم و با مثال‌های عملی یاد می‌گیریم چگونه در PHP Class بسازیم، از آن Object ایجاد کنیم، Property و Method تعریف کنیم و با Constructor و Visibility کدهای شی‌گرای قابل نگهداری‌تری بنویسیم.


# Class در PHP چیست؟

Class یا کلاس را می‌توان یک Blueprint یا الگوی ساخت Object در نظر گرفت.

Class مشخص می‌کند یک Object چه:

  • اطلاعاتی داشته باشد؛
  • رفتارهایی داشته باشد؛
  • Propertyهایی داشته باشد؛
  • Methodهایی داشته باشد؛
  • و چه قوانینی برای دسترسی به اطلاعات آن وجود داشته باشد.

برای مثال فرض کنید در یک فروشگاه اینترنتی موجودیتی به نام Product داریم.

می‌توانیم آن را به شکل زیر تعریف کنیم:


class Product

{

    public string $name;

    public float $price;

}

در این مثال Product یک Class است.

این Class مشخص می‌کند Product دارای دو Property به نام‌های:


name

price

باشد.

اما هنوز هیچ Product واقعی ایجاد نکرده‌ایم.


# Object در PHP چیست؟

Object یک نمونه از یک Class است.

اگر Class را Blueprint یک خانه در نظر بگیریم، Object خانه‌ای است که بر اساس آن Blueprint ساخته شده است.

برای ساخت Object در PHP از کلمه کلیدی:


new

استفاده می‌کنیم.

مثلاً:


$product = new Product();

در اینجا:


Product

Class است و:


$product

یک Object از Class Product است.

حالا می‌توانیم اطلاعات Object را مقداردهی کنیم:


$product->name = 'Laptop';

$product->price = 50000000;


# تفاوت Class و Object در PHP

تفاوت Class و Object را می‌توان به این شکل خلاصه کرد:

ClassObject
Blueprint یا الگو استنمونه ساخته‌شده از Class است
تعریف Property و Method را مشخص می‌کنددارای مقدار واقعی Propertyها است
به خودی خود Object نیستبا new ایجاد می‌شود
می‌تواند چندین Object داشته باشداز یک Class ساخته می‌شود

برای مثال:


class User

{

    public string $name;

}

در اینجا User یک Class است.

اما:


$user1 = new User();

$user2 = new User();

دو Object متفاوت از همان Class هستند.


# چگونه در PHP یک Class بسازیم؟

ساخت Class با کلمه کلیدی class انجام می‌شود:


class User

{

}

این ساده‌ترین Class ممکن است.

البته در پروژه واقعی معمولاً Class دارای Property و Method است:


class User

{

    public string $name;



    public function sayHello(): void

    {

        echo "Hello";

    }

}

در این مثال:


User

نام Class است.

و:


$name

یک Property و:


sayHello()

یک Method است.


# چگونه از Class یک Object بسازیم؟

برای ساخت Object از:


new

استفاده می‌کنیم.

مثلاً:


$user = new User();

اکنون $user یک Object از Class User است.

می‌توانیم Method آن را اجرا کنیم:


$user->sayHello();


# ساخت چند Object از یک Class

یکی از مزیت‌های Class این است که می‌توانیم از یک Class چندین Object بسازیم.

مثلاً:


$user1 = new User();

$user2 = new User();

$user3 = new User();

هر Object وضعیت مستقل خودش را دارد.

مثلاً:


$user1->name = 'Ali';

$user2->name = 'Reza';

$user3->name = 'Sara';

هر سه Object از یک Class ساخته شده‌اند، اما مقدار Property آنها می‌تواند متفاوت باشد.


# Property در PHP چیست؟

Property متغیری است که داخل Class تعریف می‌شود.

مثلاً:


class Product

{

    public string $name;

    public float $price;

    public int $stock;

}

در اینجا سه Property داریم:


name

price

stock

Propertyها وضعیت یا State مربوط به Object را نگهداری می‌کنند.


# مقداردهی Propertyهای Object

پس از ساخت Object می‌توان Propertyهای عمومی را مقداردهی کرد:


$product = new Product();



$product->name = 'Laptop';

$product->price = 50000000;

$product->stock = 10;

اکنون Object دارای اطلاعات مشخصی است.

می‌توانیم مقدار آنها را نیز بخوانیم:


echo $product->name;

echo $product->price;


# Method در PHP چیست؟

Method در واقع Functionای است که داخل Class تعریف می‌شود.

مثلاً:


class User

{

    public function login(): void

    {

        echo "User logged in";

    }

}

در اینجا:


login()

یک Method است.

برای اجرای آن:


$user = new User();



$user->login();

استفاده می‌کنیم.


# تفاوت Property و Method

به شکل ساده:

Property برای نگهداری اطلاعات و State استفاده می‌شود.

Method برای تعریف رفتار Object استفاده می‌شود.

مثلاً:


class Product

{

    public string $name;

    public float $price;



    public function getPrice(): float

    {

        return $this->price;

    }

}

در اینجا:


name

price

Property هستند.

و:


getPrice()

Method است.


# کلمه کلیدی $this در PHP چیست؟

یکی از مهم‌ترین مفاهیم هنگام کار با Objectها، $this است.

$this به Object فعلی اشاره می‌کند.

مثلاً:


class User

{

    public string $name;



    public function sayHello(): void

    {

        echo "Hello " . $this->name;

    }

}

حالا:


$user = new User();



$user->name = 'Ali';



$user->sayHello();

خروجی:


Hello Ali

در اینجا:


$this->name

به Property name مربوط به همان Object اشاره می‌کند.


# Constructor در PHP چیست؟

Constructor یک Method ویژه است که هنگام ساخت Object اجرا می‌شود.

Constructor با:


__construct()

تعریف می‌شود.

مثلاً:


class User

{

    public string $name;



    public function __construct(string $name)

    {

        $this->name = $name;

    }

}

اکنون هنگام ساخت Object:


$user = new User('Ali');

مقدار Ali به Constructor ارسال می‌شود.

سپس:


$this->name = $name;

Property مربوط به Object را مقداردهی می‌کند.


# چرا Constructor کاربرد دارد؟

بدون Constructor ممکن است مجبور شویم بعد از ساخت Object چند Property را جداگانه مقداردهی کنیم:


$user = new User();



$user->name = 'Ali';

$user->email = 'ali@example.com';

اما با Constructor:


$user = new User(

    'Ali',

    'ali@example.com'

);

می‌توانیم Object را از ابتدا با State موردنیاز ایجاد کنیم.


# Constructor Property Promotion در PHP

در نسخه‌های جدید PHP می‌توان Constructor را کوتاه‌تر نوشت.

مثلاً:


class User

{

    public function __construct(

        public string $name,

        public string $email

    ) {

    }

}

حالا:


$user = new User(

    'Ali',

    'ali@example.com'

);

Propertyها و Constructor به شکل کوتاه‌تری تعریف شده‌اند.

این Syntax در پروژه‌های مدرن PHP بسیار کاربردی است.


# Visibility در Classهای PHP

Propertyها و Methodها می‌توانند سطح دسترسی متفاوتی داشته باشند.

سه سطح اصلی عبارت‌اند از:


public

protected

private


# public در PHP

عضو public از خارج Class نیز قابل دسترسی است.

مثلاً:


class User

{

    public string $name;

}

می‌توان نوشت:


$user = new User();



$user->name = 'Ali';



echo $user->name;


# private در PHP

عضو private فقط از داخل همان Class قابل دسترسی است.

مثلاً:


class User

{

    private string $password;

}

در این حالت دسترسی مستقیم از بیرون:


$user->password;

مجاز نیست.

این ویژگی برای محافظت از State داخلی Object بسیار مهم است.


# protected در PHP

عضو protected از داخل همان Class و Classهای فرزند قابل دسترسی است.

مثلاً:


class User

{

    protected string $email;

}

مفهوم protected زمانی اهمیت بیشتری پیدا می‌کند که وارد بحث Inheritance شویم.


# Encapsulation با Class و Object

یکی از مزایای مهم استفاده از Class، امکان کنترل دسترسی به اطلاعات داخلی Object است.

مثلاً فرض کنید یک حساب بانکی داریم:


class BankAccount

{

    private float $balance = 0;



    public function deposit(float $amount): void

    {

        if ($amount <= 0) {

            throw new InvalidArgumentException(

                'Amount must be positive.'

            );

        }



        $this->balance += $amount;

    }



    public function getBalance(): float

    {

        return $this->balance;

    }

}

اکنون کاربر نمی‌تواند مستقیماً بنویسد:


$account->balance = -1000;

چون balance خصوصی است.

در عوض باید از Method مناسب استفاده کند:


$account->deposit(500000);

این نمونه‌ای از Encapsulation است.


# Getter و Setter در PHP

یکی از روش‌های رایج برای کنترل Propertyهای خصوصی استفاده از Getter و Setter است.

مثلاً:


class User

{

    private string $name;



    public function setName(string $name): void

    {

        $this->name = $name;

    }



    public function getName(): string

    {

        return $this->name;

    }

}

استفاده:


$user = new User();



$user->setName('Ali');



echo $user->getName();

با این روش می‌توان منطق Validation را نیز داخل Setter قرار داد.

مثلاً:


public function setName(string $name): void

{

    if ($name === '') {

        throw new InvalidArgumentException(

            'Name cannot be empty.'

        );

    }



    $this->name = $name;

}


# Type Declaration در Propertyها

در PHP مدرن بهتر است نوع Propertyها مشخص باشد.

مثلاً:


class Product

{

    public string $name;

    public float $price;

    public int $stock;

}

این کار باعث می‌شود کد واضح‌تر باشد و بسیاری از خطاهای Type زودتر شناسایی شوند.


# Type Declaration در Methodها

برای پارامترها نیز می‌توان Type تعیین کرد:


public function setPrice(float $price): void

{

    $this->price = $price;

}

و Return Type:


public function getPrice(): float

{

    return $this->price;

}

این روش در پروژه‌های حرفه‌ای PHP توصیه می‌شود.


# مقدار پیش‌فرض Property

می‌توان برای Property مقدار پیش‌فرض تعیین کرد:


class Product

{

    public int $stock = 0;

}

اکنون هنگام ساخت Object:


$product = new Product();



echo $product->stock;

مقدار اولیه 0 خواهد بود.


# Static Property چیست؟

Property معمولی به Object تعلق دارد.

اما Property مربوط به static به Class تعلق دارد.

مثلاً:


class User

{

    public static int $count = 0;

}

می‌توان آن را از طریق Class استفاده کرد:


User::$count++;

Static Property بین Objectهای همان Class به اشتراک گذاشته می‌شود.


# Static Method چیست؟

Method استاتیک نیز بدون ساخت Object قابل فراخوانی است.

مثلاً:


class MathHelper

{

    public static function add(

        int $a,

        int $b

    ): int {

        return $a + $b;

    }

}

استفاده:


$result = MathHelper::add(10, 20);

در اینجا نیازی به:


new MathHelper();

نداریم.

با این حال استفاده از Static باید هدفمند باشد؛ چون در طراحی‌های پیچیده می‌تواند Testability و مدیریت Dependencyها را دشوارتر کند.


# Constant در Class

می‌توان Constant نیز داخل Class تعریف کرد.

مثلاً:


class Order

{

    public const STATUS_PENDING = 'pending';

    public const STATUS_PAID = 'paid';

}

استفاده:


echo Order::STATUS_PAID;

Constant برای مقادیری که نباید تغییر کنند مناسب است.


# متدهای public، private و protected

Methodها نیز مانند Propertyها می‌توانند Visibility داشته باشند.

مثلاً:


class PaymentService

{

    public function pay(): void

    {

        $this->validate();

    }



    private function validate(): void

    {

        // Validation

    }

}

در اینجا pay() از بیرون قابل فراخوانی است، اما validate() فقط داخل Class قابل استفاده است.

این روش برای جدا کردن API عمومی Class از جزئیات داخلی آن بسیار مفید است.


# Object و Reference

وقتی یک Object را به متغیر دیگری نسبت می‌دهیم، رفتار آن با مقادیر ساده PHP متفاوت است.

مثلاً:


$user1 = new User();



$user1->name = 'Ali';



$user2 = $user1;

اکنون $user2 نیز به همان Object اشاره می‌کند.

بنابراین:


$user2->name = 'Reza';

باعث می‌شود وقتی از $user1 نیز مقدار name را می‌خوانیم، مقدار جدید را ببینیم.

این موضوع در کار با Objectها و طراحی Applicationهای بزرگ اهمیت دارد.


# Clone کردن Object در PHP

اگر بخواهیم یک Object را Clone کنیم، می‌توانیم از:


clone

استفاده کنیم.

مثلاً:


$user2 = clone $user1;

در این حالت Object جدیدی ایجاد می‌شود.

PHP همچنین امکان استفاده از:


__clone()

را برای کنترل رفتار Clone در اختیار ما قرار می‌دهد.


# Anonymous Class در PHP

PHP امکان ساخت Anonymous Class را نیز فراهم می‌کند.

مثلاً:


$logger = new class {

    public function log(string $message): void

    {

        echo $message;

    }

};



$logger->log('Hello');

این قابلیت در بعضی سناریوهای خاص کاربرد دارد، اما برای Classهای اصلی Application معمولاً بهتر است Classهای نام‌گذاری‌شده داشته باشیم.


# Final Class در PHP

اگر نخواهیم یک Class توسط Class دیگری Extend شود، می‌توانیم از final استفاده کنیم:


final class PaymentService

{

}

اکنون Class دیگری نمی‌تواند از آن ارث‌بری کند.

این موضوع زمانی اهمیت پیدا می‌کند که طراحی Domain یا API Class باید از Extension جلوگیری کند.


# طراحی یک Class خوب در PHP

صرفاً اینکه بتوانیم Class بسازیم به معنی طراحی خوب نیست.

یک Class مناسب بهتر است:

  • مسئولیت مشخصی داشته باشد.
  • بیش از حد بزرگ نباشد.
  • Dependencyهای خود را شفاف دریافت کند.
  • از Propertyهای داخلی غیرضروری محافظت کند.
  • Methodهای قابل فهم داشته باشد.
  • نام‌گذاری مناسبی داشته باشد.
  • Type Declaration مناسب داشته باشد.

مثلاً به جای:


class Everything

{

}

بهتر است مسئولیت‌ها مشخص باشند:


UserService

PaymentService

OrderService

InvoiceService


# مثال عملی؛ ساخت Class Product

حالا یک مثال نسبتاً واقعی‌تر ایجاد کنیم.


class Product

{

    private string $name;

    private float $price;

    private int $stock;



    public function __construct(

        string $name,

        float $price,

        int $stock

    ) {

        $this->name = $name;

        $this->price = $price;

        $this->stock = $stock;

    }



    public function getName(): string

    {

        return $this->name;

    }



    public function getPrice(): float

    {

        return $this->price;

    }



    public function isAvailable(): bool

    {

        return $this->stock > 0;

    }



    public function decreaseStock(int $quantity): void

    {

        if ($quantity <= 0) {

            throw new InvalidArgumentException(

                'Quantity must be positive.'

            );

        }



        if ($quantity > $this->stock) {

            throw new RuntimeException(

                'Not enough stock.'

            );

        }



        $this->stock -= $quantity;

    }

}

اکنون می‌توانیم Object بسازیم:


$product = new Product(

    'Laptop',

    50000000,

    10

);

قیمت:


echo $product->getPrice();

وضعیت موجودی:


if ($product->isAvailable()) {

    echo 'Product is available.';

}

کاهش موجودی:


$product->decreaseStock(2);

این مثال نشان می‌دهد Class فقط برای نگهداری Property نیست؛ بلکه می‌تواند قوانین و رفتارهای مربوط به آن Domain را نیز مدیریت کند.


# مثال عملی؛ User Class

یک نمونه دیگر:


class User

{

    public function __construct(

        private string $name,

        private string $email

    ) {

    }



    public function getName(): string

    {

        return $this->name;

    }



    public function getEmail(): string

    {

        return $this->email;

    }



    public function changeEmail(string $email): void

    {

        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

            throw new InvalidArgumentException(

                'Invalid email address.'

            );

        }



        $this->email = $email;

    }

}

استفاده:


$user = new User(

    'Ali',

    'ali@example.com'

);



echo $user->getName();



$user->changeEmail(

    'new@example.com'

);

در این طراحی، تغییر Email مستقیماً انجام نمی‌شود و از Method مشخصی استفاده می‌کنیم.


# Class و Object در معماری پروژه

در یک پروژه بزرگ PHP بهتر است Classها ساختار مشخصی داشته باشند.

برای مثال:


src/

├── Models/

│   ├── User.php

│   ├── Product.php

│   └── Order.php

│

├── Services/

│   ├── UserService.php

│   ├── PaymentService.php

│   └── OrderService.php

│

├── Repositories/

│   └── UserRepository.php

│

└── Exceptions/

    └── PaymentException.php

هر Class باید نقش مشخصی در Application داشته باشد.


# Namespace و Class

وقتی تعداد Classها زیاد می‌شود، استفاده از Namespace اهمیت پیدا می‌کند.

مثلاً:


namespace App\Models;



class User

{

}

و در فایل دیگر:


use App\Models\User;



$user = new User();

این ساختار با Composer Autoload و PSR-4 نیز ارتباط دارد.

بنابراین یادگیری Class و Object مقدمه‌ای برای درک بهتر Namespace، Autoload و معماری حرفه‌ای PHP است.


# Class و Object در Laravel

اگر قصد یادگیری Laravel دارید، تقریباً در تمام قسمت‌های Framework با Class و Object کار خواهید کرد.

مثلاً:


class ProductService

{

    public function find(int $id)

    {

        // ...

    }

}

و سپس:


$productService = new ProductService();

البته Laravel معمولاً با استفاده از Service Container و Dependency Injection بسیاری از Objectها را برای شما مدیریت می‌کند.

برای مثال:


class ProductController

{

    public function __construct(

        private ProductService $productService

    ) {

    }

}

در این حالت Laravel می‌تواند Dependency مربوط به ProductService را Resolution کند.

به همین دلیل تسلط بر Class و Object پیش‌نیاز مهمی برای یادگیری حرفه‌ای Laravel است.


# ارتباط Class و Object با Inheritance

یکی از قابلیت‌های مهم OOP این است که می‌توان یک Class را از Class دیگری Extend کرد.

مثلاً:


class Animal

{

    public function eat(): void

    {

        echo 'Eating';

    }

}



class Cat extends Animal

{

}

حالا:


$cat = new Cat();



$cat->eat();

کار می‌کند.

موضوع Inheritance را در مقاله اختصاصی بعدی به صورت عمیق بررسی خواهیم کرد.


# ارتباط Class و Object با Interface

Classها می‌توانند Interface را نیز پیاده‌سازی کنند:


interface PaymentGateway

{

    public function pay(float $amount): bool;

}

سپس:


class OnlinePayment implements PaymentGateway

{

    public function pay(float $amount): bool

    {

        return true;

    }

}

این موضوع برای طراحی Applicationهای قابل توسعه اهمیت زیادی دارد.


# Class و Object و Dependency Injection

در پروژه‌های حرفه‌ای معمولاً بهتر است Classها Dependencyهای خود را از بیرون دریافت کنند.

مثلاً:


class OrderService

{

    public function __construct(

        private PaymentGateway $gateway

    ) {

    }

}

این روش باعث می‌شود Class کمتر به یک Implementation خاص وابسته باشد.

همچنین تست‌کردن آن ساده‌تر می‌شود.


# اصول مهم در طراحی Class

هنگام ساخت Classهای PHP این نکات را در نظر بگیرید:

۱. نام Class واضح باشد

مثلاً:


PaymentService

بهتر از:


Helper

است.

۲. مسئولیت Class مشخص باشد

یک Class نباید بدون دلیل چندین مسئولیت کاملاً متفاوت داشته باشد.

۳. State داخلی را محافظت کنید

Propertyهایی که نباید مستقیماً تغییر کنند را private یا در صورت نیاز protected تعریف کنید.

۴. Typeها را مشخص کنید

مثلاً:


public function getPrice(): float

بهتر از Method بدون Type مشخص است.

۵. Methodها را کوچک و هدفمند نگه دارید

Methodی که چندین مسئولیت مختلف دارد، معمولاً نیاز به بازطراحی دارد.

۶. Dependencyها را پنهان نکنید

Dependencyهای مهم را از طریق Constructor دریافت کنید.


# اشتباهات رایج هنگام کار با Class و Object

تعریف Propertyهای بیش از حد public

مثلاً:


class User

{

    public float $balance;

}

ممکن است اجازه دهد هر بخشی از برنامه Balance را بدون هیچ Validation تغییر دهد.

در بسیاری از موارد بهتر است:


private float $balance;

باشد و تغییر آن از طریق Method کنترل شود.


ساخت Classهای بسیار بزرگ

Classی که مسئولیت‌های زیادی دارد، نگهداری سخت‌تری خواهد داشت.


استفاده نادرست از Static

Static همیشه بد نیست، اما استفاده بیش از حد از آن می‌تواند Dependency Management و تست را دشوار کند.


وابستگی مستقیم به Implementation

مثلاً:


class OrderService

{

    private StripeGateway $gateway;

}

در بسیاری از طراحی‌ها بهتر است به یک Abstraction مانند Interface وابسته شویم:


class OrderService

{

    public function __construct(

        private PaymentGateway $gateway

    ) {

    }

}


# Class و Object؛ یک مثال کامل‌تر

در این مثال یک سیستم ساده سفارش ایجاد می‌کنیم:


class Order

{

    private array $items = [];



    public function addItem(

        string $name,

        float $price

    ): void {

        $this->items[] = [

            'name' => $name,

            'price' => $price,

        ];

    }



    public function getTotal(): float

    {

        $total = 0;



        foreach ($this->items as $item) {

            $total += $item['price'];

        }



        return $total;

    }

}

اکنون:


$order = new Order();



$order->addItem(

    'Laptop',

    50000000

);



$order->addItem(

    'Mouse',

    1000000

);



echo $order->getTotal();

در این مثال:


Order

Class است.

و:


$order

Object آن است.

همچنین:


items

State داخلی Object است.

و:


addItem()

getTotal()

رفتارهای Object هستند.


# چرا Class و Object برای پروژه‌های بزرگ مهم هستند؟

فرض کنید قصد دارید یک Marketplace بسازید.

موجودیت‌های مختلفی مانند:


User

Vendor

Product

Category

Cart

Order

Payment

Invoice

Coupon

Wallet

Transaction

خواهید داشت.

اگر همه منطق را در چند فایل بزرگ قرار دهید، مدیریت پروژه بسیار دشوار می‌شود.

اما با تقسیم مسئولیت‌ها بین Classها می‌توانید ساختار Application را قابل فهم‌تر کنید.

برای مثال:


OrderService

PaymentService

WalletService

ProductService

VendorService

هرکدام می‌توانند مسئولیت مشخصی داشته باشند.

این دقیقاً همان جایی است که مفاهیم OOP از یک موضوع آموزشی به یک ابزار واقعی برای معماری نرم‌افزار تبدیل می‌شوند.


# جمع‌بندی Class و Object در PHP

Class و Object پایه اصلی برنامه‌نویسی شی‌گرا در PHP هستند.

Class یک Blueprint برای تعریف ویژگی‌ها و رفتارهاست.

Object یک نمونه واقعی از آن Class است.

در PHP برای ساخت Object از:


new

استفاده می‌کنیم.

یک Class می‌تواند شامل موارد مختلفی مانند:


Property

Method

Constructor

Constant

Static Member

باشد.

همچنین با استفاده از:


public

protected

private

می‌توان سطح دسترسی اعضای Class را کنترل کرد.

در پروژه‌های حرفه‌ای نیز مفاهیمی مانند:


Namespace

Autoload

Inheritance

Interface

Dependency Injection

SOLID

Design Pattern

بر پایه همین مفاهیم Object-Oriented توسعه پیدا می‌کنند.

اگر هدف شما توسعه حرفه‌ای PHP و Laravel است، تسلط بر Class و Object یک مرحله ضروری در مسیر یادگیری محسوب می‌شود.


# سوالات متداول Class و Object در PHP

Class در PHP چیست؟

Class یک Blueprint برای تعریف ویژگی‌ها و رفتار Objectها است و می‌تواند شامل Property، Method، Constructor و سایر اعضای Class باشد.

Object در PHP چیست؟

Object یک نمونه ساخته‌شده از یک Class است که با استفاده از new ایجاد می‌شود.

چگونه در PHP Object بسازیم؟

با استفاده از کلمه کلیدی new:


$user = new User();

تفاوت Class و Object چیست؟

Class الگوی تعریف Object است، در حالی که Object یک نمونه واقعی از آن Class است.

Property در PHP چیست؟

Property متغیری است که داخل Class تعریف می‌شود و معمولاً برای نگهداری State مربوط به Object استفاده می‌شود.

Method در PHP چیست؟

Method یک Function است که داخل Class تعریف می‌شود و معمولاً رفتار Object را مشخص می‌کند.

Constructor در PHP چیست؟

Constructor متدی ویژه با نام __construct است که هنگام ایجاد Object اجرا می‌شود و معمولاً برای مقداردهی اولیه Object استفاده می‌شود.

$this در PHP چیست؟

$this به Object فعلی داخل Methodهای غیر Static اشاره می‌کند.

تفاوت public و private در PHP چیست؟

اعضای public از خارج Class نیز قابل دسترسی هستند، در حالی که اعضای private فقط داخل همان Class قابل دسترسی‌اند.

protected در PHP چیست؟

اعضای protected از داخل همان Class و Classهای فرزند قابل دسترسی هستند.

آیا یک Class می‌تواند چند Object داشته باشد؟

بله. می‌توان از یک Class تعداد زیادی Object ایجاد کرد و هر Object می‌تواند State متفاوتی داشته باشد.

آیا یادگیری Class و Object برای Laravel لازم است؟

بله. Laravel یک Framework مبتنی بر PHP و معماری Object-Oriented است و مفاهیمی مانند Class، Object، Dependency Injection، Interface و Inheritance در آن کاربرد زیادی دارند.

آیا Class و Object با Composer ارتباط دارند؟

به صورت مستقیم Composer مسئول ساخت Class نیست، اما Composer می‌تواند Classهای پروژه و Dependencyها را با استفاده از Autoload و استانداردهایی مانند PSR-4 به صورت خودکار بارگذاری کند.


# مقالات مرتبط

برای لینک‌سازی داخلی این مقاله، این صفحات را در محل مناسب به یکدیگر متصل کن:

  • OOP در PHP ← مقاله مادر این بخش
  • Autoload در PHP
  • Namespace در PHP
  • Inheritance در PHP ← مقاله بعدی
  • Interface در PHP
  • Trait در PHP
  • Abstract Class در PHP
  • Dependency Injection در PHP
  • SOLID در PHP
  • Design Pattern در PHP
  • آموزش Composer
  • MVC چیست؟

همچنین از این مقاله یک لینک طبیعی به Pillar اصلی «آموزش برنامه نویسی وب و PHP» بده.

نظرات (0)

نظرات پس از تأیید مدیر نمایش داده می‌شوند

هنوز نظری ثبت نشده است؛ اولین نفر باشید!

مقالات مرتبط

ساخت CMS با Laravel 12؛ آموزش ساخت سیستم مدیریت محتوا از صفر

ساخت CMS با Laravel 12؛ آموزش ساخت سیستم مدیریت محتوا از صفر

۲۴ دقیقه
ساخت فروشگاه اینترنتی با Laravel 12؛ آموزش پروژه‌محور از صفر تا طراحی هسته فروشگاه

ساخت فروشگاه اینترنتی با Laravel 12؛ آموزش پروژه‌محور از صفر تا طراحی هسته فروشگاه

۲۲ دقیقه
ساخت Marketplace با Laravel؛ آموزش طراحی فروشگاه چندفروشندگی

ساخت Marketplace با Laravel؛ آموزش طراحی فروشگاه چندفروشندگی

۲۲ دقیقه
مدیریت Queueهای سنگین در Laravel؛ آموزش پردازش کارهای طولانی

مدیریت Queueهای سنگین در Laravel؛ آموزش پردازش کارهای طولانی

۲۲ دقیقه