PHP-তে OOP ইন্টারফেস
আপনি ইতিমধ্যেই জানেন, বিমূর্ত ক্লাসগুলি তাদের বংশধরদের জন্য পদ্ধতির একটি সেট উপস্থাপন করে। এই পদ্ধতিগুলির একটি অংশ ক্লাস নিজেই বাস্তবায়িত হতে পারে, এবং কিছু পদ্ধতি বিমূর্ত হিসাবে ঘোষণা করা যেতে পারে এবং সাবক্লাসে বাস্তবায়নের প্রয়োজন হতে পারে।
নিজেকে একটি পরিস্থিতি কল্পনা করুন যেখানে আপনার বিমূর্ত ক্লাসটি শুধুমাত্র বিমূর্ত পাবলিক পদ্ধতির একটি সেট উপস্থাপন করে, বাস্তবায়ন সহ কোনও পদ্ধতি যোগ না করে।
কার্যত আপনার প্যারেন্ট ক্লাসটি বংশধরদের ইন্টারফেস বর্ণনা করে, অর্থাৎ তাদের পাবলিক পদ্ধতির সেট, বাস্তবায়নের জন্য বাধ্যতামূলক।
আমাদের এটি কেন দরকার: প্রোগ্রামিং করার সময় কম ভুল করা - সমস্ত প্রয়োজনীয় পদ্ধতি বর্ণনা করে প্যারেন্ট ক্লাসে, আমরা নিশ্চিত হতে পারি যে সমস্ত বংশধররা সত্যিই সেগুলি বাস্তবায়ন করে।
কখন এটি সাহায্য করবে: ধরা যাক আমরা তৈরি করি আমাদের প্যারেন্ট ক্লাস এবং এর জন্য বেশ কয়েকটি সাবক্লাস। যদি পরে কিছু সময় পরে, উদাহরণস্বরূপ, এক মাস পরে, আমরা আরেকটি সাবক্লাস তৈরি করার সিদ্ধান্ত নিই, নিশ্চয়ই আমরা আমাদের কোডের বিবরণ ভুলে যাব এবং আমরা সম্পূর্ণরূপে নতুন সাবক্লাসে একটি পদ্ধতি লিখতে ভুলে যেতে পারি। যাইহোক, PHP নিজেই পদ্ধতিটি হারাতে দেবে না - এবং শুধু একটি ত্রুটি নিক্ষেপ করবে।
একই জিনিস অন্য প্রোগ্রামারের ক্ষেত্রে প্রযোজ্য, যিনি আপনার প্রকল্পের সাথে কাজ করছেন। ধরা যাক প্যারেন্ট ক্লাসের কোড আপনি লিখেছিলেন, এবং তারপর আপনার সহকর্মী আরেকটি সাবক্লাস তৈরি করার সিদ্ধান্ত নিয়েছে। আপনার সহকর্মীরও কয়েকটি পদ্ধতি হারানো সম্ভব হবে না।
যাইহোক, একটি সমস্যা আছে: কার্যত আমরা তৈরি করেছি আমাদের প্যারেন্ট ক্লাস যাতে在其中 বিমূর্ত পাবলিক পদ্ধতি লিখতে পারি, কিন্তু আমরা নিজেরাই বা আমাদের সহকর্মীর দৈবাৎ এই ক্লাসে একটি নন-পাবলিক পদ্ধতি যোগ করার সুযোগ আছে বা একটি নন-বিমূর্ত পদ্ধতি।
ধরা যাক আমরা শারীরিকভাবে করতে নিষেধ করতে চাই প্যারেন্টে অন্যান্য পদ্ধতি, বিমূর্ত পাবলিক ছাড়া। PHP-তে এই জন্য বিমূর্ত ক্লাসের পরিবর্তে ইন্টারফেস ব্যবহার করা যেতে পারে।
ইন্টারফেসগুলি এমন ক্লাসগুলিকে উপস্থাপন করে যাদের সমস্ত পদ্ধতি পাবলিক এবং যার কোনো বাস্তবায়ন নেই। পদ্ধতির কোড বাস্তবায়ন করতে হবে ইন্টারফেসের সাবক্লাসগুলি।
ইন্টারফেসগুলি একইভাবে ঘোষণা করা হয় যেমন সাধারণ
ক্লাস, কিন্তু কীওয়ার্ড interface ব্যবহার করে
শব্দ class-এর পরিবর্তে।
ইন্টারফেস থেকে ইনহেরিট করার জন্য ব্যবহৃত হয়
একটু ভিন্ন পরিভাষা: বলা হয় যে
ক্লাসগুলি ইন্টারফেস থেকে ইনহেরিট করে না, বরং বাস্তবায়ন করে
সেগুলি। সেই অনুযায়ী extends শব্দের পরিবর্তে
কীওয়ার্ড ব্যবহার করা উচিত
implements।
ইন্টারফেসের একটি অবজেক্ট তৈরি করা অসম্ভব। ইন্টারফেসের সমস্ত পদ্ধতি
হিসাবে ঘোষণা করা আবশ্যক public
এবং যার কোনো বাস্তবায়ন নেই। ইন্টারফেসের
শুধুমাত্র পদ্ধতি থাকতে পারে, বৈশিষ্ট্য নয়।
একই নাম সহ একটি ইন্টারফেস এবং একটি ক্লাসও তৈরি করা অসম্ভব।