নিম্নলিখিত কোডটি বিবেচনা করুন, যেখানে আমি অতীতে কয়েকবার সত্যিকারের জন্য বাস্তবায়িত একটি জাগতিক প্রোগ্রামিং ত্রুটির কারণে সেটারটি ইচ্ছাকৃতভাবে ভাঙা হয়েছিল:
<?php
class TestClass {
private $testField;
function setField($newVal) {
$testField = $newVal;
// deliberately broken; should be `$this->testField = $newVal`
}
function getField() {
return $this->testField;
}
}
$testInstance = new TestClass();
$testInstance->setField("Hello world!");
// Actually prints nothing; getField() returns null
echo $testInstance->getField();
?>
আমি $testField
ক্লাসের শীর্ষে যে সত্য ঘোষণা করেছি তা আমার থেকে প্রোগ্রামিং ত্রুটিটি গোপন করতে সহায়তা করে। যদি আমি ক্ষেত্রটি ঘোষণা না করে থাকি, তবে আমি এই স্ক্রিপ্টটি কল করার সময় আমার ত্রুটি লগতে মুদ্রিত নীচের সতর্কতার সাথে অনুরূপ কিছু পেয়ে যাব, যা আমার ডিবাগিংয়ে সহায়তা করার জন্য সম্ভাব্য মূল্যবান হতে পারে - বিশেষত যদি আমি এইরকম কোনও ত্রুটি করতাম একটি বৃহত এবং জটিল বাস্তব-বিশ্বের অ্যাপ্লিকেশন:
পিএইচপি বিজ্ঞপ্তি: অপরিশোধিত সম্পত্তি: টেস্টক্লাস :: 13 টেস্টফিল্ড /var/www/test.php লাইনে 13
ঘোষণার সাথে, কোনও সতর্কতা নেই।
সম্ভবত আমি কিছু মিস করছি, তবে আমি পিএইচপি-তে শ্রেণিবদ্ধ ক্ষেত্রগুলি ঘোষণার জন্য কেবল দুটি কারণ সম্পর্কে সচেতন: প্রথমত, যে ঘোষণাগুলি ডকুমেন্টেশন হিসাবে কাজ করে, এবং দ্বিতীয়ত, ঘোষণা ছাড়াই যে কেউ private
আর protected
অ্যাক্সেস মডিফায়ার ব্যবহার করতে পারে না , যা তর্কযোগ্যভাবে দরকারী। যেহেতু পরবর্তী যুক্তি পাবলিক ফিল্ডগুলির ক্ষেত্রে প্রযোজ্য নয় - কোনও বস্তুর অঘোষিত ক্ষেত্রটি নির্ধারণ করা এটি সর্বজনীন করে তোলে - মনে হয় আমার কমপক্ষে আমার সমস্ত প্রকাশ্য ক্ষেত্রের ঘোষণাগুলি মন্তব্য করা উচিত। মন্তব্যগুলি ঠিক একই ডকুমেন্টেশন মান প্রদান করবে, তবে আমি যদি একটি অবিশ্রুত ক্ষেত্র পড়ার চেষ্টা করি তবে আমি সতর্কতা থেকে উপকৃত হব।
আরও চিন্তাভাবনা করার পরে, যদিও সেখানে থামার কোনও অর্থ হয় না বলে মনে হয়। যেহেতু আমার অভিজ্ঞতায় একটি অবিচ্ছিন্ন ক্ষেত্রটি পড়ার চেষ্টা করা কোনও ব্যক্তিগত বা সুরক্ষিত ক্ষেত্রকে অনুপযুক্তভাবে পড়া বা সংশোধন করার চেষ্টা করার চেয়ে ত্রুটির অনেক বেশি সাধারণ কারণ (আমি আমার সংক্ষিপ্ত প্রোগ্রামিং ক্যারিয়ারে ইতিমধ্যে বেশ কয়েকবার এরকম করেছি, তবে এর পরে কখনও হয়নি) ), এটি আমার কাছে সমস্ত ক্ষেত্রের ঘোষণাপত্রের মত মন্তব্য করার মত দেখাচ্ছে - কেবল সর্বজনীন নয় - সেরা অনুশীলন হবে।
আমাকে দ্বিধাগ্রস্থ করে তোলে তা হ'ল আমি অন্য কাউকে কখনও তাদের কোডে এটি করতে দেখিনি। কেন না? শ্রেণিকক্ষেত্র ঘোষণার কোনও সুবিধা আছে যা সম্পর্কে আমি অবগত নই? বা ক্ষেত্রের ঘোষণার আচরণের পরিবর্তন করতে আমি কোনওভাবে পিএইচপি এর কনফিগারেশনটি সংশোধন করতে পারি যাতে আমি আসল ক্ষেত্রের ঘোষণাগুলি ব্যবহার করতে পারি এবং এখনও "অপরিজ্ঞাত সম্পত্তি" সতর্কতা থেকে উপকৃত হতে পারি? বা আমার বিশ্লেষণে আমি বাদ পড়েছি এমন আরও কিছু আছে?
TRUE === $variable
নিজেকে তুলনার পরিবর্তে ঘটনাক্রমে বরাদ্দ দেওয়া থেকে বিরত রাখার মতো কাজ ।