टीम में काम करना: PHP के लिए code style और कन्वेंशन
\n\nकल्पना करें कि आप PHP पर किसी दूसरे प्रोजेक्ट में प्रवेश कर रहे हैं। आप एक फ़ाइल खोलते हैं, और उसमें टैबुलेशन स्पेस के साथ मिला हुआ है, वेरिएबल्स का नाम मनमाना रखा गया है, और कर्ली ब्रेसेस जहाँ-तहाँ हैं, लेकिन वहाँ नहीं जहाँ आप आदी हैं। परिचित लगता है? अब कल्पना करें कि ऐसी सैकड़ों फ़ाइलें हैं, और प्रत्येक को किसी दूसरे डेवलपर ने लिखा है। कोड रिव्यू और कोड रखरखाव के लिए बुरा सपना।
\n\nइस लेख में, हम चर्चा करेंगे कि क्यों code style PHP और कोड कन्वेंशन केवल सीनियर डेवलपर की सनक नहीं हैं, बल्कि प्रभावी टीम वर्क की नींव हैं। आप PSR मानकों, नेमिंग नियमों, फ़ॉर्मेटिंग के बारे में जानेंगे और वास्तविक उदाहरण प्राप्त करेंगे जिन्हें आप तुरंत अपने प्रोजेक्ट में लागू कर सकते हैं।
\n\nटीम के लिए code style क्यों महत्वपूर्ण है?
\n\nजब किसी प्रोजेक्ट में कई डेवलपर काम करते हैं, तो एक समान कोड शैली जीवनरक्षक बन जाती है। यहाँ कारण दिए गए हैं:
\n\n- \n
- पठनीयता। एक समान नियमों में लिखा गया कोड टीम के किसी भी सदस्य द्वारा आसानी से पढ़ा जा सकता है। लेखक के इरादे का अनुमान लगाने की आवश्यकता नहीं है। \n
- कोड रिव्यू की गति। यदि कोड समान रूप से स्वरूपित है, तो समीक्षक तर्क पर ध्यान केंद्रित करता है, न कि फ़ॉर्मेटिंग पर।
- कम बग। एकसमान कन्वेंशन कोड लिखने के विभिन्न दृष्टिकोणों से जुड़ी त्रुटियों की संभावना को कम करते हैं।
- आसान ऑनबोर्डिंग। एक नया डेवलपर प्रोजेक्ट में तेज़ी से शामिल होता है यदि कोड पूर्वानुमानित और संरचित हो।
मूल रूप से, PHP कोडिंग मानक वह भाषा है जिसमें पूरी टीम संवाद करती है। यह जितना अधिक एकरूप होगा, गलतफहमी उतनी ही कम होगी।
\n\nमुख्य मानक: PSR और अन्य
\n\nPHP की दुनिया में, कई प्रमुख सिफारिशें हैं जो डी-फैक्टो मानक बन गई हैं। सबसे महत्वपूर्ण हैं PSR-1 और PSR-12 (पहले PSR-2)। इन्हें PHP-FIG (Framework Interoperability Group) द्वारा समर्थित किया जाता है।
\n\nPSR-1: बुनियादी नियम
\n\nPSR-1 सबसे सामान्य नियमों का वर्णन करता है: क्लास, मेथड, कॉन्स्टेंट का नाम कैसे रखें और फ़ाइलों को कैसे व्यवस्थित करें।
\n\nमुख्य बिंदु:
\n- \n
- फ़ाइलों में केवल
<?phpया<?=(आउटपुट के लिए शॉर्ट टैग) का उपयोग होना चाहिए। \n - फ़ाइल एन्कोडिंग BOM के बिना UTF-8 होनी चाहिए।
- क्लास के नाम StudlyCaps (PascalCase) में होने चाहिए।
- मेथड के नाम camelCase में होने चाहिए।
- कॉन्स्टेंट अपर केस में अंडरस्कोर के साथ होने चाहिए (
MAX_VALUE)।
PSR-1 के अनुसार सही कोड का उदाहरण:
\n\n<?php\n\nnamespace App\\Services;\n\nclass UserService\n{\n const DEFAULT_ROLE = 'user';\n\n public function getUserById(int $id): ?User\n {\n // तर्क\n }\n\n public function isAdmin(): bool\n {\n // तर्क\n }\n}\n\nPSR-12: विस्तारित शैली नियम
\n\nPSR-12, PSR-2 का विकास है। यह फ़ॉर्मेटिंग पर अधिक विवरण जोड़ता है।
\n\nमुख्य बिंदु:
\n- \n
- इंडेंटेशन - 4 स्पेस (टैब नहीं)।
- क्लास, मेथड और नियंत्रण संरचनाओं के लिए कर्ली ब्रेसेस उसी पंक्ति पर खुलती हैं (K&R शैली)।
- कीवर्ड (
if,else,while) के बाद स्पेस अनिवार्य है। - namespace घोषणा के बाद और मेथड में return से पहले खाली पंक्ति (वैकल्पिक)।
- पंक्ति 120 वर्णों से अधिक लंबी नहीं होनी चाहिए (80 अनुशंसित है)।
PSR-12 के अनुसार सही फ़ॉर्मेटिंग का उदाहरण:
\n\n<?php\n\nnamespace App\\Controllers;\n\nuse App\\Models\\User;\nuse App\\Services\\AuthService;\n\nclass AuthController\n{\n private AuthService $authService;\n\n public function __construct(AuthService $authService)\n {\n $this->authService = $authService;\n }\n\n public function login(array $credentials): bool\n {\n if (empty($credentials['email']) || empty($credentials['password'])) {\n return false;\n