2010-11-03 6 views
13

मैं एक मौजूदा PHP प्रोजेक्ट ले रहा हूं। मैंने देखा कि पिछला डेवलपर पूरी साइट के लिए एक index.php पृष्ठ का उपयोग करता है, वर्तमान में 10+ पेज। यह दूसरी परियोजना है जिसे मैंने ऐसा देखा है। मुझे इस दृष्टिकोण के साथ लाभ नहीं दिख रहा है। वास्तव में ऐसा लगता है कि यह सबकुछ जटिल करता है क्योंकि अब आप साइट पर एक नया पृष्ठ नहीं जोड़ सकते हैं और उससे लिंक कर सकते हैं। आपको यह भी सुनिश्चित करना होगा कि यदि आप उस पृष्ठ प्रकार की जांच करने के लिए किसी पृष्ठ के साथ मुख्य अनुक्रमणिका पृष्ठ अपडेट करते हैं और फिर पृष्ठ लोड करते हैं। ऐसा लगता है कि वे सिर्फ एक टेम्पलेट का पुन: उपयोग करने का प्रयास कर रहे हैं, केवल हेडर और पाद लेख के लिए उपयोग करना आसान होगा और फिर संदर्भित उन फ़ाइलों के साथ प्रत्येक नया पृष्ठ बनाएं।संपूर्ण साइट के लिए एक index.php पृष्ठ का उपयोग क्यों करें?

क्या कोई यह समझा सकता है कि इस दृष्टिकोण का उपयोग क्यों किया जाएगा? क्या यह एक एमवीसी पैटर्न का कुछ रूप है जिसे मैं परिचित नहीं हूं? PHP एक दूसरी भाषा है इसलिए मैं सर्वोत्तम प्रथाओं से परिचित नहीं हूं।

मैंने Google में "PHP के साथ एक इंडेक्स पेज" और ऐसी चीजों के लिए Google में कुछ खोज करने का प्रयास किया है, लेकिन मुझे कोई अच्छा लेख नहीं मिल रहा है कि यह दृष्टिकोण क्यों उपयोग किया जा रहा है। मैं वास्तव में इस पुराने सामान को कब्र पर लात मारना चाहता हूं और उस पथ को जारी नहीं रखना चाहता हूं लेकिन सुझाव देने से पहले मुझे कुछ ठोस तर्क देना है।

+0

http://stackoverflow.com/questions/604046/having-a-single-entry-point-to-a-website-bad-good-non-issue – zerkms

+0

@zerkms इसी तरह के बिंदु के लिए धन्यवाद लेख। मुझे कुछ भी ढूंढने में मुश्किल हो रही थी जैसे मैं ढूंढ रहा था। मैं इस पर एक नज़र डालूँगा। – spinon

+0

'php front controller' शायद अधिक परिणाम लाएगा। एसईओ-फ्रेंडली लिंक्स मेरी राय में मुख्य कारण है –

उत्तर

16

एक फ्रंट कंट्रोलर (index.php) यह सुनिश्चित करता है कि पूरी साइट (उदा। प्रमाणीकरण) के लिए सामान्य सब कुछ हमेशा सही ढंग से संभाला जाता है, भले ही आप किस पृष्ठ का अनुरोध करते हैं। यदि आपके पास जगह पर बिखरे हुए 50 अलग-अलग PHP फ़ाइलें हैं, तो इसे प्रबंधित करना मुश्किल है। और क्या होगा यदि आप ऑर्डर को बदलने का फैसला करते हैं जिसमें सामान्य लाइब्रेरी फाइलें लोड हो जाती हैं? यदि आपके पास सिर्फ एक फ़ाइल है, तो आप इसे एक ही स्थान पर बदल सकते हैं। यदि आपके पास 50 अलग-अलग प्रवेश बिंदु हैं, तो आपको उन सभी को बदलने की आवश्यकता है।

