ฉันกำลังจัดการห้องสมุดซึ่งมีจำนวนมากของการใช้งานของประชาชนและผมมีคำถามเกี่ยวกับความหมายเวอร์ชัน ฉันต้องการ refactor หนึ่งส่วนที่สำคัญพอสมควรของห้องสมุดซึ่งถูกนำไปใช้อย่างไม่ถูกต้อง - และถูกนำไปใช้อย่างไม่ถูกต้อง แต่การทำเช่นนี้จะหมายถึงการเปลี่ยนแปลง API สาธารณะซึ่งเป็นการตัดสินใจที่สำคัญ
การเปลี่ยนแปลงที่ฉันต้องการทำให้หมุนรอบวิธีใช้ตัววนซ้ำ ขณะนี้ผู้ใช้ต้องทำสิ่งนี้:
while ($element = $iterator->next()) {
// ...
}
ซึ่งไม่ถูกต้องอย่างน้อยใน PHP พื้นเมืองอินเตอร์เฟซ Iterator ฉันต้องการแทนที่ด้วยสิ่งนี้:
while ($iterator->valid()) {
$element = $iterator->current();
// ...
$iterator->next();
}
ซึ่งคล้ายกับ:
foreach ($iterator as $element) {
// ...
}
หากคุณดูที่คู่มือของ Tom เกี่ยวกับการกำหนดเวอร์ชันแบบ semantic เขาระบุไว้อย่างชัดเจนว่าการเปลี่ยนแปลงใด ๆ กับ API สาธารณะ (เช่นสิ่งที่ไม่เข้ากันได้ย้อนหลัง) ควรแสดงให้เห็นถึงการเปิดตัวครั้งใหญ่ ดังนั้นห้องสมุดจะกระโดดจาก 1.7.3 เป็น 2.0.0 ซึ่งสำหรับฉันมันเป็นขั้นตอนที่ไกลเกินไป เรากำลังพูดถึงคุณสมบัติเพียงอย่างเดียวที่ถูกแก้ไข
ฉันจะมีแผนการที่จะปล่อยในที่สุด 2.0.0 แต่ผมคิดว่านี้คือเมื่อคุณสมบูรณ์เขียนห้องสมุดและดำเนินการต่าง ๆ นานาการเปลี่ยนแปลงประชาชน API การแนะนำของการเปลี่ยนโครงสร้างนี้รับประกันการออกรุ่นใหญ่หรือไม่? ฉันไม่สามารถเห็นได้ว่ามันเป็นอย่างไร - ฉันรู้สึกสะดวกสบายมากขึ้นในการปล่อยเป็น 1.8.0 หรือ 1.7.4 ใครบ้างมีคำแนะนำบ้าง?
next()
วิธีการนี้ใช้เพื่อดึงองค์ประกอบปัจจุบันและย้ายตัวชี้ภายในไปข้างหน้า ซึ่งเป็นสิ่งที่ผิด next()
ควรเลื่อนตัวชี้และcurrent()
ใช้เพื่อเรียกคืน ...
next()
เพียงอย่างเดียวนั่นคือการย้ายตัวชี้สิ่งนี้ไม่ได้ทำลายความเข้ากันได้จริงๆ