मैं वर्तमान में एक पुस्तकालय का प्रबंधन करता हूं जिसमें बहुत अधिक सार्वजनिक उपयोग होता है, और मेरे पास शब्दार्थ संस्करण के बारे में एक प्रश्न था । मैं लाइब्रेरी के एक महत्वपूर्ण भाग को फिर से जोड़ना चाहता हूं जो गलत तरीके से लागू किया गया है - और हमेशा गलत तरीके से लागू किया गया है। लेकिन ऐसा करने का मतलब सार्वजनिक एपीआई में बदलाव होगा, जो एक बड़ा फैसला है।
जो परिवर्तन मैं करना चाहता हूं, वह घूमता है कि कैसे पुनरावृत्तियों का उपयोग किया जाता है। वर्तमान में, उपयोगकर्ताओं को यह करना होगा:
while ($element = $iterator->next()) {
// ...
}
जो गलत है, कम से कम PHP के मूल Iterator इंटरफ़ेस में । मैं इसके साथ प्रतिस्थापित करना चाहता हूं:
while ($iterator->valid()) {
$element = $iterator->current();
// ...
$iterator->next();
}
जो अनुरूप है:
foreach ($iterator as $element) {
// ...
}
अगर आप टॉम के गाइड को सिमेंटिक वर्जनिंग के रूप में देखते हैं, तो वह स्पष्ट रूप से कहता है कि सार्वजनिक एपीआई (यानी जो पिछड़े संगत नहीं हैं) में कोई भी बदलाव , एक बड़ी रिलीज को सही ठहराना चाहिए। तो पुस्तकालय 1.7.3 से 2.0.0 तक उछल जाएगा, जो मेरे लिए, एक कदम बहुत दूर है। हम केवल एक सुविधा को ठीक करने की बात कर रहे हैं।
मेरे पास अंततः 2.0.0 जारी करने की योजना है, लेकिन मुझे लगा कि यह तब था जब आपने पुस्तकालय को पूरी तरह से फिर से लिखा था और कई सार्वजनिक एपीआई परिवर्तन लागू किए थे। क्या इस रिफैक्टिंग वॉरंट की शुरुआत एक बड़े संस्करण को रिलीज़ करती है? मैं वास्तव में यह नहीं देख सकता कि यह कैसे होता है - मैं इसे 1.8.0 या 1.7.4 के रूप में जारी करने में अधिक सहज महसूस करता हूं। किसी को कुछ सलाह है?
next()
वर्तमान तत्व को पुनः प्राप्त करने और आंतरिक पॉइंटर को आगे बढ़ाने के लिए विधि का उपयोग किया जाता है। क्या गलत है। next()
सूचक को ले जाना चाहिए, और current()
पुनः प्राप्त करने के लिए उपयोग किया जाता है ...
next()
केवल उस पॉइंटर के रिटर्न वैल्यू की परवाह नहीं करनी चाहिए , जो वास्तव में संगतता को नहीं तोड़ता है