parent و self

parent و self در PHP دو کلمه کلیدی هستند که کدنویسی را در زمان نوشتن برنامه‌های شیء گرا راحت می‌کنند. از کلمه کلیدی parent برای دسترسی به سازنده و متدهای کلاس والد و از کلمه کلیدی self برای دسترسی به کلاس جاری و استفاده از اعضاء و متدهای استاتیک و همچنین ثابت‌های کلاس استفاده می‌شود. نحوه استفاده از این دو کلمه برای دسترسی به اعضا و متدها به صورت زیر است :

parent :: class member
self :: class member

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

   1: <?php
   2:     class ParentClass 
   3:     {
   4:         const NAME = "ParentClass";
   5:         function __construct()
   6:         {
   7:             echo "In " . self::NAME . " constructor" . "<br/>";
   8:         }
   9:     }
  10:     
  11:     class Child extends ParentClass 
  12:     {
  13:         const NAME = "Child";
  14:         function __construct()
  15:         {
  16:             parent::__construct();
  17:             echo "In " . self::NAME . " constructor" . "<br/>";
  18:         }
  19:     }
  20:     
  21:     $child = new Child();
  22: ?>
In ParentClass constructor
In Child constructor

همانطور که احتمالاً متوجه شده‌اید برای دسترسی به اعضا، متدها و ثابت‌ها بعد از این دو کلمه کلیدی علامت دو نقطه (::) می‌گذاریم. کلمه کلیدی self در خط 7 به کلاس ParentClass و در خط 17 به کلاس Child اشاره دارد. در همین دو خط علامت دو نقطه و سپس نام ثابت‌های این دو کلاس یعنی NAME را نوشته‌ایم و این بدین معنی است که می‌خواهیم از این ثابت‌ها استفاده کنیم. در خط 16 برای اینکه از تمام کدهای سازنده کلاس پدر استفاده کنیم، به راحتی کلمه parent و بعد دو نقطه و در نهایت نام سازنده یعنی ()constract__ را می‌نویسیم. این کار باعث می‌شود تمام کدهای موجود در سازنده کلاس پدر در داخل کلاس فرزند اجرا شوند. برای همین است که وقتی یک شیء از کلاس فرزند ایجاد می‌کنیم کدهای سازنده کلاس پدر (خط 7) اجرا می‌شوند.