آشنایی با مفاهیم Constructor و Destructor در PHP به زبان ساده

سیده آمین ارمان

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/05/10
ارسالی ها
1,730
امتیاز واکنش
20,744
امتیاز
795
محل سکونت
البرز
اگر جزو آن دسته از کاربرانی هستید که با زبان برنامه نویسی پی اچ پی آشنا نیستید، توصیه می‌کنیم که از خواندن این مقاله صرف نظر کنید چرا درک مطالب آموزش داده شده نیازمند آشنایی با مفاهیم ابتدایی شیئ گرایی در زبان برنامه نویسی PHP می باشد. به طور کلی منظور از Constructor در زبان برنامه نویسی پی اچ پی نوع خاصی از متدها است که از سه خصیصه برخوردار اند که متدهای عادی عاری از آن‌ها هستند که عبارتند از: ۱- نام این متد همیشه به صورت ثابت construct__ است (توجه داشته باشیم که معنی لغوی لغت Construct در زبان فارسی «ساختن» می باشد.) ۲- این متد به صورت خودکار به محض اینکه یک شیئ از روی کلاسی که این متد داخلش تعریف شده بسازیم فراخوانی شده یا بهتر بگوییم Call می شود. ۳- داخل این نوع متدها به هیچ وجه نمی‌توان از دستور return استفاده کرد. اگر بخواهیم مصارف کانستراکتور در زبان PHP را نام ببریم می‌توان به ارتباط با دیتابیس، تنظیم کوکی ها و یا اختصاص مقدار اولیه به متغیرها اشاره کرد.

به طور کلی، هر زمانی که بخواهیم پس از ساختن یک شیئ از روی کلاسی کاری را اول از همه و آن هم به صورت خودکار انجامش دهیم، می بایست از کانستراکتور استفاده کرده و آن کار یا کارها را داخل کانستراکتور تعریف کنیم. توجه داشته باشیم که کانستراکتورها همانند متدهای معمولی می‌توانند پارامتر ورودی دریافت کنند. در مقابل Constructor مفهوم دیگری است تحت عنوان Destroctor. گفتیم کانستراکتور زمانی فراخوانی می‌شود که یک شیئ از روی کلاسی ساخته می شود. در مقابل، دیستراکتور زمانی فراخوانی می‌شود که یک Object یا بهتر بگوییم یک شیئ از بین می رود. از جمله مواقعی که یک شیئ ساخته شده از روی کلاسی از بین می‌رود یا اصطلاحاً Destroy می‌شود می‌توان به زمانی اشاره کرد که اسکریپت پی اچ پی ما به اتمام رسیده که بالتبع بخشی از حافظه آشغال شده توسط آن اسکریپت نیز آزاد می‌شود و یا زمانی که از متدی تحت عنوان unset استفاده می کنیم. برای ساخت متد دیستراکتور نیز همواره می بایست آن را به صورت destruct__ بنویسیم. نکته‌ای که همواره در مورد دیستراکتورها می بایست مد نظر قرار دهیم این است که این گروه از متدها بر خلاف کانستراکتورها و سایر متدها به هیچ وجه نمی‌توانند پارامتر ورودی دریافت کنند. حال که با مفاهیم تئوریک کانستراکتور و دیستراکتور آشنا شدیم، قصد داریم تا به صورت عملی این دو متد را ایجاد کنیم. برای این منظور، فایلی ایجاد می‌کنیم تحت عنوان Dummy.php و داخل آن نیز کلاسی تحت عنوان Dummy ایجاد کرده سپس داخل این کلاس اقدام به نوشتن متدهای construct و destruct می کنیم:

class Dummy
{
function __construct()
{
echo 'Constructor Called.';
}

function __destruct()
{
echo 'Destructor Called.';
}
}
همان طور که در کد فوق ملاحظه می شود با استفاده از کلیدواژه class کلاسی تحت عنوان Dummy ایجاد کرده ایم (لازم به ذکر است که واژه انگلیسی Dummy به معنی «کودن» است.) داخل این کلاس متدی تحت عنوان construct ایجاد کرده ایم به این شکل که دستور function که الزامی است را نوشته سپس دو علامت _ پشت سر هم قرار داده (که این هم الزامی است) و نام construct را نوشته ایم. داخل این متد صرفا از یک دستور echo استفاده کرده ایم که قرار است عبارت Constructor Called به معنی «کانستراکتور فرا خوانده شد.» را چاپ کند. خارج از کروشه های مرتبط با متد کانستراکتور، به همین صورت متد دیگری تحت عنوان destruct ایجاد کرده ایم با این تفاوت که این متد وظیفه دارد تا در زمانی که فراخوانده شد عبارت Destructor Called به معنی «دیستراکتور فراخوانده شد.» را در معرض دید کاربر قرار دهد. در این مرحله از کار، کدنویسی ما به پایان می رسد و صرفا نیاز است تا یک شیئ از روی کلاس آقای کودن ایجاد کنیم!

$object = new Dummy();
unset($object);
همان طور که در کد فوق ملاحظه می شود، برای ساخت یک Object جدید از روی کلاس ابتدا نامی برای آن انتخاب می کنیم که در این مثال نام object به معنی «شیئ» در نظر گرفته شده است و مقدار آن را برابر با کلیدواژه new سپس نام کلاس مد نظر قرار می دهیم. برای از بین بردن یک شیئ ساخت شده می توان از متد از پیش تعریف شده unset خود زبان PHP استفاده نمود. اکنون می توانیم فایل خود را در مرورگر اجرا کنیم (پیش از اجرا دو نکته را مد نظر داشته باشیم اول این که شیئ ساخته شده می بایست خارج از کروشه های مرتبط با کلاس Dummy باشد و دوم این که پیش از اجرای فایل در مرورگر می بایست از نرم افزاری همچون ومپ برای ایجاد یک سرور مجازی استفاده کنید.)

آشنایی با کانستراکتور در زبان پی اچ پی

در تفسیر خروجی بالا بایستی گفت که به محض ساخت یک شیئ جدید از روی کلاس Dummy به صورت خودکار متد کانستراکتور این کلاس اجرا می شود به همین دلیل می بینیم که در خط اول عبارت داخل این متد به نمایش درآمده است. به محض از بین بردن یک شیئ با بهتر بگوییم Destroy کردن یک Object بلافاصله متد دیستراکتور فراخوانده می شود که خروجی آن هم به نمایش در آمده است
 

برخی موضوعات مشابه

بالا