कोई कह सकता है कि सभी सामान्य सामान लोड करना हर समय संसाधनों का अपशिष्ट है और आपको केवल इस विशेष पृष्ठ के लिए आवश्यक फ़ाइलों को लोड करना चाहिए। सच। लेकिन आज के PHP ढांचे ओओपी और ऑटोलोडिंग का भारी उपयोग करते हैं, इसलिए यह "अपशिष्ट" अब मौजूद नहीं है।

एक फ्रंट नियंत्रक भी आपके साइट पर सुंदर यूआरएल रखना बहुत आसान बनाता है, क्योंकि आप जो भी यूआरएल महसूस करते हैं उसका उपयोग करने के लिए बिल्कुल स्वतंत्र हैं और आपको जो भी नियंत्रक/विधि चाहिए उसे भेज दें।अन्यथा आप .php में समाप्त होने वाले प्रत्येक यूआरएल के साथ फंस गए हैं, इसके बाद क्वेरी स्ट्रिंग्स की बदसूरत सूची है, और इससे बचने का एकमात्र तरीका है .htaccess फ़ाइल में भी यूग्लियर रीराइट नियमों का उपयोग करना। यहां तक ​​कि वर्डप्रेस, जिसमें कई अलग-अलग प्रवेश बिंदु (विशेष रूप से व्यवस्थापक अनुभाग में) हैं, इंडेक्स.एफ़पी के माध्यम से जाने के लिए सबसे आम अनुरोधों को मजबूर करते हैं ताकि आपके पास लचीला परमालिंक प्रारूप हो।

अन्य भाषाओं में लगभग सभी वेब ढांचे प्रवेश के एकल बिंदुओं का उपयोग करते हैं - या अधिक सटीक रूप से, एक स्क्रिप्ट को बूटस्ट्रैप करने के लिए बुलाया जाता है जो तब वेब सर्वर के साथ संचार करता है। Django इस तरह काम करता है। चेरीपी इस तरह काम करता है। पाइथन में ऐसा करने के लिए यह बहुत स्वाभाविक है। एकमात्र व्यापक रूप से उपयोग की जाने वाली भाषा जो वेब अनुप्रयोगों को किसी अन्य तरीके से लिखने की अनुमति देती है (जब पुराने शैली की सीजीआई स्क्रिप्ट के रूप में उपयोग की जाती है) PHP है। PHP में, आप किसी भी फ़ाइल को .php एक्सटेंशन दे सकते हैं और इसे वेब सर्वर द्वारा निष्पादित किया जाएगा। यह बहुत शक्तिशाली है, और यह PHP को सीखना आसान बनाता है। लेकिन एक बार जब आप जटिलता के एक निश्चित स्तर से पहले जाते हैं, तो सिंगल पॉइंट ऑफ एंट्री दृष्टिकोण बहुत अधिक आकर्षक दिखने लगता है।

+0

धन्यवाद। मैं इसमें कुछ मूल्य देख सकता हूं और मुझे लगता है कि यह संभवतः कार्यान्वयन का अधिक है जो यहां किया गया था जो मुझे परेशान कर रहा है। – spinon

-1

आमतौर पर ऐसे दृष्टिकोण उपयोग किए जाते हैं जब पृष्ठों की सामग्री डेटाबेस सामग्री द्वारा निर्धारित की जाती है। इस प्रकार सभी काम एक ही फाइल में किए जाएंगे। यह अक्सर सीएमएस सिस्टम में देखा जाता है।

+0

हाँ मैं इसे देख सकता था। लेकिन इन सभी में अलग-अलग सामग्री पृष्ठ हैं जो इंडेक्स पेज में अगर खंड के साथ लोड होते हैं। बस एक पृष्ठ को सभी अनुरोधों को पुनर्निर्देशित करने में मूल्य नहीं देख सकता है। मेरा मतलब है कि यह एक टेम्पलेट का पुन: उपयोग करता है लेकिन इसे आसानी से शामिल किया जा सकता है। – spinon

0

ठीक है, अगर केवल एक चीज है कि बदलता है यूआरएल है, ऐसा लगता है कि यह सौंदर्य प्रयोजनों के अलावा किसी भी कारण से किया है प्रतीत नहीं होता ...

