Emad Saif نشر 27 مايو 2022 أرسل تقرير نشر 27 مايو 2022 تعلمت مؤخرًا عن توابع getter و setter وكيفية عملها في عدة لغات مثل JavaScript وغيرها، لكن حاولت أن أقوم بعمل هذا النوع من التوابع في PHP ولم أنجح كيفية إضافة توابع getters و setters في صنف Class بلغة PHP؟ 1 اقتباس
1 Wael Aljamal نشر 27 مايو 2022 أرسل تقرير نشر 27 مايو 2022 توفر لغة PHP دوال سحرية magic methods ومنها دالتين __get __set تستخدمان لقراءة قيم خاصيات الكائنات وإسناد قيم لها على الترتيب. <?php class MyClass { private $Field1; private $Field2; // قراءة قيمة خاصية public function __get($property) { if (property_exists($this, $property)) { return $this->$property; } } // إسناد قيمة خاصية public function __set($property, $value) { if (property_exists($this, $property)) { $this->$property = $value; } return $this; } } ?> للدوال السابقة بعض المساوئ، صعوبة و تعقيد تخصيص التحقق من إدخال قيم معينة لخواص معينة (قبول أرقام موجبة لبعض القيم و تواريخ لبعضها) صعوبة عمل تنسيق للمخرجات/ مثل تنسيق التاريخ و العملات. عدم التفريق بين محددات الوصول للمعاملات لذلك من الأفضل تخصيص دالة لكل معامل من خواص الصنف و التعامل معها بالطريقة التي تناسبها أي تطبيق دالة set و get خاصة لكل خاصية GET => $this->getProperty() SET => $this->setProperty($value) وتطبيقها بشكل بسيط (يمكن إضافة التحقق و تخصيص الخرج لكل خاصية) public function getField1() { return $this->Field1; } protected function setField2($x) { $this->Field2 = $x; } مثال: class Person { private $name = ''; private $birth_date; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } public function getBirthDate($format='Y-m-d') { //format $birth_date ... //$birth_date = ... return $birth_date; } public function setBirthDate($birth_date) { //if($birth_date is not valid) throw an exception ... $this->birth_date = $birth_date; } public function getAge() { //calculate age ... return $age; } } https://wiki.hsoub.com/PHP/magic 1 اقتباس
0 هامل عبد القادر نشر 15 أغسطس 2022 أرسل تقرير نشر 15 أغسطس 2022 بتاريخ On 27/05/2022 at 18:25 قال Wael Aljamal: التحقق من إدخال قيم معينة لخواص معينة (قبول أرقام موجبة لبعض القيم و تواريخ لبعضها) صعوبة عمل تنسيق للمخرجات/ مثل تنسيق التاريخ و العملات. في الحقيقة أحس أن فهمي لهذا الموضوع لازال سطحي أو يحتاج إلى مزيد من الخبرة العملية. سؤالي هو : هل يمكنني متابعة المسار على الرغم من عدم إستيعابي لهذه النقطة جيدا أم أتوقف هنا لأتقن الدوال السحرية بشكل جيد أو لا ثم أنتقل إلى النقطة الموالية؟ هل إستيعاب بعض الأساسيات الصعبة بشكل قليل كاف للمرور الى التطبيق العملي للإستزادة والتعمق؟ شكرا جزيلا لك. 1 اقتباس
0 Wael Aljamal نشر 15 أغسطس 2022 أرسل تقرير نشر 15 أغسطس 2022 بتاريخ منذ ساعة مضت قال عبد القادر فاروق: في الحقيقة أحس أن فهمي لهذا الموضوع لازال سطحي أو يحتاج إلى مزيد من الخبرة العملية. سؤالي هو : هل يمكنني متابعة المسار على الرغم من عدم إستيعابي لهذه النقطة جيدا أم أتوقف هنا لأتقن الدوال السحرية بشكل جيد أو لا ثم أنتقل إلى النقطة الموالية؟ هل إستيعاب بعض الأساسيات الصعبة بشكل قليل كاف للمرور الى التطبيق العملي للإستزادة والتعمق؟ شكرا جزيلا لك. يمكنك تخطي الدرس والعودة إليه لاحقا، فعلياً لن يؤثر ذلك عليك، و بمجرد ماظهر لك تطبيق للدوال السحرية راجع هذه الإجابة لتعمل مقارنة و تثبيت الفكرة والفهم السليم. يمكنك الاطلاع على أمثلة عن الانترنت أيضا ويوتيوب لزيادة الأفكار عنها. 1 اقتباس
السؤال
Emad Saif
تعلمت مؤخرًا عن توابع getter و setter وكيفية عملها في عدة لغات مثل JavaScript وغيرها، لكن حاولت أن أقوم بعمل هذا النوع من التوابع في PHP ولم أنجح
كيفية إضافة توابع getters و setters في صنف Class بلغة PHP؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.