আমি বর্তমানে একটি লাইব্রেরি পরিচালনা করি যার প্রচুর সার্বজনীন ব্যবহার রয়েছে এবং আমার কাছে শব্দার্থিক সংস্করণ সম্পর্কে একটি প্রশ্ন ছিল । আমি লাইব্রেরির একটি মোটামুটি গুরুত্বপূর্ণ অংশটি রিফ্যাক্টর করতে চাই যা ভুলভাবে প্রয়োগ করা হয়েছে - এবং সর্বদা ভুলভাবে প্রয়োগ করা হয়েছে। তবে এটি করার অর্থ পাবলিক এপিআই-তে পরিবর্তন হওয়া উচিত, এটি একটি বড় সিদ্ধান্ত।
আমি যে পরিবর্তনটি করতে চাই তা পুনরায় আবর্তকগুলি কীভাবে ব্যবহৃত হয় তা ঘুরিয়ে দেয়। বর্তমানে ব্যবহারকারীদের এটি করতে হবে:
while ($element = $iterator->next()) {
// ...
}
যা ভুল, কমপক্ষে পিএইচপি এর নেটিভ ইটারেটর ইন্টারফেসে । আমি এটি দিয়ে প্রতিস্থাপন করতে চাই:
while ($iterator->valid()) {
$element = $iterator->current();
// ...
$iterator->next();
}
যা অনুরূপ:
foreach ($iterator as $element) {
// ...
}
আপনি শব্দার্থিক সংস্করণ টম নির্দেশিকা তাকান তাহলে তিনি পরিষ্কারভাবে বলে যে, প্রকাশ্য এপিআই কোনো পরিবর্তন (যেমন যারা যা হয় না অনগ্রসর সামঞ্জস্যপূর্ণ), একটি প্রধান রিলিজ ন্যায্যতা প্রতিপাদন করা উচিত নয়। সুতরাং গ্রন্থাগারটি ১.7.৩ থেকে ২.০.০ এ উঠবে যা আমার পক্ষে খুব দূরে এক ধাপ। আমরা কেবলমাত্র একটি বৈশিষ্ট্য স্থির হওয়ার বিষয়ে কথা বলছি।
আমার শেষ পর্যন্ত ২.০.০ প্রকাশ করার পরিকল্পনা আছে তবে আমি ভেবেছিলাম এটি তখন ছিল যখন আপনি গ্রন্থাগারটি পুরোপুরি নতুন করে লিখেছেন এবং অসংখ্য পাবলিক এপিআই পরিবর্তনগুলি প্রয়োগ করেছেন । এই রিফ্যাক্টরিংয়ের ভূমিকাটি কি কোনও বড় সংস্করণ প্রকাশের ওয়ারেন্ট দেয়? আমি এটি সত্যিই দেখতে পারি না - আমি এটি 1.8.0 বা 1.7.4 হিসাবে প্রকাশ করতে আরও স্বাচ্ছন্দ্য বোধ করি। কারও কি কিছু পরামর্শ আছে?
next()
পদ্ধতিটি বর্তমান উপাদানটি পুনরুদ্ধার করতে এবং অভ্যন্তরীণ পয়েন্টারটিকে এগিয়ে নিয়ে যেতে ব্যবহৃত হয়। যা ভুল। next()
পয়েন্টারটি সরানো উচিত এবং current()
এটি পুনরুদ্ধার করতে ব্যবহৃত হয় ...
next()
কেবলমাত্র পয়েন্টারটি সরিয়ে দেয় তার মূল্যের মূল্য সম্পর্কে চিন্তা করা উচিত নয় , এটি সত্যিই সামঞ্জস্যতা ভঙ্গ করে না