تفاوت public و private و protected در کلاسهای php
در برنامهنویسی شیگرا با استفاده از کلاسها، اشیاء را ایجاد میکنیم. هر کلاس شامل ویژگیها (صفات) و متدهایی (توابع) است که رفتار و مشخصات آن شیء را تعریف میکنند. سطوح دسترسی به این ویژگیها و متدها، تعیین میکنند که از چه قسمتهایی از برنامه میتوان به آنها دسترسی داشت. در PHP، سه سطح دسترسی اصلی برای اعضای یک کلاس وجود دارد: public، private و protected.
فرض کنید کلاسی به نام User داریم که اطلاعات کاربر را ذخیره میکند. این کلاس میتواند شامل ویژگیهایی مانند name، email و password و همچنین متدهایی برای تنظیم و دریافت این مقادیر باشد.
۱- public
عضوهای با سطح دسترسی public در همه جا قابل دسترسی هستند. به این معنی که میتوان از آنها در داخل کلاس مورد نظر، در سایر کلاسها و حتی در خارج از هر کلاسی استفاده کرد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class User { public $name; public $email; public function setName($newName) { $this->name = $newName; } public function getName() { return $this->name; } } $user = new User(); $user->setName("علی"); echo $user->getName(); // خروجی: علی |
۲- protected
عضوهای با سطح دسترسی protected در داخل کلاس و کلاسهای مشتق شده (ارثبری شده) قابل دسترسی هستند. این سطح از دسترسی برای زمانی که میخواهیم اعضای کلاس را برای استفاده در کلاسهای فرزند در دسترس قرار دهیم، اما از دسترسی مستقیم به آنها از خارج کلاس جلوگیری کنیم، مفید است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class User { protected $email; public function setEmail($newEmail) { $this->email = $newEmail; } protected function getProtectedEmail() { return $this->email; } } class Admin extends User { public function getAdminEmail() { return $this->getProtectedEmail(); // قابل دسترسی به دلیل ارثبری } } $user = new User(); $user->setEmail("ali@example.com"); echo $user->getProtectedEmail(); // خطا: غیرقابل دسترس |
۳- private
عضوهای با سطح دسترسی private فقط در داخل کلاسی که در آن تعریف شدهاند قابل دسترسی هستند. private محدودترین سطح دسترسی است و از دسترسی به این اعضا از هر جای دیگر جلوگیری میکند. از این سطح برای پنهان کردن جزئیات پیادهسازی داخلی کلاس و محافظت از دادههای حساس استفاده میشود.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class User { private $password; public function setPassword($newPassword) { $this->password = $newPassword; } private function getEncryptedPassword() { return password_hash($this->password, PASSWORD_DEFAULT); } } $user = new User(); $user->setPassword("123456"); echo $user->getEncryptedPassword(); // خطا: غیرقابل دسترس |
خلاصه
به طور کلی، از private برای اعضای داخلی که نیازی به دسترسی خارجی ندارند، protected برای عضوهایی که باید در کلاسهای مشتق شده قابل استفاده باشند و public برای عضوهایی که همه جا قابل فراخوانی هستند، استفاده کنید.
استفاده از سطح دسترسی مناسب به شما کمک میکند تا کدهای خود را به درستی ایمنسازی و پیکربندی کنید و از تغییر یا سوء استفادهی ناخواسته از اطلاعات خصوصی جلوگیری نمایید.