برنامه نویسی شی گرا در PHP
برنامه نویسی شی گرا یا Object-Oriented Programming که به اختصار OOP نیز نامیده میشود، شیوهای از برنامهنویسی بر پایهی آبجکت یا شی است. این شیوه به برنامه نویسان امکان می دهد تا کدهایی تمیز، با قابلیت نگهداری بالاتر و اشکال زدایی آسانتر بنویسند. شیوه برنامه نویسی OOP با مفاهیم دنیای واقعی بسیار شبیه است؛ به عنوان مثال، عملکرد مغز به شیوهی شی گرایانه است. مغز اطلاعات را از محیط دریافت میکند و پس از پردازش آنها، واکنش مناسب نشان میدهد. در ادامه، با مفاهیم شی گرایی در PHP و مثالهای مختلف آن، آشنا خواهیم شد. همراه ما باشید.
برنامهنویسی شی گرا، از مزایای بسیاری برخوردار است. در این روش، کد به بخشهای کوچکتر تقسیم میشود و به صورت سازماندهی شدهای مدیریت میگردد. همچنین، نیازی به نوشتن کدهای تکراری نیست و میتوان از کدهای قبلی استفاده کرد. در ضمن، برنامه در این روش دارای امنیت بیشتر و عملکرد بهتری است. اشکال زدایی و عیبیابی نیز با استفاده از این روش آسان و سریعتر میباشد.
شی گرایی در PHP
در اینجا، مفاهیم شیءگرایی در PHP به شما آموزش داده میشود و سپس به بررسی مثالهایی در مورد هر کدام از آنها پرداخته میشود.
کلاس (Class) – یک نوع دادهی تعریف شده توسط برنامهنویس است که شامل توابع و دادههای محلی است. میتوان یک کلاس را به عنوان الگویی برای ساخت نمونههای بسیاری از همان نوع (یا کلاس) شیء در نظر گرفت.
شیء (Object) – شیء، یک نمونه منفرد از ساختار داده است که توسط یک کلاس تعریف میشود. کلاس یکبار تعریف میشود و سپس شما میتوانید آبجکتهای دلخواه خود را با استفاده از آن تعریف کنید. شیء به عنوان نمونه نیز شناخته میشود.
متغیرهای عضو (Member Variable) – متغیرهایی هستند که در داخل یک کلاس تعریف شدهاند. این دادهها در خارج از کلاس قابل دسترسی نیستند و فقط از طریق توابع عضو به آنها دسترسی دارید. زمانی که یک شیء ایجاد میشود، به این متغیرها صفت شیء گفته میشود.
توابع عضو (Member function) – تابعی است که در داخل یک کلاس تعریف شده است و برای دسترسی به دادههای شیء استفاده میشود.
وراثت (Inheritance) – وقتی یک کلاس با به ارث بردن عملکرد موجود در یک کلاس پدر تعریف میشود، آن را وراثت مینامند. یک کلاس فرزند، تمام یا بخشی از توابع و متغیرهای کلاس والد را به ارث میبرد و همچنین میتواند توابع و متغیرهای منحصر به فرد خود را داشته باشد.
کلاس والد (Parent class) – کلاسی که یک کلاس دیگر از آن به ارث میبرد، کلاس والد نامیده میشود. به این کلاس، کلاس پایه یا فوق کلاس نیز گفته میشود.
کلاس فرزند (Child Class) – کلاسی است که از یک کلاس دیگر به عنوان کلاس والد بهره میبرد. به این کلاس، زیرکلاس یا کلاس مشتق نیز گفته میشود.
چندریختی (Polymorphism) – یک مفهوم شی گرایی است که در آن میتوان از یک تابع برای اهداف مختلف استفاده کرد. به عنوان مثال، تابع با نام یکسان باقی میماند اما تعداد مختلفی از آرگومانها را میگیرد و میتواند کار متفاوتی انجام دهد.
سربارگذاری (Overloading) – نوعی چندریختی است که در آن برخی یا همهی عملگرها بسته به نوع آرگومانهای خود پیاده سازیهای مختلفی دارند. توابع مشابه نیز میتوانند با اجراهای متفاوت سربارگذاری شوند.
تجرید داده (Data Abstraction) – تجرید به برنامهنویس کمک میکند تا جزییات پیادهسازی برنامه را از کاربران پنهان کند. تجرید باعث میشود تا تنها عملیاتی که با شیهای دیگر برنامه ارتباط دارند، نمایش داده شوند. متدهای تجرید میتوانند بدنه داشته باشند یا نداشته باشند.
اینترفیس (Interface) – اینترفیس همانند تجرید است، با این تفاوت که متدهای آن بدنه ندارند و کلاسی که اینترفیس را پیادهسازی میکند، ملزم به بازنویسی تمامی متدهای کلاس والد است. شباهت اینترفیس و تجرید در این است که از هیچ کدام نمیتوان یک شیء ایجاد کرد.
کپسوله سازی (Encapsulation) – به مفهومی گفته میشود که در آن همهی دادهها و توابع عضو را با هم ترکیب میکنیم تا یک شیء جدید را تشکیل دهیم. در کپسوله سازی، دسترسی به اشیاء با استفاده از سطح بندی محدود میشود.
سازنده (Constructor) – به نوع خاصی از تابع گفته میشود که هر زمان یک آبجکت از یک کلاس تشکیل شود، به طور خودکار فراخوانی میشود.
مخرب (Destructor) – به نوع خاصی از تابع گفته میشود که هر زمان که یک آبجکت حذف شود یا از دامنه خارج شود، به طور خودکار فراخوانی میشود.
class در PHP چیست؟
کلاس در PHP با استفاده از کلمهی class تعریف میشود و پس از آن نام کلاس و یک جفت پرانتز {} قرار داده میشود.
در زیر، یک کلاس به نام Fruit با دو خصوصیت (name و color) و دو تابع (set_name و get_name) برای تنظیم و گرفتن خصوصیت name ایجاد شده است:
class Fruit {
public $name;
public $color;
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
در این کد، خصوصیت name و color به صورت عمومی (public) تعریف شدهاند و به هر دو مقداری میتوان داد. همچنین، دو تابع set_name و get_name برای تنظیم و گرفتن خصوصیت name تعریف شدهاند. توابعی که با نام __construct تعریف میشوند، به عنوان سازنده کلاس شناخته میشوند و هنگام ایجاد یک شیء از کلاس، به صورت خودکار فراخوانی میشوند. به مانند همین نحو، توابعی با نام __destruct که در داخل کلاس تعریف شدهاند، به عنوان مخرب کلاس شناخته میشوند و هنگامی که یک شیء از کلاس حذف یا از دسترس خارج میشود، به صورت خودکار فراخوانی میشوند.
object در PHP چیست؟
در رابطه با ایجاد آبجکتها، میتوان گفت که در یک کلاس، قابلیت تولید چندین آبجکت وجود دارد. هر آبجکت، تمام ویژگیها و متدهایی که در کلاس تعریف شدهاند را داراست، با این تفاوت که مقادیر مختلفی برای ویژگیها به آنها اختصاص داده شده است. برای تعریف یک آبجکت جدید از یک کلاس، از کلمهی کلیدی “new” استفاده میشود. به عنوان مثال، در کد PHP زیر، “apple”و”banana”و”banana” نمونههای آبجکتی هستند که از کلاس Fruit ایجاد شدهاند.
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
در مثال زیر، دو متد اضافی برای تنظیم و بازیابی ویژگی “color$” به کلاس Fruit افزوده شده است.
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
فراخوانی توابع عضو در PHP
پس از ایجاد آبجکتها، شما قادر خواهید بود توابع عضو مربوط به هر شیء را فراخوانی کنید. توابع عضو فقط قادر به پردازش و دسترسی به متغیرهای عضو از شیء مرتبط با آنها هستند.
برای مثال، در کد زیر:
<?php
class Books {
/* Member variables */
var $price;
var $title;
/* Member functions */
function setPrice($par){
$this->price = $par;
}
function getPrice(){
echo $this->price ."<br/>";
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title ." <br/>";
}
}
?>
پس از آن، سه شیء مستقل با سه نوع کتاب مختلف ایجاد خواهیم کرد.
$physics = new Books;
$maths = new Books;
$chemistry = new Books;
در کد زیر، با فراخوانی توابع عضو، روش ست کردن عنوان و قیمت برای هر یک از سه کتاب نشان داده شده است.
$physics->setTitle( "Physics for High School" );
$chemistry->setTitle( "Advanced Chemistry" );
$maths->setTitle( "Algebra" );
$physics->setPrice( 10 );
$chemistry->setPrice( 15 );
$maths->setPrice( 7 );
در حال حاضر، برای دریافت مقادیر ست شده در مثال فوق، توابع عضو دیگری فراخوانی میشوند.
constructor در PHP
توابع سازنده نوع خاصی از توابع هستند که با هر بار ایجاد شدن یک شی از یک کلاس، به صورت خودکار فراخوانی میشوند. مثال زیر یک سازنده برای کلاس Books ایجاد میکند و در زمان ایجاد شی، قیمت و عنوان کتاب را مقداردهی میکند.
function __construct( $par1, $par2 ) {
$this->title = $par1;
$this->price = $par2;
}
در حال حاضر، فراخوانی تابع set برای ست کردن قیمت و عنوان لازم نیست. این دو متغیر عضو، فقط در زمان ایجاد شی از کلاس، میتوانند مقدار
$physics = new Books( "Physics for High School", 10 );
$maths = new Books ( "Advanced Chemistry", 15 );
$chemistry = new Books ("Algebra", 7 );
/* Get those set values */
$physics->getTitle();
$chemistry->getTitle();
$maths->getTitle();
$physics->getPrice();
$chemistry->getPrice();
$maths->getPrice();
همچنین توابع destructor در زبان برنامهنویسی PHP مشابه یک تابع سازنده، میتوانید با استفاده از ()destruct__ یک تابع مخرب را تعریف کنید. به وسیله این تابع، شما میتوانید تمام منابع را آزاد کنید.
inheritance در PHP
توارث (Inheritance) در PHP به شما اجازه میدهد که یک کلاس جدید را از یک کلاس موجود (کلاس پدر) ایجاد کنید و ویژگیها و توابع آن را به کلاس فرزند منتقل کنید.
به عنوان مثال، فرض کنید که ما یک کلاس سرگرمی داریم به نام Entertainment
که خصوصیاتی مانند نام، شرح، قیمت و تعداد قابلیتهای بازی را دارد:
class Entertainment {
public $name;
public $description;
public $price;
public $numFeatures;
public function __construct($name, $description, $price, $numFeatures) {
$this->name = $name;
$this->description = $description;
$this->price = $price;
$this->numFeatures = $numFeatures;
}
public function display() {
echo "Name: " . $this->name . "
";
echo "Description: " . $this->description . "
";
echo "Price: $" . $this->price . "
";
echo "Number of Features: " . $this->numFeatures . "
";
}
}
حالا فرض کنید که ما میخواهیم یک کلاس ویدیو بازی ایجاد کنیم که از کلاس Entertainment
توارث کند. برای این کار، ما کلاس ویدیو بازی را به صورت زیر تعریف میکنیم:
class VideoGame extends Entertainment {
public $platform;
public function __construct($name, $description, $price, $numFeatures, $platform) {
parent::__construct($name, $description, $price, $numFeatures);
$this->platform = $platform;
}
public function display() {
parent::display();
echo "Platform: " . $this->platform . "
";
}
}
در کلاس فرزند VideoGame
، ما ویژگی جدید platform
را اضافه کردهایم و تابع __construct()
را Override کردهایم تا کلاس پدر Entertainment
را صدا بزند و مقادیر ورودی خود را به آن انتقال دهد. همچنین، ما تابع display()
را هم Override کردهایم تا ابتدا تابع display()
کلاس پدر را صدا بزند و سپس ویژگی جدید platform
را نمایش دهد.
حالا ما میتوانیم شی از کلاس VideoGame
ایجاد کرده و توابع آن را صدا بزنیم:
$game = new VideoGame("GTA V", "Action-adventure game", 59.99, 10, "PS4");
$game->display();
این کد نتیجه زیر را به ما خواهد داد:
Name: GTA V
Description: Action-adventure game
Price: $59.99
Number of Features: 10
Platform: PS4
سربارگذاری تابع در PHP
در PHP، سربارگذاری تابع (Function Overloading) به شما اجازه میدهد که چندین تابع با نام یکسان اما با پارامترهای ورودی متفاوت داشته باشید. در واقع، وقتی یک تابع با پارامترهای مختلف فراخوانی میشود، PHP بر اساس نوع و تعداد پارامترها، تابع مناسب را پیدا میکند و اجرا میکند.
به عنوان مثال، فرض کنید که ما یک کلاس به نام Math
داریم که دو تابع جمع و ضرب را دارد. اما ما میخواهیم تابع جمع را به گونهای سربارگذاری کنیم که بتواند دو عدد صحیح یا دو رشته را به هم بیفزاید.
class Math {
public function add($x, $y) {
return $x + $y;
}
public function multiply($x, $y) {
return $x * $y;
}
public function __call($name, $arguments) {
if ($name == 'add') {
switch (count($arguments)) {
case 2:
return $this->addNumbers($arguments[0], $arguments[1]);
break;
case 3:
return $this->addStrings($arguments[0], $arguments[1], $arguments[2]);
break;
}
}
}
private function addNumbers($x, $y) {
return $x + $y;
}
private function addStrings($s1, $s2, $separator) {
return $s1 . $separator . $s2;
}
}
در کلاس بالا، ما تابع __call()
را override کردهایم تا وقتی یک تابع با نام add
با پارامترهای مختلف فراخوانی میشود، تابع مناسب را صدا بزند.
برای این کار، ما پارامترهای ورودی را با استفاده از تابع count()
شمارش کرده و با آنها انواع مختلف عملیات جمع را انجام میدهیم. در اینجا، اگر دو پارامتر ورودی داده شود، تابع addNumbers()
به عنوان تابع جمع عددی صدا خواهد شد و اگر سه پارامتر ورودی داده شود، تابع addStrings()
به عنوان تابع جمع رشتهای صدا خواهد شد.
حالا میتوانیم از کلاس Math
استفاده کنیم و تابع جمع را با پارامترهای مختلف به آن فراخوانی کنیم:
$math = new Math();
// جمع دو عدد
echo $math->add(2, 3) . "
"; // خروجی: ۵
// جمع دو رشته
echo $math->add("Hello", "World", " ") . "
"; // خروجی: Hello World
با استفاده از سربارگذاری تابع، ما تابع add()
را قابل اجرا با پارامترهای مختلف کردهایم.
انواع سطوح دسترسی کلاس در PHP
در PHP، سه نوع سطح دسترسی برای فیلدها و متودهای یک کلاس تعریف شده است:
public
: اگر یک فیلد یا متد به عنوانpublic
تعریف شود، آنگاه این فیلد یا متد در همه جا دسترسیپذیر خواهند بود. به این معنی که با نام کلاس و نام فیلد یا متد، میتوان در هر جای برنامه به آن دسترسی داشت.protected
: اگر یک فیلد یا متد به عنوانprotected
تعریف شود، آنگاه این فیلد یا متد تنها در کلاس خود و زیر کلاسهای آن دسترسیپذیر خواهند بود. به این معنی که از خارج از کلاس و زیر کلاسهای آن نمیتوان به آن دسترسی داشت.private
: اگر یک فیلد یا متد به عنوانprivate
تعریف شود، آنگاه این فیلد یا متد تنها در کلاس خود دسترسیپذیر خواهند بود. به این معنی که حتی زیر کلاسهای آن هم نمیتوان به آن دسترسی داشت.
برای نمونه، فرض کنید که یک کلاس Person
داریم و دو فیلد name
و age
را در آن تعریف کردهایم. name
به عنوان public
تعریف شده است، به این معنی که میتوان از خارج از کلاس به آن دسترسی داشت. اما age
به عنوان private
تعریف شده است، به این معنی که تنها درون کلاس قابل دسترسی است.
class Person {
public $name;
private $age;
function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function getAge() {
return $this->age;
}
}
// ساخت یک شی از کلاس Person
$person1 = new Person("John", 25);
// دسترسی به فیلد name (public)
echo $person1->name; // خروجی: John
// دسترسی به فیلد age (private)
// echo $person1->age; // خطا: Fatal error: Uncaught Error: Cannot access private property Person::$age
// دسترسی به متد getAge (public)
echo $person1->getAge(); // خروجی: ۲۵
در کد بالا، متد getAge()
به عنوان public
تعریف شده است، بنابراین میتوان درون و خارج از کلاس به آن دسترسی داشت. حتی اگر فیلد age
به عنوان private
تعریف شده باشد، میتوان با استفاده از متد getAge()
به آن دسترسی داشت.
abstract در PHP
در PHP، کلاسهای abstract
کلاسهایی هستند که نمیتوان از آنها شیء ساخت، به عبارت دیگر میتوان گفت که کلاس abstract
یک کلاس انتزاعی است. برای استفاده از این کلاسها، باید آن را به عنوان یک کلاس پایه (base class
) برای کلاسهای دیگر تعریف کرد.
کلاسهای abstract
شامل حداقل یک متد abstract
هستند، که هنگام تعریف، اجازه نمیدهد تا بدنه (body) متد تعریف شود و فقط امضای متد (signature) تعریف میشود. این به معنی این است که هر کلاسی که از یک کلاس abstract
ارث بری میکند، باید حتماً متدهای abstract
آن کلاس را پیادهسازی کند.
برای نمونه، یک کلاس Shape
را به عنوان یک کلاس abstract
تعریف میکنیم، که دو متد abstract
به نامهای getArea()
و getPerimeter()
را دارد. این کلاس به عنوان یک کلاس پایه برای کلاسهای هندسی دیگر مانند Rectangle
و Circle
استفاده خواهد شد.
abstract class Shape {
abstract public function getArea();
abstract public function getPerimeter();
}
حالا میتوانیم از کلاس Shape
به عنوان یک کلاس پایه استفاده کنیم و کلاسهای Rectangle
و Circle
را برای ارث بری از آن تعریف کنیم:
class Rectangle extends Shape {
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea() {
return $this->width * $this->height;
}
public function getPerimeter() {
return 2 * ($this->width + $this->height);
}
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * pow($this->radius, 2);
}
public function getPerimeter() {
return 2 * pi() * $this->radius;
}
}
در کد بالا، کلاسهای Rectangle
و Circle
از کلاس Shape
ارث بری کردهاند و متدهای abstract
آن را پیادهسازی کردهاند. به این ترتیب، هر کلاسی که از کلاس Shape
ارث بری کند، باید حتماً متدهای getArea()
و getPerimeter()
را پیادهسازی کند.
حالا میتوانیم از کلاسهای Rectangle
و Circle
برای محاسبه مساحت و محیط یک مستطیل و یک دایره استفاده کنیم:
$rectangle = new Rectangle(4, 5);
echo "Area of Rectangle
آموزش ساخت Interface در PHP
در PHP، interface
یک موضوع مهم در برنامهنویسی شیءگرا است که به شما اجازه میدهد تا تعریف کنید که چه متدهایی در یک کلاس باید پیادهسازی شوند. برای ساخت یک interface
در PHP، از کلیدواژه interface
استفاده میشود و مانند یک کلاس، میتواند شامل متدهای عمومی باشد. اما در interface
، تنها امضای متد تعریف میشود و هیچ بدنه ای برای آن تعریف نمیشود.
به عنوان مثال، فرض کنید که شما میخواهید یک interface
به نام Animal
تعریف کنید که دارای دو متد eat()
و sleep()
باشد. این interface
را به صورت زیر میتوان تعریف کرد:
interface Animal {
public function eat();
public function sleep();
}
حالا میتوانید از این interface
برای تعریف کلاسهایی که حیوانات هستند، استفاده کنید. به عنوان مثال، فرض کنید که میخواهید یک کلاس برای سگ تعریف کنید. برای این کار، از interface
Animal
ارث بری میکنیم و متدهای آن را پیادهسازی میکنیم:
class Dog implements Animal {
public function eat() {
echo "The dog is eating...";
}
public function sleep() {
echo "The dog is sleeping...";
}
}
در کد بالا، کلاس Dog
از interface
Animal
ارث بری کردهاست و متدهای eat()
و sleep()
را پیادهسازی کردهاست. به این ترتیب، هر کلاسی که از interface
Animal
ارث بری کند، باید حتماً متدهای eat()
و sleep()
را پیادهسازی کند.
حالا میتوانیم از کلاس Dog
برای ایجاد یک شیء جدید استفاده کنیم و متدهای آن را صدا بزنیم:
$dog = new Dog();
$dog->eat(); // The dog is eating...
$dog->sleep(); // The dog is sleeping...
در کل، interface
به عنوان یک قرارداد (contract) بین کلاسها استفاده میشود، به این صورت که هر کلاسی که interface
را پیادهسازی کند، تضمین میشود که متدهای آن interface
را پیادهسازی کردهاست.
polymorphism در PHP چیست
Polymorphism یکی از مفاهیم کلیدی برنامهنویسی شیءگرا است که در PHP نیز پشتیبانی میشود. Polymorphism به معنای این است که یک شیء میتواند توسط چندین کلاس مختلف با رفتارهای مختلف دستکاری شود. با استفاده از polymorphism در PHP، میتوانید کدهای خود را بهبود بخشید و کد نویسی خود را سادهتر کنید.
برای توضیحات بیشتر، فرض کنید که شما یک interface
به نام Shape
دارید که شامل یک متد calculateArea()
است. سپس دو کلاس Rectangle
و Circle
دارید که از interface
Shape
ارث بری میکنند و متدهای calculateArea()
را به طور مجزا پیادهسازی میکنند:
interface Shape {
public function calculateArea();
}
class Rectangle implements Shape {
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function calculateArea() {
return $this->width * $this->height;
}
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function calculateArea() {
return pi() * pow($this->radius, 2);
}
}
حالا میتوانید از این کلاسها برای محاسبه مساحت یک مستطیل و یک دایره استفاده کنید. به عنوان مثال:
$rectangle = new Rectangle(4, 5);
$circle = new Circle(3);
echo "Area of Rectangle: " . $rectangle->calculateArea() . "\n";
echo "Area of Circle: " . $circle->calculateArea() . "\n";
در کد بالا، شما یک شیء از کلاس Rectangle
و یک شیء از کلاس Circle
را ایجاد کردهاید و سپس متد calculateArea()
را روی هر یک از آنها صدا میزنید. با این کار، شما از polymorphism در PHP استفاده کردهاید، به این صورت که هر دو شیء Rectangle
و Circle
از interface
Shape
ارث بری کردهاند و متد calculateArea()
را پیادهسازی کردهاند. به عبارت دیگر، هر شیءی که از interface
Shape
ارث بری کند، مطمئناً قابلیت محاسبه مساحت را خواهد داشت.
در کل، polymorphism در PHP به شما اجازه میدهد تا کلاسهای مختلف را با هم جا به جا کنید و رفتارهای مختلف را با یک نام واحد (مانند متد calculateArea()
در مثال بالا) دستکاری کنید.
جمع بندی:
در PHP، شی گرایی یکی از مواردی است که برای نوشتن برنامههای حرفهای لازم است و در آن، مزایای بسیاری وجود دارد. از جمله این مزایا، توانایی تبدیل برنامههای پیچیده با بخشهای بزرگ به برنامههای سادهتر با بخشهای کوچکتر میباشد. همچنین، تغییرات و عیبیابیها در این بخشها به راحتی انجام میشود. به علاوه، قابلیت استفاده از هر بخش در برنامههای دیگر نیز وجود دارد که در نهایت منجر به صرفهجویی در زمان میشود. در این مقاله، با استفاده از مثالهایی از شی گرایی در PHP آشنا شدیم. امیدواریم که این مقاله برای شما مفید بوده باشد و سوالات خود را میتوانید در بخش نظرات با ما به اشتراک بگذارید.
همچنین این مقالات مرتبط را در بایت گیت بخوانید: