در زبان PHP، سطح دسترسی private به عنوان یکی از سطوح دسترسی میتواند برای متغیرها، توابع و ثابت ها استفاده شود. وقتی یک عضو با سطح دسترسی private تعریف میشود، به معنی این است که تنها از داخل آن آبجکت قابل دسترسی است و نمیتوان به آن از خارج دسترسی داشت.
یکی از مزایای استفاده از سطح دسترسی private ، این است که اطمینان حاصل میشود که دادهها و متدهایی که تنها باید در داخل آبجکت استفاده شوند، از داخل آن قابل دسترسی هستند و از خارج قابل دسترسی نیستند.
اما یک نکته جالب یا غیر عادی در زبان php برای این حالت وجود دارد
آبجکت هایی از نوع یک کلاس می توانند به اعضای private و protected هم دیگر دسترسی داشته باشند حتی اگر آن ها یک نمونه برابر نباشند!!!
کلاس زیر را ببینید، دارای پراپرتی foo و متد bar که هر دو بهصورت private هستند.
این کلاس یک متد پابلیک به نام baz دارد که یک آبجکت از نوع همین کلاس Test می گیرد و چون آبجکت دریافت شده از نوع خود همین کلاسی است که متد baz در آن قرار دارد (یعنی کلاس Test) پس به راحتی می تواند به اعضای خصوصی آبجکت other دسترسی داشته باشد.
خروجی مثال بالا به صورت زیر خواهد بود:
string(5) hello Accessed the private method.