جلوگیری از بازنویسی(override)یک تابع خاص در php
#1
Note 
سلام. من دارم یه کلاس مینویسم که توش چند تا تابع داره و من نمیخوام کسی بتونه با child گرفتن اون تابع رو override کنه آیا راهی هست که بتونم اینکارو انجام بدم؟ همه جارو گشتم نبود Sad

پاسخ
#2
Note 
سلام
من خیلی حرفه ای نیستم اما خوب وقتی سورس دست خودته دیگه نیازی به این کار نیست که خوب override نکن!

پاسخ
#3
Note 
یکم بیشتر توضیح بده منظورت از child گرفتن چیه؟
تا حالا چنین چیزی نشنیدم

پاسخ
#4
Note 
نقل قول: سلام
من خیلی حرفه ای نیستم اما خوب وقتی سورس دست خودته دیگه نیازی به این کار نیست که خوب override نکن!
دوست عزیز این به عقل منم میرسه! اینطوری نیست.

نقل قول: یکم بیشتر توضیح بده منظورت از child گرفتن چیه؟
تا حالا چنین چیزی نشنیدم
منظورم ایجاد یک child از یه کلاسه که با کلمه extends انجام میشه

پاسخ
#5
Note 
فکر نمیکنم چنین چیزی وجود داشته باشه من خیلی از کتابهای php رو خوندم ولی چنین چیزی ندیدم.

پاسخ
#6
Note 
maJID maGIC@
از کلمه کلیدی final استفاده کنید. میتونید هم یک کلاس و هم یک متد رو Final کنید.

مثال:
کد php:
<?php
class BaseClass {
   public function 
test() {
       echo 
"BaseClass::test() called\n";
   }
   
   final public function 
moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class 
ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>

Php1@
فرض کنید ما یه web app نوشتیم که در یکی از کلاس های ما تابعی وجود داره که اگر تغییر کنه سیستم دچار مشکل میشه، حالا یکی میخواد بیاد واسه این سیستم یه پلاگین بسازه اینجا اگر اون یه کلاس فرزند از کلاس ما بسازه میتونه تابع ما رو هم override کنه اما دیگه نمیتونه به کلاس اصلی دسترسی داشته باشه چون خیلیا دارن از این سیستم استفاده میکنن. این وظیفه ماست که اینها رو کنترل کنیم.

پاسخ
#7
Note 
SOFTAFZAR@ :73:
ممنون از توضیح کاملتون

پاسخ
#8
Note 
نقل قول: از کلمه کلیدی final استفاده کنید. میتونید هم یک کلاس و هم یک متد رو Final کنید.
یه سوال برام پیش اومد ، بعد اگر کلاس رو final کنیم متدهای اونم بطور خودکار final میشن یا باید اونا رو هم final کنیم؟

پاسخ
#9
Note 
نقل قول: یه سوال برام پیش اومد ، بعد اگر کلاس رو final کنیم متدهای اونم بطور خودکار final میشن یا باید اونا رو هم final کنیم؟
وقتی کلاس رو final میکنید دیگه نمیتونید کلاس فرزند برای اون بسازید و دیگه نمیتونید متدی بنویسید تا متد والد رو override کنه، در نتیجه دیگه final کردن متدهای داخل کلاس بی معنیه.

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note برنامه نویسی شی گرا در php pHp king 3 479 17-05-2014 ساعت 20:34
آخرین ارسال: pHp king
Note یه فونت خوب برای برنامه نویسی IranPhp 3 444 10-05-2014 ساعت 17:52
آخرین ارسال: حسام
Note پیشنهاد منبع برای class نویسی mahbobe.prog 1 363 08-04-2014 ساعت 22:23
آخرین ارسال: Daniel
Note CMS نویسی بر پایه MVC REza mAX 1 486 21-07-2013 ساعت 17:37
آخرین ارسال: PHP.sec
Note چند نکته مهم در برنامه نویسی PHP Behnam Designer 2 580 14-07-2013 ساعت 15:21
آخرین ارسال: <Script>

کاربرانِ درحال بازدید از این موضوع:   1 مهمان