با سلام، دوست گرامي از var در زماني استفاده ميشه كه بخواين يك متغير رو تعريف كنيد ولي فعلاً مقداري بهش ندين. private باعش ميشه يك عنصر كلاس (فيلد، متد يا هر چيز ديگه كه باشه)، بصورت خصوصي در بياد و public اون رو بصورت عمومي در مياره. براي اينكه دقيقاً فرقشون رو بدونيد، بايد اينطور توضيح بدم كه كلاً ما از عناصر يك كلاس در دو قسمت استفاده ميكنيم:
1- كد درون كلاس (يعني جايي كه با آكولاد باز و بسته ابتدا و انتهاي كلاس مشخص ميشه)
2- ازطريق يك شئ كه از روي كلاس ايجاد ميكنيم (خارج از كد كلاس و در جايي كه كلاس فراخواني ميشه)
عناصر public در هر دو قسمت قابل استفاده هستن ولي عناصر private فقط در قسمت اول يعني كد درون كلاس قابل استفادن. براي مثال، به كد زير دقت كنيد:
class Test
{
private PriMethod()
{
//codes
}
public PubMethod()
{
$this->PriMethod(); //It's ok
}
}
$test = new Test();
$test->PubMethod(); //It's ok
$test->PriMethod(); //Error
اما اين وسط، عناصر protected چه كاره هستن؟ بايد دقت كنيد كه اگه يك كلاس از كلاس ديگه مشتق بشه، تمامي كدهاي غير private اون رو به ارث ميبره. مثلاً اگه كلاس پايه، يك فيلد يا متد از نوع public داشته باشه، اين فيلد يا متد در كلاسهاي مشتق شده از اون و همچنين اشياء ايجاد شده از اون كلاس هم وجود خواهند داشت اما اگه private باشه، نه كلاسهاي مشتق شده بهش دسترسي دارن و نه اشيائي كه از اون كلاس ايجاد ميشن. حالا اگه بخوايم عنصري داشته باشيم كه در كلاس مشتق شده وجود داشته باشه (ارث برده بشه) ولي ازطريق اشياء قابل استفاده نباشه، راه حل چيه؟ جواب: عناصر protected راه حل ما هستن: اين عناصر براي كلاسهاي مشتق شده از كلاس پايه، مثل public عمل ميكنن و ارث برده ميشن ولي براي اشياء ايجاد شده از كلاس مثل private عمل ميكنن و از بيرون ديده نميشن.
اميدوارم خوب توضيح داده باشم.
موفق باشيد.