PHP 8.5 Pipe Operator vs Laravel Collections
PHP 8.5 pipe operator-ஐ அறிமுகப்படுத்தியது. பெரும்பாலான Laravel டெவலப்பர்கள் அதைத் தவிர்த்துவிட்டனர். நாம் பல ஆண்டுகளாக collect()->filter()->map() என்பதைப் பயன்படுத்தி வருகிறோம். அது சிறப்பாகச் செயல்படுகிறது.
பிறகு Spatie Piper-ஐ வெளியிட்டது. இது pipe operator-க்கு Laravel பாணி helpers-களைக் கொண்டு வரும் ஒரு library ஆகும். இது arrays மற்றும் strings-களுக்கான தனித்த functions-களைப் பயன்படுத்துகிறது.
Piper என்பது Collections-க்கு மாற்றமா? இல்லை. இது ஒரு வேறுபட்ட நோக்கத்திற்காகப் பயன்படுகிறது.
Piper எங்கே சிறந்து விளங்குகிறது
• இயல்பான மதிப்புகள் (Native values). Collections உங்கள் தரவை ஒரு object-க்குள் சுருக்குகிறது (wrap). நீங்கள் arrays-களை collections-களாகவும், மீண்டும் பழைய நிலைக்கு மாற்றவும் வேண்டியிருக்கும். Piper சாதாரண arrays மற்றும் strings-களுடன் வேலை செய்கிறது. தரவு native வடிவிலேயே உள்ளே செல்கிறது மற்றும் வெளியே வருகிறது.
• செயல்பாடுகளைக் கலத்தல் (Mixing functions). ஒரு Collection chain என்பது Collection class-ல் உள்ள methods-களை மட்டுமே அழைக்கும். ஒரு pipe chain எந்தவொரு function-ஐயும் ஏற்கும். நீங்கள் Piper helpers, native PHP functions மற்றும் உங்கள் சொந்த custom functions ஆகியவற்றை ஒரே ஓட்டத்தில் (flow) கலந்து பயன்படுத்தலாம்.
• கூடுதல் சார்புகள் இல்லாமை (Zero dependencies). Piper-க்கு Laravel framework தேவையில்லை. இது அதிகப்படியான dependencies இல்லாமல் சுத்தமான குறியீட்டை (clean code) விரும்பும் package authors-களுக்கு மிகவும் பொருத்தமானது.
Collections எங்கே சிறந்து விளங்குகிறது
• அம்சங்களின் ஆழம் (Feature depth). Collections-ல் groupBy() மற்றும் pluck() போன்ற 100-க்கும் மேற்பட்ட methods உள்ளன. Piper-ல் மிகவும் பொதுவானவை மட்டுமே உள்ளன.
• சோம்பேறி மதிப்பீடு (Lazy evaluation). LazyCollections குறைந்த நினைவகத்துடன் (low memory) மிகப்பெரிய தரவுத் தொகுப்புகளை (massive datasets) கையாளும். Piper ஒவ்வொரு படிநிலையிலும் ஒரு புதிய array-ஐ உருவாக்குகிறது. இது பெரிய தரவுகளுடன் உங்கள் app-ன் வேகத்தைக் குறைக்கலாம்.
• சூழல் பொருத்தம் (Ecosystem fit). Eloquent Collections-களைத் திருப்பித் தருகிறது. Query builders Collections-களைத் திருப்பித் தருகின்றன. Piper-ஐப் பயன்படுத்துவதற்காக framework-உடன் போராடுவது பெரும்பாலும் கூடுதல் வேலையைத்தான் உருவாக்கும்.
• கண்டறியும் தன்மை (Discoverability). ஒரு Collection-க்கு அடுத்து நீங்கள் dash (-) தட்டச்சு செய்யும்போது, உங்கள் IDE அனைத்து methods-களையும் காட்டும். Piper-ல், நீங்கள் ஒவ்வொரு function-ஐயும் கைமுறையாக (manually) import செய்ய வேண்டும்.
முக்கிய சவால்
நீங்கள் PHP 8.5-ஐப் பயன்படுத்த வேண்டும். பெரும்பாலான production servers இன்னும் 8.2 அல்லது 8.4-லேயே இயங்குகின்றன. நீங்கள் 8.5-ல் இல்லையென்றால், Piper தற்போது
