اگر مقاله 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 را میتوان به این شکل خلاصه کرد:
| Class | Object |
|---|---|
| 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» بده.





