आम तौर पर मैं रिव्यू में सभी अध्यायों का संक्षिप्त सारांश देता हूँ, लेकिन इस बार शायद ऐसा नहीं करूँगा। यहाँ मैं केवल 10 भागों का संक्षिप्त वर्णन करूँगा, प्रत्येक भाग की सभी अध्यायों को एक साथ मिलाकर एक समग्र विवरण दूँगा। अंत में, मैं इस पुस्तक पर अपनी राय दूँगा और इसके फायदे और नुकसान को उजागर करने की कोशिश करूँगा।
वेब प्रोग्रामिंग की बुनियाद
असल में, यह किताब सिर्फ PHP के बारे में नहीं है, बल्कि वेब और इंटरनेट के बारे में भी है। सिद्धांत रूप से, PHP को इंटरनेट के बिना कल्पना करना मुश्किल है — जैसे कि डेस्कटॉप एप्लिकेशन, मोबाइल ऐप या OS के लिए ड्राइवर के रूप में। इसलिए, लेखक शुरुआत से ही मूलभूत बातें समझाते हैं। उदाहरण के लिए, इसमें TCP/IP, सर्वर, प्रदाता, होस्टिंग, HTML दस्तावेज़, पोर्ट आदि जैसे शब्दों की व्याख्या की गई है। GET और POST मेथड्स के साथ काम करने की प्रक्रिया समझाई गई है, HTML (मुख्यतः फॉर्म्स), CGI और PHP के अंतर्निहित वेब सर्वर से परिचय कराया गया है।
PHP भाषा की मूल बातें
यह अनुभाग 8 अध्यायों से बना है और पूरी तरह से भाषा की मूल अवधारणाओं को समर्पित है। जो लोग किताबों के माध्यम से प्रोग्रामिंग सीखते हैं, उनके लिए यह परिचित विषय होंगे: वेरिएबल्स, डेटा टाइप्स, ऑपरेशन्स, कंडीशनल स्टेटमेंट्स, लूप्स आदि। कुछ नया और अपरिचित — शायद फॉर्म से आए डेटा की प्रोसेसिंग और जेनरेटर्स। वैसे, फंक्शन्स को भी यहीं पर विस्तार से समझाया गया है।
PHP की स्टैंडर्ड फंक्शन्स
PHP में डेटा के विभिन्न प्रकारों के साथ काम करने के लिए बड़ी संख्या में इनबिल्ट फंक्शन्स होती हैं, जो कई तरह की जरूरतों को पूरा करती हैं। दुर्भाग्यवश, इनमें से कुछ अब स्वयं भाषा डेवलपर्स द्वारा प्रयोग में लाने की सिफारिश नहीं की जाती। फिर भी, जो लोग आधिकारिक दस्तावेज़ में नहीं जाना चाहते (हालाँकि मैं मानता हूँ कि वही प्राथमिक स्रोत है), वे लेखक द्वारा दी गई सूची देख सकते हैं। खासकर क्योंकि यहाँ सबसे अधिक प्रयुक्त और लोकप्रिय फंक्शन्स शामिल हैं। ये समूहों में बाँटे गए हैं, और प्रत्येक समूह एक अलग अध्याय है, इसलिए मैं यहाँ केवल अध्यायों के नाम सूचीबद्ध कर रहा हूँ:
- स्ट्रिंग फंक्शन्स
- एरेज़ के साथ काम
- मैथमैटिकल फंक्शन्स
- फाइल्स और डायरेक्टरीज़ के साथ काम
- फाइल परमिशन और एट्रीब्यूट्स
- बाहरी प्रोग्राम्स को चलाना
- डेट और टाइम के साथ काम
- रेगुलर एक्सप्रेशन्स की बुनियाद
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की बुनियाद
हालाँकि यह हिस्सा लगभग 100 पन्नों का है, लेकिन इसमें लंबा और उबाऊ OOP सिद्धांत नहीं है। यह मान लिया गया है कि पाठक OOP की अवधारणा से थोड़ा बहुत परिचित है। पुस्तक में OOP की शुरुआत धीरे-धीरे होती है, लेकिन पहले ही पन्नों में PHP कोड दिखाई देने लगता है। विषय वही हैं जो आमतौर पर OOP में होते हैं: ऑब्जेक्ट्स बनाना, कंस्ट्रक्टर्स, डेस्ट्रक्टर्स। वैसे, डेस्ट्रक्टर्स के संदर्भ में गार्बेज कलेक्शन और सायक्लिक रेफरेंस की चर्चा भी की गई है।
इसके बाद एक्सेस मोडिफायर्स (public, protected, private), this, self, ऑब्जेक्ट सीरियलाइज़ेशन और मैजिक मेथड्स की चर्चा है। लेखक OOP की प्रमुख अवधारणाओं — इनहेरिटेंस, पोलिमॉर्फिज्म, एन्कैप्सुलेशन — को भी नहीं छोड़ते। इंटरफेस, ट्रेट्स, एब्स्ट्रैक्ट और वर्चुअल मेथड्स भी शामिल हैं। वैसे, पिछले कुछ वर्षों में RFC के माध्यम से OOP में कई छोटे सुधार और सिंटैक्टिक शुगर जुड़े हैं, लेकिन यह संस्करण शायद इन्हें कवर नहीं करता (शायद नए संस्करणों में जोड़ दिया गया हो)। कुल मिलाकर, यह भाग अच्छी तरह से तैयार किया गया है — नेमस्पेसेस, क्लास ऑटोलोडिंग, और अंत में एरर हैंडलिंग की बात की गई है।
PHP में प्री-डिफाइन्ड क्लासेस
जब PHP में विभिन्न डेटा प्रकारों के लिए कई फंक्शन्स पहले से मौजूद हैं, तो जाहिर है कि उन्हें क्लासेस में संगठित करना सुविधाजनक होता। अगर शुरू से ऐसा होता — जैसे स्ट्रिंग्स या एरेज़ के साथ काम करने वाले फंक्शन्स के लिए — तो यह और भी उपयोगी होता (जैसे Laravel में होता है)।
PHP में कुछ अन्य कार्यक्षमताओं के लिए क्लासेस बनाई गई हैं — जैसे डेट और टाइम, इटेरेबल्स, रिफ्लेक्शन, फाइल्स और डायरेक्टरीज़ आदि।
PHP में नेटवर्किंग
यहाँ हम फिर से पुस्तक की शुरुआत की ओर लौटते हैं और PHP के ज़रिए नेटवर्किंग की बात करते हैं। HTTP हेडर सेट करना और प्राप्त करना, कुकीज़ और सेशन्स से काम करना, URL प्रोसेसिंग — ये सब PHP के ग्लोबल एरेज़ और कुछ स्टैंडर्ड फंक्शन्स से संबंधित हैं। साथ ही, सॉकेट्स और ईमेल के साथ काम करने के उदाहरण भी दिए गए हैं। अधिकांश विषयों को विस्तृत रूप से समझाया गया है (सॉकेट्स को छोड़कर)।
PHP एक्सटेंशन्स
यहाँ हम उन एक्सटेंशन्स की बात करते हैं जिन्हें हम php.ini फाइल में एक्टिवेट या डीएक्टिवेट कर सकते हैं। कुछ एक्सटेंशन्स PHP कोर का हिस्सा हैं, जबकि कुछ को अलग से इंस्टॉल और एक्टिवेट करना पड़ता है।
इस भाग में एक्सटेंशन्स को इंस्टॉल करना और विभिन्न OS में इनेबल करना समझाया गया है। php.ini की कुछ डायरेक्टिव्स का संक्षिप्त परिचय भी दिया गया है, जैसे कि मैमोरी लिमिट सेट करना।
इस भाग का एक अध्याय इनपुट डेटा की सुरक्षा और फ़िल्टरिंग पर केंद्रित है — उदाहरण के लिए, यूजर फॉर्म या URL से आए डेटा को प्रोसेस करना। रेगुलर एक्सप्रेशन्स के उदाहरण हैं, इसलिए कुछ मूल ज्ञान आवश्यक है।
इसके बाद MySQL, इमेज प्रोसेसिंग, नेटवर्किंग और Memcached के साथ काम करने के अध्याय आते हैं। डेटाबेस के लिए छोटा परिचयात्मक कोर्स शामिल है — कॉलम्स, रोज़, कीज़ और डेटा टाइप्स की जानकारी। SQL क्वेरीज और PDO एक्सटेंशन — दोनों के उदाहरण हैं (PDO को एक्सटेंशन के तहत समझाया गया है, इसलिए बुनियादी डेटाबेस ज्ञान पहले दिया गया है)।
इमेजेज के लिए GD एक्सटेंशन, नेटवर्क के लिए php-curl, और Memcached के लिए php7-memcached का उपयोग किया गया है।
लाइब्रेरीज़
कुछ अध्याय Composer (इंस्टॉलेशन और उपयोग), Packagist और थर्ड-पार्टी लाइब्रेरीज़ की खोज के बारे में हैं। अंत में, बताया गया है कि अपनी खुद की लाइब्रेरी कैसे बनाएँ ताकि दूसरे लोग उसका उपयोग कर सकें। PSR स्टैंडर्ड्स का भी परिचय दिया गया है ताकि आपकी लाइब्रेरी आम मानकों के अनुरूप हो।
PHP प्रोग्रामिंग की तकनीकें
यह एक जटिल हिस्सा है, जिसमें छोटे अध्यायों द्वारा यह दिखाया गया है कि रियल उदाहरणों से कैसे कोड लिखा जा सकता है। जैसे कि XML, फॉर्म्स (इस बार फाइल अपलोड के साथ), रीडायरेक्शन, HTML प्रोसेसिंग और अन्य असंबंधित विषय।
डिप्लॉयमेंट
यहाँ "डिप्लॉयमेंट" से आधुनिक CI/CD समाधानों की बात नहीं हो रही है। बल्कि Git की इंस्टॉलेशन, SSH से कनेक्शन, और PHP के साथ पूर्ण काम करने के लिए आवश्यक अन्य उपकरणों की बात हो रही है — जैसे डेटाबेस, वेब सर्वर और वर्चुअल मशीन की सेटअप।
निष्कर्ष
फायदे
बहुत ही विस्तृत किताब है, जिसे पढ़ना उबाऊ नहीं लगता और जिसमें ढेर सारे कोड उदाहरण दिए गए हैं। हर विषय को विस्तार से समझाया गया है। मैं कहूँगा कि यह किताब PHP की जानकारी के लिहाज़ से दूसरे स्थान पर है — पहले स्थान पर है आधिकारिक डोक्यूमेंटेशन। मेरे अनुभव में, यह सबसे विस्तृत PHP किताब है जो मैंने देखी है।
नुकसान
किताब सिर्फ बड़ी नहीं, बल्कि विशाल है। शायद बहुत से लोग अंत तक नहीं पहुँच पाएँगे। साथ ही, कुछ सामग्री पुरानी हो चुकी है (उम्मीद है कि लेखक समय-समय पर नया संस्करण प्रकाशित करते हैं)।