self
এটি যে শ্রেণিতে লেখা আছে তা নির্দেশ করে।
সুতরাং, যদি আপনার getInstance পদ্ধতিটি কোনও শ্রেণীর নামে থাকে MyClass
তবে নিম্নলিখিত লাইনে:
self::$_instance = new self();
যেমনটি করবে:
self::$_instance = new MyClass();
সম্পাদনা করুন: মন্তব্য পরে আরও কয়েকটি তথ্য।
আপনার যদি দুটি ক্লাস থাকে যা একে অপরকে প্রসারিত করে, আপনার দুটি পরিস্থিতি রয়েছে:
getInstance
শিশু শ্রেণিতে সংজ্ঞায়িত করা হয়
getInstance
অভিভাবক শ্রেণিতে সংজ্ঞায়িত করা হয়
প্রথম পরিস্থিতিটি এর মতো দেখাবে (আমি সমস্ত অপ্রয়োজনীয় কোড মুছে ফেলেছি, উদাহরণস্বরূপ - একক আচরণের জন্য আপনাকে এটিকে আবার যুক্ত করতে হবে) *:
class MyParentClass {
}
class MyChildClass extends MyParentClass {
public static function getInstance() {
return new self();
}
}
$a = MyChildClass::getInstance();
var_dump($a);
এখানে, আপনি পাবেন:
object(MyChildClass)#1 (0) { }
যার অর্থ self
অর্থ MyChildClass
- অর্থাৎ যে শ্রেণিতে এটি লেখা আছে।
দ্বিতীয় অবস্থার জন্য কোডটি দেখতে এমন হবে:
class MyParentClass {
public static function getInstance() {
return new self();
}
}
class MyChildClass extends MyParentClass {
}
$a = MyChildClass::getInstance();
var_dump($a);
এবং আপনি এই ধরণের আউটপুট পেতে চাই:
object(MyParentClass)#1 (0) { }
যার অর্থ এর self
অর্থ MyParentClass
- অর্থাত এখানেও, এটি ক্লাস যেখানে এটি লেখা আছে ।
পিএইচপি <5.3 এর সাথে, "যে শ্রেণিতে এটি লেখা আছে" গুরুত্বপূর্ণ - এবং কখনও কখনও সমস্যা তৈরি করতে পারে।
এই কারণেই পিএইচপি 5.3 static
কীওয়ার্ডের জন্য একটি নতুন ব্যবহারের প্রবর্তন করে : এটি এখন যেখানে আমরা self
সেই উদাহরণগুলিতে ব্যবহার করেছি ঠিক সেখানে ব্যবহার করা যেতে পারে :
class MyParentClass {
public static function getInstance() {
return new static();
}
}
class MyChildClass extends MyParentClass {
}
$a = MyChildClass::getInstance();
var_dump($a);
তবে এর static
পরিবর্তে self
, আপনি এখন পাবেন:
object(MyChildClass)#1 (0) { }
যার অর্থ যে শ্রেণিটি ব্যবহৃতstatic
হয় সেই শ্রেণীর পয়েন্টগুলি (আমরা ব্যবহার করিMyChildClass::getInstance()
), এবং এতে লেখা হয় না এমন is
অবশ্যই, self
বিদ্যমান অ্যাপ্লিকেশনগুলি না ভাঙার জন্য, আচরণটি পরিবর্তন করা হয়নি - পিএইচপি 5.3 মাত্র static
কীওয়ার্ডটি পুনর্ব্যবহার করে একটি নতুন আচরণ যুক্ত করেছে ।
এবং, পিএইচপি 5.3 সম্পর্কে বলতে গিয়ে, আপনি পিএইচপি ম্যানুয়ালটির লেট স্ট্যাটিক বাইন্ডিংস পৃষ্ঠাটি একবার দেখে নিতে পারেন ।