نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

شی گرایی(OOP)در پی اچ پی(PHP) – خصوصیات

سه شنبه, ۲۲ فروردين ۱۳۹۱، ۱۰:۵۱ ق.ظ
شی مجموعه ای از خصوصیت ها (Properties) و عملکرد ها (Methods) است. مثلا شی مداد دارای خصوصیات رنگ نوشتن، رنگ بدنه و دارای عملکرد نوشتن است و یا میز دارای خصوصیت رنگ، تعداد پایه ها و عمکرد میز شدن است. مفهوم خصوصیت در برنامه نویسی نزدیک به مفهوم خصوصیت دراشیای واقعیست مانند یک شی مداد که خصوصیاتی داشت در برنامه نویسی هم اشیا خصوصیاتی دارند. در اشیایی که از یک کلاس ایجاد می شوند، عملکرد ها برابرند اما خصوصیات بدون محدودیت متفاوت هستند. مقادیر خصوصیات در اشیایی که از یک کلاس ایجاد می شوند هیچ گونه ارتباطی با یکدیگر ندارند.
خصوصیات (Properties) - کدنویسی
در ظاهر کدنویسی ایجاد یک خصوصیت برای کلاس مانند ایجاد یک متغییر برای کلاس است. متغییر ها در کدنویسی وظیفه دارند تا مقادیر را نگهداری کنند تا در طول کد نویسی مقدار ها مورد استفاده قرار بگیرند و خصوصیات هم وظیفه ایی مشابه دارند. در ادامه با پیاده سازی کلاس برای شی مداد به عنوان شی حقیقی و کلاس برای تاریخ به عنوان شی در برنامه نویسی بیشتر پیش خواهیم رفت.
توجه : این کلاس ها فقط دارای خصوصیت خواهند بود و فعلا عملکرد ها نادیده گرفته می شوند. ضمن اینکه ممکن است این کد ها در عمل به دلیل اینکه صرفا بار آموزشی دارند قابل اجرا نباشند.
کلاس مداد
{ خصوصیات : رنگ نوشتن، رنگ بدنه.}
class Pencil
{
public $writeColor;
public $bodyColor;
}
در پیاده سازی کلاس خصوصیات (Properties) فقط تعریف می شوند و مقداری ندارند. هر شی که ساخته می شود property ها را مقدار می دهد. کلمه کلیدی public برای تعیین دید Property است که در آینده بیشتر با موضوع دید (Visibility) آشنا خواهید شد.
$redPencil = new Pencil();
$redPencil->writeColor = 'red';
$redPencil->bodyColor = 'red';
print_r($redPencil);
$blackPencil = new Pencil();
$blackPencil->writeColor = 'black';
$blackPencil->bodyColor = 'black';
print_r($blackPencil);
شی redPencil و blackPencil هردو از کلاس Pencil ساخته شده اند اما خصوصیاتشان باهم متفاوت است. در صورتی که با تابع print_r از شی پرینت بگیرید بیشتر متوجه این موضوع خواهید شد.
کلاس تارخ
{خصوصیات : سال، ماه، روز.}
class Date
{
public $year;
public $month;
public $day;
}
مانند پیاده سازی کلاس Pencil (مداد) فقط Property ها (خصوصیات) پیاده شده اند و مقدار دهی نمی شوند.
$myBirth = new Date();
$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);
دو شی از کلاس Date (تاریخ) ساخته شد ، یکی برای تاریخ تولد من (شی myBirth) و یکی هم برای تاریخ تولد دوستم محمد (شی mohammadBirth). نکته قابل توجه این است که شما درک کنید اگرچه در کلاس متغیر ها (خصوصیات) تعریف می شوند اما برای هرشی مقداری که متغییر ها می گیرند متفاوت است. مقدار خصوصیات اشیا از همدیگر مجزاست و به هیچ وجه باهم مرتبط نیستند.

ویژگی های پی اچ پی

پی اچ پی دارای ویژگی هایی ذاتی است که به شی گرایی هم صرایت داده است. دانستن این ویژگی اهمیت دارد تا هم برای بهره گیری شوند برای ساختن یک برنامه جذاب تر و هم اهمیت دارند برای جلوگیری از اشتباهات گاها مهلک!.
1-خصوصیت بدون فرمت:
در کدنویسی کردن یک کلاس ، یک خصوصیت مانند یک متغییر عادی تعریف می شود. این یعنی اینکه از قوانین نام گذاری متغییر ها استفاده می کند و باز یعنی اینکه خصوصیات هم مانند متغییر ها نوع خاصی ندارند مانند string یا int یا bool یا ...
$myBirth = new Date();
$myBirth->year = '1987';
$myBirth->month = 5;
$myBirth->day = 20.0;
var_dump(myBirth);
2-تعریف آزاد :
در پی اچ پی یک متغییر ایجاد می شود وقتی که در هر کجای برنامه مقدار دهی شود. همین ویژگی برای خصوصیات هم وجود دارد.
$myBirth = new Date();
$myBirth->year = 1987;
$myBirth->month = 5;
$myBirth->day = 20;
$myBirth->dayOfWeek = 'Friday';
$myBirth->hour = 21;
var_dump(myBirth);
دو Property آخر در کلاس Date تعریف نشده اند اما پی اچ پی آنها را فقط برای شی myBirth ایجاد و مقدار دهی می کند. در مقاله ایی بیشتر در مورد set و get جادویی خواهیم گفت.
پیوندها
شی گرایی 5 - خصوصیات
تابع print_r
تابع var_dump

نظرات  (۴)

خیلی ممنون امین عزیز
خیلی خوب بود
بسیار عالی
سلام عالی بود
لطفا برید سر اصل مطلب برای پایگاه داده یا غیره.
من نظرم اینکه بیایید یک پروژه کار کنیم.
یعنی با آموزی سک برنامه بنویسم.
سایت من mohsenphp.ir
ممنون محسن جان
آموزش عملی خیلی خوبه البته باید مقدمات هم گفته بشه
دارم روی یک کلای پایگاه داده برای آموزش عملی کار می کنم

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی