2008-09-15 14 views
9

यदि कोई प्रोजेक्ट मौजूद है, तो मैं केवल उत्सुक हूं कि PHP के अंतर्निर्मित कार्यों के सभी (या अधिकतर) को अधिक ऑब्जेक्ट-उन्मुख वर्ग पदानुक्रम में समूहित करने का प्रयास करता है। उदाहरण के लिए, सभी स्ट्रिंग फ़ंक्शंस को एकल स्ट्रिंग क्लास, आदि में समूहित करनाक्या किसी ने PHP के सिस्टम फ़ंक्शन को ऑब्जेक्ट-ओरिएंटेड बनाने का प्रयास किया है?

मुझे एहसास है कि यह वास्तव में किसी भी समस्या का समाधान नहीं करेगा (जब तक कि PHP स्रोत कोड स्तर पर संशोधन नहीं किए जाते), क्योंकि सभी अंतर्निर्मित कार्य अभी भी वैश्विक नामस्थान में पहुंच योग्य होंगे, लेकिन यह निश्चित रूप से उपयोगिता को अधिक आसान बना देगा।

उत्तर

4

अपने प्रश्न का उत्तर देने के लिए, हां ऐसे कई पुस्तकालय मौजूद हैं जो आप ठीक से बात करते हैं। जहां तक ​​आप उपयोग करना चाहते हैं वह एक बिल्कुल अलग सवाल है। PHPClasses और pear.org ऐसे पुस्तकालयों की तलाश शुरू करने के लिए अच्छी जगह हैं।

अद्यतन: जैसा कि अन्य ने सुझाव दिया है कि एसपीएल एक अच्छी लाइब्रेरी है और PHP कार्यों में निर्मित कई को लपेटती है। हालांकि अभी भी बहुत से php फ़ंक्शन हैं जो इसे लपेटते नहीं हैं। हमें चांदी के बुलेट के बिना अभी भी छोड़ना।

ऐसे CakePHP और ज़ेड (दूसरों के भी) के रूप में चौखटे का उपयोग कर में, मैं देखा है कि वे इस तरह के फ्रेम काम में डीबी कनेक्टिविटी के रूप में अपने स्वयं के पुस्तकालयों और निर्माण मूल बातें सम्मिलित करते हुए इन समस्याओं में से कुछ का समाधान करने का प्रयास। तो ढांचे एक और समाधान हो सकता है

5

मुझे लगता है कि ऐसा कुछ PHP के आगे बढ़ने के लिए अंतराल है। मुख्य रूप से एक नेट प्रोग्रामर होने के नाते, मुझे PHP के दर्दनाक लगता है कि यह 1 मिलियन और 1 वैश्विक कार्यों के साथ काम करता है। यह अच्छा है कि PHP 5.3 में नेमस्पेस हैं, लेकिन यह चीजों की अधिक मदद नहीं करता है जब उनके पुस्तकालय भी ऑब्जेक्ट उन्मुख नहीं होते हैं, अकेले नामस्थानों को नियोजित करते हैं। मुझे PHP को इतनी ज्यादा भाषा नहीं है, लेकिन उनकी एपीआई बहुत ही असंगठित है, और इसे शायद एक पूर्ण ओवरहाल की आवश्यकता है। जब वीबी.Net बन गया तो वीबी किस तरह से चला गया।

+1

सहमत हैं, लेकिन ... उनके दस्तावेज अद्वितीय है। –

+0

मैं निश्चित रूप से सहमत हूं, मुझे इसे PHP 6 के लिए प्राथमिकता के रूप में देखना अच्छा लगेगा। चूंकि वे अब आगामी 5 में नामस्थान समर्थन जारी कर रहे हैं।3 रिलीज, मुझे उम्मीद है कि अगला तार्किक कदम अपने मानक पुस्तकालय कार्यों को अपने नामस्थान/वर्ग विरासत में ले जाना शुरू करना है। – Wilco

+0

हम केवल उम्मीद कर सकते हैं – SeanDowney

6

रास्ता बहुत बार। जैसे ही कोई पता चलता है कि PHP में ओओ विशेषताएं हैं, वे कक्षाओं में सबकुछ लपेटना चाहते हैं।

PHP में ओओ सामान का बिंदु यह है कि आप जिस भी तरीके से अपने समाधानों को आर्किटेक्ट कर सकते हैं। लेकिन ऑब्जेक्ट्स में मौजूदा कार्यों को लपेटने से ज्यादा भुगतान नहीं होता है।

कहा जा रहा है कि PHP का कोर काफी ऑब्जेक्ट उन्मुख है। SPL पर एक नज़र डालें।

+0

एसपीएल निश्चित रूप से सही दिशा में एक कदम है। मुझे लगता है कि वैश्विक नामस्थान में इतनी कोर कार्यक्षमता होने के कारण यह बेहद गन्दा है। यह मेरे लिए हास्यास्पद लगता है कि मुझे भाषा में अंतर्निहित चीज़ों के साथ टकराव नाम देने की चिंता करनी है। – Wilco

+0

यदि आप ओओओ में अपना कोड लिखते हैं, तो शायद ही कोई चिंता हो। चूंकि कोर में किसी भी चीज़ के साथ विवाद की संभावना लगभग शून्य है। और यदि आप करते हैं, तो यह असफल हो जाएगा। मैं पूरी तरह से कहां से आ रहा हूं, जहां से आप आ रहे हैं। PHP में बस उस स्वाद नहीं है। पाइथन बेहतर विकल्प हो सकता है। –

4

मैं सहमत नहीं हूं। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग प्रक्रियात्मक प्रोग्रामिंग से स्वाभाविक रूप से बेहतर नहीं है। मेरा मानना ​​है कि आपको ओओ का उपयोग नहीं करना चाहिए जबतक कि आपको पॉलिमॉर्फिक व्यवहार (विरासत, ओवरराइडिंग विधियों आदि) की आवश्यकता नहीं है। कोड के लिए सरल कंटेनर के रूप में वस्तुओं का उपयोग ओवरहेड के लायक नहीं है। यह विशेष रूप से तारों के सत्य है क्योंकि उनका इतना उपयोग किया जाता है (उदा। सरणी कुंजी के रूप में)। प्रत्येक एप्लिकेशन आमतौर पर कुछ बहुलक विशेषताओं से लाभान्वित हो सकता है लेकिन आमतौर पर उच्च स्तर पर होता है। क्या आप कभी स्ट्रिंग क्लास का विस्तार करना चाहते हैं?

इसके अलावा, PHP के अजीब फ़ंक्शन नामकरण को समझने के लिए थोड़ा इतिहास आवश्यक है। PHP मानक सी लाइब्रेरी और POSIX मानक के आसपास ग्राउंड किया गया है और कई फ़ंक्शन नामों का उपयोग करता है (स्ट्रस्ट्र, getcwd, ldap_open, आदि)। यह वास्तव में एक अच्छी बात है क्योंकि यह भाषा बाध्यकारी कोड की मात्रा को कम करता है, यह सुनिश्चित करता है कि सुविधाओं का एक पूर्ण अच्छी तरह से सोचा गया सेट (सी में आप जो भी कर सकते हैं उसके बारे में कुछ भी कर सकते हैं) और इन सिस्टम पुस्तकालयों को अत्यधिक अनुकूलित किया गया है (उदाहरण के लिए स्ट्रैकर आमतौर पर रेखांकित होता है जो इसे लगभग 10x तेज बनाता है)।

+0

प्वाइंट अच्छी तरह से लिया गया। चाहे वह ओवरहेड के लायक है या नहीं, हालांकि संदर्भ पर भी निर्भर करेगा। हम हर समय सरलीकृत कोड के लिए प्रदर्शन का त्याग करते हैं - अन्यथा हम सभी अभी भी असेंबली में विकास कर रहे हैं। – Wilco

संबंधित मुद्दे