فرهاد
فرهاد
خواندن ۱ دقیقه·۱ سال پیش

فرق self با static یا late static binding در php

binding
binding


کلاس زیر را در نظر بگیرید:

متغیر x آبجکتی از کلاس Foo است
متغیر x آبجکتی از کلاس Foo است


زمانی که شما از new self داخل فانکشن کلاسی (class's member function) استفاده می کنید، یک نمونه از آن کلاس را دریافت خواهید کرد. حتی اگر ارث بری داشته باشید و با کلاس فرزند (derived class) آن را فراخوانی کنید.

متغیر z آبجکتی از کلاس Foo است در حالی که انتظار داشتیم از نوع Bar باشد
متغیر z آبجکتی از کلاس Foo است در حالی که انتظار داشتیم از نوع Bar باشد


در مثال بالا اگر بخواهیم متغیری از نوع کلاس Bar داشته باشیم باید به‌جای کلمه کلیدی self از کلمه static استفاده کنیم.

متغیر wow آبجکتی از کلاس Bar است
متغیر wow آبجکتی از کلاس Bar است


این حالت در php توسط ویژگی به نام late static binding امکان می پذیرد.

برنامه نویسیphpشی گراییoop
علاقه‌مند به مهندسی نرم افزار، هوش مصنوعی و موسیقی
شاید از این پست‌ها خوشتان بیاید