با سلام خدمت کاربرای عزیز وبسایت راکت در قسمت اول یعنی "برنامه نویسی شی گرا در php | قسمت اول" اومدیم شی گرایی رو معرفی و در مورد کلاس ها و شی ها هم صحبت کردیم و یک مثال ساده از یک کلاس زدیم . در این قسمت میخوام در مورد property ها و همینطور method ها در کلاس صحبت کنم و بگم که چی هستن و به چه کاری میان . ابتدا از property ها شروع می کنم

معرفی property ها

برای اضافه کردن اطلاعات در کلاس ها از property ها استفاده میشه . کار اونها دقیقا شبیه متغیرها در php معمولیه و تنها تفاوتشون اینکه قبل از تایپ اسم property از کلمات کلیدی private protected و public استفاده میشه ، این کلمات کلیدی رو در کپسوله سازی (پنهان سازی) بطور کامل توضیح می دم فقط فعلا در همین حد بدونید که این کلمات باید برای تعریف property ها و method ها قبل از اسم اونها قرار بگیرن . 

به مثال زیر دقت کنید . 

<?php

class MyClass
{
  public $name = 'john doe';
}

$obj = new MyClass;

var_dump($obj);

?>

در بالا با استفاده از کلمه public تعیین کردیم که property مون برای استفاده در یک object قابل مشاهدست و همینطور property به اسم name$ تعریف و بعد اون رو مقدار دهی کردیم و بعد با تعریف یک شی و قرار دادن اون در var_dump اطلاعات کامل رو برگشت دادیم . 

شما به راحتی میتونید بعد از تعریف شی دوباره property رو مقداردهی کنید البته تنها در حالتی که اون property از نوع public باشه و همینطور به راحتی میتونید اون رو با استفاده از echo چاپ کنید . البته برای چاپ یا مقداردهی دوباره ، نیاز به دسترسی به اون property از طریق object دارید برای اینکار بعد از تایپ اسم object با قرار دادن یک فلش ( <- ) و تایپ اسم property میتونید به اون دسترسی داشته باشید . به مثال زیر دقت کنید

<?php

class MyClass
{
  public $name = 'John Doe';
}

$obj = new MyClass;

echo $obj->name . '</br >';

$obj->name = 'Hesam Mousavi';

echo $obj->name ;

?>

بعد از اجرای فایل test.php میتونید نتیجه زیر رو مشاهده کنید .

John Doe
Hesam Mousavi

معرفی method ها

method ها دقیقا کار توابع رو در کلاس ها انجام میدن یعنی تفاوتی چندانی با هم ندارن method ها هم با قرار گرفتن کلمه کلیدی private protected و public قبل از function تعریف میشن . یک method میتونه به شی ها کمک کنه که در داخل کلاس ها عملیاتی رو انجام بدن البته این عملیات توسط متدها مشخص میشه . 

برای مثال متدهای برای set و get کردن اطلاعات property داخل کلاس می نویسیم . به کد زیر دقت کنید : 

<?php

class MyClass
{
  public $name = 'John Doe';

  public function setProperty($newval)
  {
     $this->name = $newval;
  }
  
  public function getProperty()
  {
     return $this->name . "</br >";
  }

}

$obj = new MyClass;

echo $obj->name;

?>

نکته : در کد بالا ما در دو جا از this$ استفاده کردیم و بعد با یک فلش و قرار دادن اسم property بهش دسترسی پیدا کردیم . در اصل این طریقه دسترسی به property ها و  method ها در داخل یک  method است . چون بطور معمولی شما نمی تونید با تایپ فقط اسم property یا method بهش دسترسی داشته باشید تنها زمانی که از this$ و با روش بالا عمل کنید میتونید به یک  property و  method از یک کلاس داخل یک method دسترسی پیدا کنید . 

در کد بالا من فقط با قرار دادن obj->name$ اومدم مقدار این  property رو چاپ کردم اما در مثال زیر من ابتدا من با استفاده از متد getProperty میام مقدار فعلی name$ رو چاپ میکنم و بعد در مرحله بعدی با استفاده از متد setProperty و ارسال یک مقدار به عنوان آرگومان میام یک مقدار جدید برای name$ تعیین میکنم و بعد دوباره با چاپ کردن متد getProperty میام مقدار فعلیش رو چاپ می کنیم . این یک روش مهم برای set و get کردن  property هاست که به زودی در قسمت بعد دلیلش رو هم میفهمید ولی فعلا از دید امتحان کردن یک متد بهش نگاه کنید . 

<?php
 
class MyClass
{
  public $name = "John Doe";
 
  public function setProperty($newval)
  {
      $this->name = $newval;
  }
 
  public function getProperty()
  {
      return $this->name . "<br />";
  }
}
 
$obj = new MyClass;
 
echo $obj->getProperty(); // Get the property value
 
$obj->setProperty("Hesam Mousavi"); // Set a new one
 
echo $obj->getProperty(); // Read it out again to show the change
 
?>

نتیجه زیر حاصل از اجرای کد بالاست 

John Doe
Hesam Mousavi

[ قدرت oop زمانی اشکار میشه که ما چند شی از یک کلاس می سازیم ]

به مثال زیر دقت کنید : 

<?php
 
class MyClass
{
  public $name = "John Doe";
 
  public function setProperty($newval)
  {
      $this->name = $newval;
  }
 
  public function getProperty()
  {
      return $this->name . "<br />";
  }
}
 
// Create two objects
$obj = new MyClass;
$obj2 = new MyClass;
 
// Get the value of $name from both objects
echo $obj->getProperty();
echo $obj2->getProperty();
 
// Set new values for both objects
$obj->setProperty("I'm a new name! Mohammad");
$obj2->setProperty("obj 2 with name Ali");
 
// Output both objects' $name value
echo $obj->getProperty();
echo $obj2->getProperty();
 
?>

نتیجه زیر حاصل از اجرای کد بالاست 

John Doe
John Doe
I'm a new name! Mohammad
obj 2 with name Ali

همانطور که در بالا میبینید شما با استفاده از oop می تونید از یک قطعه کد بارها و بارها در قالب اشیاء مختلف استفاده کیند . امیدوارم این قسمت مورد استفاده اتون قرار گرفته باشه در قسمت بعد بحث کپسوله سازی یا همون پنهان سازی اطلاعات رو آموزش میدم . 

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
حسام موسوی @hesammousavi
اول داستان، طراح گرافیک بودم و ۲ سالی به عنوان طراح مشغول بودم، بعد به برنامه‌نویسی علاقمند شدم و الان بیشتر از ۱۰ ساله که عاشق کدزنی و چالش‌های پروژه...
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو