آموزش PHP – جلسه بیست و دوم: شیء گرایی (بخش دوم)

در ادامه‌ی سری آموزش پی‌اچ‌پی، همان‌طور که می‌دانید از جلسه قبل برنامه‌نویسی شیءگرا را آغاز کردیم. در این جلسه به ادامه مبحث شی‌ءگرایی خواهیم پرداخت. پس در ادامه‌ی این آموزش با ما همراه شوید.

در جلسه قبل مرحله به مرحله پیش رفتیم و گفتیم که بهترین روش یادگیری مبحث شیءگرایی، تمرین است. اگر جلسه قبل را هنوز مطالعه نکرده‌اید، لطفا ابتدا آن را مطالعه کرده و سپس ادامه آموزش را از این مطلب پیگیری کنید. پس از انجام مراحل یک تا پنج که در جلسه قبل توضیح داده شد، حال به سراغ گام‌های بعدی می‌رویم.

مرحله ششم:

متغیر this$ 

به کد زیر توجه کنید:

$this->name = $new_name;

در اینجا this$ در واقع یک متغیر درونی تلقی می‌شود که به شیء کنونی کلاس موردنظر اشاره دارد. به عبارت دیگر، متغیر this$ یک متغیر مخصوص برای ارجاع‌های داخلی است. به منظور دسترسی به پروپرتی‌ها که در جلسه قبل در مورد آن‌ها توضیح دادیم، می‌توانید از this$ استفاده کنید و از همین طریق اقدام به صدا زدن متدها یا همان توابع درونی یک کلاس کنید. مجددا توجه شما را به کد زیر جلب می‌کنیم:

function get_name() {
return $this->name;
}

در حال حاضر بهتر است this$ را بهعنوان یکی از کلمات کلیدی مخصوص شیءگرایی در پی‌اچ‌پی بشناسید. هنگامی که موتور پردازشی پی‌اچ‌پی به کلمه this$ برسد، می‌داند که چه کاری باید انجام دهد. خبر خوب این‌که شما هم به زودی با کمی تمرین دقیقا متوجه این ساختار خواهید شد و از آن لذت زیادی خواهید برد.

مرحله هفتم:

استفاده از کلاس ساخته شده در صفحه‌ اصلی پی‌اچ‌پی (index.php)

شما نباید هیچگاه در فایل‌های اصلی پروژه‌های خود، به صورت مستقیم اقدام به ساختن کلاس‌های موردنظر کنید. اگر کلاس‌ها را به‌طور مستقیم در فایل‌های اصلی پروژه تعریف کنید این کار باعث می‌شود تا از هدف اصلی شیءگرایی در پی‌اچ‌پی دور شوید.

بهترین کار این است که همیشه برای هر کلاس یک فایل جداگانه php ایجاد کنید تا همه چیز بسیار با نظم و مرتب باشد. سپس در هر فایلی از پروژه پی‌اچ‌پی خود می‌توانید از کلاس‌های مدنظرتان استفاده کنید. برای استفاده از یک کلاس در سایر فایل‌های پی‌اچ‌پی، همان‌طور که احتمالا می‌دانید و بارها نیز به این موضوع اشاره کرده‌ایم، می‌توانید از دستورات include یا require بهره ببرید.

مجددا توجه شما را به کد زیر جلب می‌کنیم.

<?php include(“class_lib.php”); ?>

نکته: توجه داشته باشید که تا به این لحظه هنوز در کلاس خود هیچ چیز نداریم و در ادامه متدها و پروپرتی‌های موردنظرمان را ایجاد خواهیم کرد.

مرحله هشتم:

معرفی کردن/ساختن اشیاء

کلاس‌ها نقشه‌های کلی یا قالب‌های کلی برای اشیاء در پی‌اچ‌پی هستند. تا زمانی که شما instantiation (نمونه‌سازی) را انجام ندهید، در واقع کلاس‌های پی‌اچ‌پی به اشیاء مبدل نخواهند شد.

هنگامی که شما یک کلاس را نمونه‌سازی کنید، در حقیقت یک نمونه از آن را تولید کرده‌اید و بنابراین می‌توان در این شرایط اقدام به ساخت اشیاء کرد.

به عبارت دیگر، نمونه‌سازی را می‌توان فرآیند ساخت یک نمونه از یک شیء در حافظه تعریف کرد. اما کدام حافظه؟ منظور ما در اینجا، البته حافظه سرور است. به کد زیر دقت کنید:

<?php include(“class_lib.php”); ?>
<?php
$mojtaba = new person();
?>

نکته: متغیر mojtaba$ در کد بالا یک مرجع برای شیء تازه ساخته شده‌ی person خواهد بود. در اینجا گفتیم که متغیر mojtaba$ یک مرجع است چراکه ما از همین مرجع به منظور کنترل و استفاده از اشیاء کلاس person بهره خواهیم برد.

