شی گرایی(OOP)در پی اچ پی(PHP) – خصوصیات
سه شنبه, ۲۲ فروردين ۱۳۹۱، ۱۰:۵۱ ق.ظ
شی مجموعه ای از خصوصیت ها (Properties) و عملکرد ها (Methods) است. مثلا شی مداد دارای خصوصیات رنگ نوشتن، رنگ بدنه و دارای عملکرد نوشتن است و یا میز دارای خصوصیت رنگ، تعداد پایه ها و عمکرد میز شدن است. مفهوم خصوصیت در برنامه نویسی نزدیک به مفهوم خصوصیت دراشیای واقعیست مانند یک شی مداد که خصوصیاتی داشت در برنامه نویسی هم اشیا خصوصیاتی دارند. در اشیایی که از یک کلاس ایجاد می شوند، عملکرد ها برابرند اما خصوصیات بدون محدودیت متفاوت هستند. مقادیر خصوصیات در اشیایی که از یک کلاس ایجاد می شوند هیچ گونه ارتباطی با یکدیگر ندارند.
خصوصیات (Properties) - کدنویسی
در ظاهر کدنویسی ایجاد یک خصوصیت برای کلاس مانند ایجاد یک متغییر برای کلاس است. متغییر ها در کدنویسی وظیفه دارند تا مقادیر را نگهداری کنند تا در طول کد نویسی مقدار ها مورد استفاده قرار بگیرند و خصوصیات هم وظیفه ایی مشابه دارند. در ادامه با پیاده سازی کلاس برای شی مداد به عنوان شی حقیقی و کلاس برای تاریخ به عنوان شی در برنامه نویسی بیشتر پیش خواهیم رفت.
توجه : این کلاس ها فقط دارای خصوصیت خواهند بود و فعلا عملکرد ها نادیده گرفته می شوند. ضمن اینکه ممکن است این کد ها در عمل به دلیل اینکه صرفا بار آموزشی دارند قابل اجرا نباشند.
کلاس مداد
{ خصوصیات : رنگ نوشتن، رنگ بدنه.}
کلاس تارخ
{خصوصیات : سال، ماه، روز.}
ویژگی های پی اچ پی
پی اچ پی دارای ویژگی هایی ذاتی است که به شی گرایی هم صرایت داده است. دانستن این ویژگی اهمیت دارد تا هم برای بهره گیری شوند برای ساختن یک برنامه جذاب تر و هم اهمیت دارند برای جلوگیری از اشتباهات گاها مهلک!.
1-خصوصیت بدون فرمت:
در کدنویسی کردن یک کلاس ، یک خصوصیت مانند یک متغییر عادی تعریف می شود. این یعنی اینکه از قوانین نام گذاری متغییر ها استفاده می کند و باز یعنی اینکه خصوصیات هم مانند متغییر ها نوع خاصی ندارند مانند string یا int یا bool یا ...
در پی اچ پی یک متغییر ایجاد می شود وقتی که در هر کجای برنامه مقدار دهی شود. همین ویژگی برای خصوصیات هم وجود دارد.
پیوندها
شی گرایی 5 - خصوصیات
تابع print_r
تابع var_dump
خصوصیات (Properties) - کدنویسی
در ظاهر کدنویسی ایجاد یک خصوصیت برای کلاس مانند ایجاد یک متغییر برای کلاس است. متغییر ها در کدنویسی وظیفه دارند تا مقادیر را نگهداری کنند تا در طول کد نویسی مقدار ها مورد استفاده قرار بگیرند و خصوصیات هم وظیفه ایی مشابه دارند. در ادامه با پیاده سازی کلاس برای شی مداد به عنوان شی حقیقی و کلاس برای تاریخ به عنوان شی در برنامه نویسی بیشتر پیش خواهیم رفت.
توجه : این کلاس ها فقط دارای خصوصیت خواهند بود و فعلا عملکرد ها نادیده گرفته می شوند. ضمن اینکه ممکن است این کد ها در عمل به دلیل اینکه صرفا بار آموزشی دارند قابل اجرا نباشند.
کلاس مداد
{ خصوصیات : رنگ نوشتن، رنگ بدنه.}
class Pencilدر پیاده سازی کلاس خصوصیات (Properties) فقط تعریف می شوند و مقداری ندارند. هر شی که ساخته می شود property ها را مقدار می دهد. کلمه کلیدی public برای تعیین دید Property است که در آینده بیشتر با موضوع دید (Visibility) آشنا خواهید شد.
{
public $writeColor;
public $bodyColor;
}
$redPencil = new Pencil();شی redPencil و blackPencil هردو از کلاس Pencil ساخته شده اند اما خصوصیاتشان باهم متفاوت است. در صورتی که با تابع print_r از شی پرینت بگیرید بیشتر متوجه این موضوع خواهید شد.
$redPencil->writeColor = 'red';
$redPencil->bodyColor = 'red';
print_r($redPencil);
$blackPencil = new Pencil();
$blackPencil->writeColor = 'black';
$blackPencil->bodyColor = 'black';
print_r($blackPencil);
کلاس تارخ
{خصوصیات : سال، ماه، روز.}
class Dateمانند پیاده سازی کلاس Pencil (مداد) فقط Property ها (خصوصیات) پیاده شده اند و مقدار دهی نمی شوند.
{
public $year;
public $month;
public $day;
}
$myBirth = new Date();دو شی از کلاس Date (تاریخ) ساخته شد ، یکی برای تاریخ تولد من (شی myBirth) و یکی هم برای تاریخ تولد دوستم محمد (شی mohammadBirth). نکته قابل توجه این است که شما درک کنید اگرچه در کلاس متغیر ها (خصوصیات) تعریف می شوند اما برای هرشی مقداری که متغییر ها می گیرند متفاوت است. مقدار خصوصیات اشیا از همدیگر مجزاست و به هیچ وجه باهم مرتبط نیستند.
$myBirth->year = 1987;
$myBirth->month=5;
$myBirth->day = 20;
print_r($myBirth);
$mohammadBirth = new Date();
$mohammadBirth->year = 1985;
$mohammadBirth->month = 8;
$mohammadBirth->day = 15;
print_r($mohammadBirth);
ویژگی های پی اچ پی
پی اچ پی دارای ویژگی هایی ذاتی است که به شی گرایی هم صرایت داده است. دانستن این ویژگی اهمیت دارد تا هم برای بهره گیری شوند برای ساختن یک برنامه جذاب تر و هم اهمیت دارند برای جلوگیری از اشتباهات گاها مهلک!.
1-خصوصیت بدون فرمت:
در کدنویسی کردن یک کلاس ، یک خصوصیت مانند یک متغییر عادی تعریف می شود. این یعنی اینکه از قوانین نام گذاری متغییر ها استفاده می کند و باز یعنی اینکه خصوصیات هم مانند متغییر ها نوع خاصی ندارند مانند string یا int یا bool یا ...
$myBirth = new Date();2-تعریف آزاد :
$myBirth->year = '1987';
$myBirth->month = 5;
$myBirth->day = 20.0;
var_dump(myBirth);
در پی اچ پی یک متغییر ایجاد می شود وقتی که در هر کجای برنامه مقدار دهی شود. همین ویژگی برای خصوصیات هم وجود دارد.
$myBirth = new Date();دو Property آخر در کلاس Date تعریف نشده اند اما پی اچ پی آنها را فقط برای شی myBirth ایجاد و مقدار دهی می کند. در مقاله ایی بیشتر در مورد set و get جادویی خواهیم گفت.
$myBirth->year = 1987;
$myBirth->month = 5;
$myBirth->day = 20;
$myBirth->dayOfWeek = 'Friday';
$myBirth->hour = 21;
var_dump(myBirth);
پیوندها
شی گرایی 5 - خصوصیات
تابع print_r
تابع var_dump
خیلی خوب بود