OOP

Static keyword

পিএইচপি স্ট্যাটিক ভ্যারিয়েবল

স্ট্যাটিক(static) পিএইচপি তে একটা রিসার্ভড কিওয়ার্ড। এটার প্রধান সুবিধা/ব্যবহার হচ্ছে ক্লাসের কোন প্রোপার্টি বা মেথড ঐ ক্লাস ইন্সট্যানসিয়েশন করা ছাড়াই এক্সেস করা যায় (ইন্সট্যানসিয়েশন এর ধারনা পাওয়া যাবে এই পোস্টে)। একটা উদাহরন দিলে ব্যাপারটা পরিস্কার হবে। ধরা যাক অামরা ক্ল্যাশ রয়াল খেলতে বসছি 🙂 । অামাদের একটা টাওয়ারের হেল্থ 100  অার এর দিকে একটা জায়ান্ট অার একটা মিনিয়ন অাসছে অ্যাটাক করতে অাসছে। জায়ান্টের ড্যামেজ পার হিট 10 এবং মিনিয়নের 5।

অামরা চাইতেছি জায়ান্টের 1 হিট এবং মিনিয়নের 2 হিট পাওয়ার পর টাওয়ারের হেল্থ ক্যালকুলেট করতে।

তো যাই হ‌োক অামরা এরকম একটা নেইভ কোড লিখলাম। এখন প্রশ্ন হচ্ছে এটা কি অামাদের ডিসায়ারড অাউটপুট দেবে…..?

স্বাভাবিক ভাবেই বোঝা যাচ্ছে এটা ফেইল করবে কারন প্রতিবার টাওয়ার (Tower) ইন্সট্যান্স তৈরির সময় অামরা public $total কে ইনিশিয়ালাইজ করছি যার কারনে প্রতিবার ক্যালকুলেট করার সময় অামরা ইনিশিয়াল ভ্যালু 100 থেকে শুরু করছি।

তাহলে এখন যদি এমন কোন ওয়ে থাকতো যাতে ভ্যারিয়েবল $total শুধুমাত্র একবারই ইনিশিয়ালাইজ হবে এবং পরবর্তিতে শুধু ক্যালকুলেশন এর পার্টটা চলবে তাহলে অামাদের প্রবলেমটা সল্ভ হতো।

স্ট্যাটিক কিওয়ার্ডটা ঠিক সে কাজটাই করে দেবে অামাদের জন্য ।

অামাদের অাগের কোডের সাথে এই কোডের কি পার্থক্য ?

প্রথমত অামরা শুধু পাবলিক ভ্যারিয়েবলের যায়গায় পাবলিক স্ট্যাটিক ভ্যারিয়েবল ব্যবহার করেছি।

দ্বিতিয়ত ক্যালকুলেশনের রেজাল্ট রিটার্ন করার সময় static::$total এভাবে করেছি (এখানে :: হলো স্কোপ রেসোলুশন ওপারেটর)

অার ত্রিতীয়ত প্যারামিটার পাস করার সময় Tower::calcHealth() এভাবে করেছি । এই calcHealth() ফাংশনকে অামরা এভাবে যেকোন জায়গা থেকে এক্সেস করতে পারবো। এখানে লক্ষণীয় ব্যাপার হচ্ছে অামরা কিন্তু Tower ক্লাসের কোন ইন্সট্যান্স তৈরি করিনি।অার অামরা কিন্তু চাইলে $total কে Tower::$total  এভাবে এক্সেস করতে পারি।

তাহলে এখন যদি এই প্রোগ্রামটা রান করি তাহলে এরকম অাউটপুট অাসবে:

img

 

অার অামরা এরকমই চাচ্ছিলাম যে  প্রতি হিটের পর কত অবশিষ্ট থাকে এটা হিসাব করা। স্ট্যাটিক মানে অনেকটা শেয়ার করার মতো ব্যাপার। যেমন একটা বাক্সে কিছু মার্বেল অাছে এখান থেকে তুমিও নিলা কিছু অামিও কিছু নিলাম মানে বাক্সটা শেয়ার করলাম মানে একটা স্ট্যাটিক বাক্স অার কি 🙂 ।

– ধন্যবাদ।

Share this post
Be the First to comment.

Leave a Comment

Your email address will not be published. Required fields are marked *