+0

यकीन नहीं है कि मैं पालन करता हूं। पेज सभी बदलते हैं क्योंकि प्रत्येक के पास एक php पेज होता है जिसे बनाया जा रहा है। यह सिर्फ इंडेक्स पेज में लोड किया जा रहा है, इसलिए यूआरएल वही रहता है और केवल पैरामीटर बदलते हैं। – spinon

+0

मतलब "सौंदर्यपूर्ण रूप से प्रसन्न" 'mysite.com/? पृष्ठ = के बारे में 'बनाम' mysite.com/about.php' – JustcallmeDrago

0

मेरे लिए - एकल प्रविष्टि केंद्र आप बेहतर करने के लिए मदद कर सकते हैं आपके आवेदन का नियंत्रण: यह आसानी से त्रुटियों को संभालने में मदद करता है, मार्ग अनुरोध, डीबग एप्लिकेशन।

+0

क्यों एक फ़ाइल के माध्यम से रूट अनुरोध? वेब सर्वर पहले से ही अलग-अलग पृष्ठों पर अनुरोध रूट करेगा। आमतौर पर त्रुटियों को अलग-अलग PHP पृष्ठों द्वारा नियंत्रित किया जाएगा जिसमें सामग्री होती है। वास्तव में यहां बड़ा मूल्य नहीं देख रहा है। – spinon

+0

@spinon: यह मेरे लिए कम से कम महत्वपूर्ण है ;-) इस तरह मैं अपने 7+ वर्षों के अनुभव के आधार पर अनुप्रयोगों को विकसित करना चाहता हूं ;-) – zerkms

+0

@spinon: मान लीजिए कि पेज पीढ़ी के दौरान आपका डेटाबेस गिर रहा है। तो आपको अपने अलग पृष्ठ के बीच में अपवाद मिलता है। आप इस अपवाद को कहां पकड़ेंगे? ;-) – zerkms

0

एक एकल "index.php" यह सुनिश्चित करने का एक आसान तरीका है कि आपके आवेदन के सभी अनुरोध उसी गेट के माध्यम से बहते हैं। इस तरह जब आप एक दूसरा पृष्ठ जोड़ते हैं तो आपको यह सुनिश्चित करने की ज़रूरत नहीं है कि बूटस्ट्रैपिंग, प्रमाणीकरण, प्रमाणीकरण, लॉगिंग इत्यादि सभी कॉन्फ़िगर किए गए हैं - आप इसे ढांचे की योग्यता से मुक्त कर सकते हैं।

आधुनिक वेब ढांचे में यह एक फ्रंट कंट्रोलर का उपयोग कर सकता है लेकिन यह कहना असंभव है क्योंकि बहुत से PHP कोड/डेवलपर्स एनआईएच सिंड्रोम से पीड़ित हैं।

+0

लेकिन क्या आप इसे एक ही फ़ाइल में शामिल नहीं कर सकते हैं और फिर वही कार्यक्षमता है। लेकिन यह एक कस्टम कार्यान्वयन है और ढांचा नहीं है। – spinon

+0

हाँ, आप कर सकते हैं, लेकिन अगर आप भूल जाते हैं तो आप बड़ी परेशानी के लिए हो सकते हैं। मैं आपकी साइट के संदर्भ या इसके बारे में कुछ भी नहीं जानता। मैं विभिन्न साइटों पर काम करने के अनुभवों के आधार पर जवाब दे रहा हूं। गहराई से जवाब के लिए –

1

सार्वजनिक निर्देशिका में एक index.php फ़ाइल होने से भी php दुभाषिया के नीचे जाने के मामले में सुरक्षा हो सकती है। दस्तावेज़ फ्रेम के बाहर बूटस्ट्रैप फ़ाइल को शामिल करने के लिए कई ढांचे index.php फ़ाइल का उपयोग करते हैं। यदि ऐसा होता है, तो उपयोगकर्ता संपूर्ण कोडबेस के बजाय इस एकल फ़ाइल का अपना स्रोत कोड देख पाएगा।

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