اگر شما کد بالا را اجرا کنید، هیچ چیزی را در صفحه مشاهده نخواهید کرد. دلیل این امر این است که ما هنوز به پی‌اچ‌پی نگفته‌ایم که چه کاری با شیء تازه ساخته شده‌مان انجام دهد.

مرحله نهم:

کلمه کلیدی “new”

به منظور ساختن یک شیء خارج از یک کلاس، شما باید از کلمه کلیدی new استفاده کنید. هنگام ساختن و نمونه‌سازی یک کلاس، همانند مثال زیر، شما می‌توانید به صورت اختیاری، به نام کلاس کاراکترهای پرانتز را اضافه کنید. برای فهم بیشتر این موضوع شما می‌توانید در کد زیر مشاهده کنید که چگونه می‌توان چندین شیء را از یک کلاس مشابه ایجاد کرد.

براساس روش کارکرد موتور پی‌اچ‌پی، هر شیٔ در واقع ماهیت خود را دارد. اما این منطقی به نظر می‌رسد؟ کد زیر را مشاهده و به دقت آن را بررسی کنید.

<?php include(“class_lib.php”); ?>
<?php
$mojtaba = new person();
$miaad = new person;
?>

نکته: هنگام ساختن یک شیء، اطمینان حاصل کنید که نام آن کلاس را بین علامت ‘ ‘ قرار ندهید. به مثال زیر توجه کنید:

$mojtaba = new ‘person’;

کد بالا باعث ایجاد خطا خواهد شد.

مرحله دهم:

ست کردن خواص اشیاء

حال که دو شیء مجزا از کلاس person را با نام‌های mojtaba$ و miaad$ ساختیم، می‌توانیم پروپرتی‌های آن‌ها را نیز با استفاده از متدهای داخلی کلاس person که پیش از این ایجاد کرده بودیم، تنظیم کنیم.

لطفا به یاد داشته باشید که هر دو شیء mojtaba$ و miaad$ از یک کلاس مشابه ساخته شده‌اند، با این وجود پی‌اچ‌پی این دو را به عنوان دو شیء متفاوت می‌شناسد. به کد زیر توجه کنید:

<?php include(“class_lib.php”); ?>
<?php
$mojtaba = new person();
$miaad = new person;
$mojtaba->set_name(“mojtaba bolhasani”);
$miaad->set_name(“miaad baferasat”);
?>

مرحله یازدهم:

دسترسی به داده‌های شیء‌ها

حال ما از متدهای دریافت‌کننده استفاده می‌کنیم تا به داده‌هایی که در شیء‌های خود داریم، دسترسی داشته باشیم. این داده‌ها همان اطلاعاتی هستند که با استفاده از متدهای تنظیم‌کننده (ست‌کننده) در اشیاء ایجاد شده (mojtaba$ و miaad$) ذخیره کردیم.

هنگام دسترسی به متدها و پروپرتی‌های یک کلاس باید از عملگر <- استفاده کنیم. به کد زیر با دقت نگاه کنید.

<?php include(“class_lib.php”); ?>
<?php
$mojtaba = new person();
$miaad = new person;

$mojtaba->set_name(“mojtaba bolhasani”);
$mihaad->set_name(“miaad baferasat”);

echo “mojtaba’s full name: ” . $mojtaba->get_name();
echo “miaad’s full name: ” . $miaad->get_name();
?>

نکته: توجه داشته باشید که عملگر <- در اینجا به عملگر <- در آرایه‌ها شباهتی ندارد.

 شما تا به این لحظه، نیمی از مسیر یادگیری مبحث شیءگرایی را در پی‌اچ‌پی آموخته‌اید. بهتر است کمی استراحت کرده و سپس مباحث این جلسه و جلسه قبل را با دقتی بیشتر برای خود مرور کرده و آن‌ها را با استفاده از سرور مجازی Xampp بر روی رایانه شخصی خود تست کنید تا آموخته‌های خود را تثبیت کرده و شیءگرایی را بهتر درک کنید. بد نیست اشاره کنیم که شما در همین دو جلسه

  • یک کلاس پی‌اچ‌پی طراحی کردید
  • چندین شیء را براساس کلاس ساخته شده خود ایجاد کردید
  • داده‌های موردنظرتان را در اشیاء ساخته شده وارد کردید
  • به داده‌های موردنیاز در اشیاء ساخته شده دسترسی پیدا کردید

تا همین‌جا شما پایه و اساس شیءگرایی را در پی‌اچ‌پی فراگرفته‌اید. در جلسه‌ی بعدی ادامه مبحث شی‌ءگرایی را در زبان برنامه‌نویسی PHP می‌گیریم.

برای تمرین سعی کنید یک کلاس دیگر بسازید که همانند آنچه در این دو جلسه ایجاد کردیم شامل متدها و پروپرتی‌های خاص خود باشد.

 منبع: زومیت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.