আপনি যখন selfকোনও শ্রেণীর সদস্যকে উল্লেখ করতে ব্যবহার করেন, আপনি যে শ্রেণীর মধ্যে কীওয়ার্ডটি ব্যবহার করেন সেটির দিকে আপনি উল্লেখ করছেন। এই ক্ষেত্রে, আপনার Fooশ্রেণি কল করা একটি সুরক্ষিত স্থির সম্পত্তি সংজ্ঞা দেয় $bar। আপনি শ্রেণিটি যখন সম্পত্তিটি উল্লেখ করতে ব্যবহার selfকরেন Fooআপনি একই ক্লাসটি উল্লেখ করছেন।
অতএব আপনি যদি self::$barনিজের Fooশ্রেণিতে অন্য কোথাও ব্যবহার করার চেষ্টা করে Barথাকেন তবে সম্পত্তির জন্য আলাদা মান সহ আপনার একটি শ্রেণি থাকে তবে এটি Foo::$barপরিবর্তে ব্যবহার করবে Bar::$bar, যা আপনার উদ্দেশ্য হতে পারে না:
class Foo
{
protected static $bar = 1234;
}
class Bar extends Foo
{
protected static $bar = 4321;
}
আপনি যখন কোনও পদ্ধতির মাধ্যমে কল করবেনstatic , আপনি দেরী স্ট্যাটিক বাইন্ডিংস (পিএইচপি 5.3 তে প্রবর্তিত) নামক কোনও বৈশিষ্ট্যটি আহ্বান করছেন ।
উপরের দৃশ্যে, ব্যবহারের selfফলাফল হবে Foo::$bar(1234)। এবং ব্যবহারের staticফলে Bar::$bar(4321) ফলাফল আসবে কারণ এর সাথে static, দোভাষী দের Barসময়কালীন ক্লাসের মধ্যে পুনঃনির্ধারণ বিবেচনা করে ।
আপনি প্রায়শই সাবক্লাসে বৈশিষ্ট্য পুনর্বিবেচনা করেন না বলে বৈশিষ্ট্যগুলির চেয়ে আপনি সাধারণত পদ্ধতিগুলির জন্য এমনকি ক্লাসের জন্যও দেরী স্ট্যাটিক বাইন্ডিং ব্যবহার করেন; staticদেরীতে আবদ্ধ নির্মাণকারীকে অনুরোধ করার জন্য কীওয়ার্ডটি ব্যবহারের একটি উদাহরণ এই সম্পর্কিত প্রশ্নে পাওয়া যাবে: নতুন স্ব বনাম নতুন স্ট্যাটিক
যাইহোক, এটি staticপাশাপাশি বৈশিষ্ট্যগুলি ব্যবহার করেও বিরত থাকে না ।