في PHP البرمجة الشيئية (OOP)، معدلات الوصول تتحكم في رؤية خصائص وأساليب الفئة. معدّلات الوصول الأساسية في PHP هي عامة ومحمية وخاصة.
سوف ترشدك هذه المقالة إلى غرض واستخدام معدلات الوصول هذه وتشرح كيفية تطبيقها بشكل فعال في PHP OOP.
class User { public $name = "John"; public function greet() { return "Hello, " . $this->name; } } $user = new User(); echo $user->greet(); // Output: Hello, John
في هذا المثال، كل من الخاصية $name والطريقة Greeting() عامة، مما يسمح بالوصول إليهما مباشرة من خارج الفصل.
class Person { protected $age = 30; protected function getAge() { return $this->age; } } class Employee extends Person { public function showAge() { return $this->getAge(); // Correct: Accesses protected method within a subclass } } $employee = new Employee(); echo $employee->showAge(); // Output: 30
في هذا المثال، getAge() هي طريقة محمية، والتي يمكن الوصول إليها ضمن فئة الموظف، وهي فئة فرعية من الشخص.
class Person { protected $age = 30; protected function getAge() { return $this->age; } } $person = new Person(); echo $person->getAge(); // Error: Cannot access protected method Person::getAge()
رسالة الخطأ: خطأ فادح: خطأ لم يتم اكتشافه: لا يمكن الوصول إلى الطريقة المحمية Person::getAge()
في هذه الحالة، محاولة الوصول إلى الأسلوب المحمي getAge() مباشرة من مثيل الشخص يؤدي إلى خطأ لأنه لا يمكن الوصول إلى الأساليب المحمية من خارج الفصل.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } public function showBalance() { return $this->getBalance(); // Correct: Accesses private method within the same class } } $account = new BankAccount(); echo $account->showBalance(); // Output: 1000
في هذا المثال، تعد طريقة getBalance() خاصة، لذا لا يمكن الوصول إليها إلا ضمن فئة BankAccount. طريقة showBalance() عامة ويمكن استخدامها للوصول بشكل غير مباشر إلى getBalance() الخاص.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } } $account = new BankAccount(); echo $account->getBalance(); // Error: Cannot access private method BankAccount::getBalance()
رسالة الخطأ: خطأ فادح: خطأ لم يتم اكتشافه: لا يمكن الوصول إلى الطريقة الخاصة BankAccount::getBalance()
في هذه الحالة، تؤدي محاولة الوصول إلى الطريقة الخاصة getBalance() مباشرة من مثيل BankAccount إلى حدوث خطأ لأنه لا يمكن الوصول إلى الطرق الخاصة من خارج الفصل.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } } class SavingsAccount extends BankAccount { public function showBalance() { return $this->getBalance(); // Error: Cannot access private method BankAccount::getBalance() } } $savings = new SavingsAccount(); echo $savings->showBalance();
رسالة الخطأ: خطأ فادح: خطأ لم يتم اكتشافه: لا يمكن الوصول إلى الطريقة الخاصة BankAccount::getBalance()
هنا، لا يمكن الوصول إلى الطريقة الخاصة getBalance() حتى للفئات الفرعية مثل SavingsAccount، مما يدل على أنه لا يمكن الوصول إلى الطرق الخاصة خارج الفئة المحددة لها.
التعديل | داخل الفصل | الفئة المشتقة | خارج الفصل |
---|---|---|---|
عام | نعم | نعم | نعم |
محمي | نعم | نعم | لا |
خاص | نعم | لا | لا |
توفر معدّلات الوصول الخاصة بـ PHP (العامة والمحمية والخاصة) آلية لإدارة الرؤية والتغليف في OOP. من خلال فهم هذه المعدلات وتطبيقها بشكل صحيح، يمكنك إنشاء تعليمات برمجية أكثر أمانًا وقابلية للصيانة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3