PHP

2010-06-15 22 views
5

में प्रस्तुति और व्यावसायिक तर्क का पृथक्करण मैं अपनी पहली वास्तविक PHP वेबसाइट प्रोग्रामिंग कर रहा हूं और सोच रहा हूं कि मेरे कोड को मेरे लिए और अधिक पठनीय कैसे बनाया जाए। मैं जिस संदर्भ पुस्तक का उपयोग कर रहा हूं वह PHP और MySQL वेब विकास चौथा संस्करण है।PHP

ऊपर उल्लिखित पुस्तक तर्क और सामग्री को अलग करने के लिए तीन तरीके देता है:

  • फ़ाइलों में शामिल हैं
  • समारोह या वर्ग एपीआई
  • टेम्पलेट प्रणाली

मैं इनमें से कोई चुनाव नहीं किया है फिर भी, इन अवधारणाओं के आस-पास मेरे दिमाग को लपेटने में कुछ समय लग रहा है। हालांकि, मेरा कोड पहले दो का कुछ संकर बन गया है क्योंकि मैं यहां सिर्फ कॉपी-पेस्टिंग कर रहा हूं और जैसे ही मैं जाता हूं।

प्रस्तुति पक्ष पर, मेरे सभी पृष्ठों में इन सामान्य तत्व हैं: शीर्षलेख, शीर्ष नेविगेशन, साइडबार नेविगेशन, सामग्री, दायां साइडबार और पाद लेख।

पुस्तक में फ़ंक्शन-आधारित उदाहरण बताते हैं कि मेरे पास ये प्रदर्शन फ़ंक्शन हो सकते हैं जो सभी प्रस्तुति उदाहरण को संभालते हैं। तो, मेरा पेज कोड इस तरह होगा:

display_header(); 
display_navigation(); 
display_content(); 
display_footer(); 

हालांकि, मुझे यह पसंद नहीं है क्योंकि पुस्तक में उदाहरण HTML और PHP के साथ इन प्रिंट बयान इस तरह मिश्रित है:

echo "<tr bgcolor=\"".$color."\"><td><a href=\"".$url."\">" ... 

मैं HTML में कुछ PHP के साथ एचटीएमएल रखना चाहता हूं, न कि दूसरी तरफ।

मैं अपने पृष्ठों को बनाने की सोच रहा हूं ताकि मेरे पृष्ठ की शुरुआत में, मैं डेटाबेस से सभी डेटा लाऊंगा और इसे सरणी में रखूंगा। मैं चर के लिए डेटा भी प्राप्त करूंगा। यदि इनमें से किसी भी प्रक्रिया में कोई त्रुटि है, तो मैं उन्हें त्रुटि तारों में डाल दूंगा।

फिर, एचटीएमएल कोड में, मैं इन सरणियों के माध्यम से लूप foreach का उपयोग करने और सामग्री प्रदर्शित करेगा। कुछ मामलों में, कुछ चर होंगे जो दिखाए जाएंगे। यदि कोई त्रुटि चर सेट है जो सेट है, तो मैं इसे उचित स्थिति पर प्रदर्शित करूंगा।

(एक तरफ ध्यान दें के रूप में:

else echo 'Error'; 

यह मुझे चकरा, क्योंकि जब: बात मुझे समझ नहीं आता सबसे उदाहरण कोड में, अगर कुछ डेटाबेस क्वेरी या whatnot एक त्रुटि देता है, वहाँ हमेशा है उदाहरण कोड एक त्रुटि देता है, एचटीएमएल शुरू होने से पहले कभी-कभी इसे प्रतिबिंबित किया जाता है ...)

उन लोगों के लिए जिन्होंने एएसपी.नेट का उपयोग किया है, मुझे कुछ हद तक कोड-बैक फाइलों और lblError और I मैं यहाँ कुछ ऐसा करने की कोशिश कर रहा हूँ।

जो चीज़ मुझे नहीं पता है वह यह है कि मैं यह कैसे कर सकता हूं "तर्क, पहले प्रेजेंटेशन" चीज करें ताकि मुझे सभी पृष्ठों में नेविगेशन तर्क और नेविगेशन प्रस्तुति उदाहरण के लिए दोहराना पड़े।

मैं कुछ फ़ाइलों में शामिल हैं या मैं यहाँ कार्यों इस्तेमाल कर सकते हैं लेकिन एक छोटा सा अलग करना चाहिए? क्या कोई अच्छा लेख है जहां प्रस्तुति और तर्क को अलग करने की इन "शैलियों" को थोड़ा और अधिक समझाया गया है। मेरे पास इस पुस्तक के बारे में केवल एक पैराग्राफ है।

मैं जो सोच रहा हूं वह यह है कि मैं कुछ अवधारणाओं या PHP प्रोग्रामिंग करने के तरीकों के बारे में बात कर रहा हूं, लेकिन मुझे अभी तक उनके लिए शर्तों को नहीं पता है।

मुझे पता है कि यह एक सीधा आगे सवाल नहीं है, मुझे अपने विचारों को व्यवस्थित करने में कुछ मदद चाहिए।

+0

अच्छी बात कोई भी हेडॉक्स का उल्लेख नहीं करता है। कुछ कारणों से प्रत्येक बार तर्क और प्रस्तुति को अलग करने के लिए कोई प्रश्न है, कोई व्यक्ति हेडियॉक्स का उल्लेख करता है और इसे अपवित्रों की बेतुका राशि मिलती है। –

उत्तर

4

कभी बाहर एचटीएमएल पीएचपी साथ गूंज। इसके बजाय यह तर्क/दृश्य को अलग करने के CodeIgniter की तरह एक PHP फ्रेमवर्क का उपयोग किया जाएगा मदद करने के लिए के रूप में

<tr class="<?php echo $myclass; ?>">

अन्य विकल्प (बुराई छोटे टैग बिना ) इनलाइन लिखें।

मैं पुस्तक को खिसक दूंगा और इसके बजाय फ़ंक्शन, कक्षाएं इत्यादि जैसे कोर PHP कौशल सीखने पर अधिक ध्यान केंद्रित करूंगा। फिर several popular frameworks खेलना शुरू करें।

एक तरफ ध्यान दें के रूप में: बात मुझे समझ में नहीं करते है सबसे उदाहरण कोड में, अगर कुछ डेटाबेस क्वेरी या whatnot एक त्रुटि देता है, वहाँ हमेशा होता है कि:

कारण है कि वे त्रुटियों को गलत तरीके से प्रदर्शित कर रहे हैं। आपको या तो एक एससियन में त्रुटियों को स्टोर करना चाहिए और फिर उन्हें पृष्ठ पर प्रदर्शित करना (उन्हें साफ़ करना) या उन्हें error_log फ़ंक्शन के साथ त्रुटि लॉग में फेंक देना चाहिए। error_log("Something happened in MyClass");

बात मैं पता लगा नहीं है कि कैसे मैं इतना है कि मैं होगा उदाहरण के लिए नेविगेशन तर्क और नेविगेशन को दोहराने की जरूरत नहीं इस "तर्क कर पहले तो प्रस्तुति," बात कर सकता है सभी पृष्ठों में प्रस्तुति।

MVC दृष्टिकोण में चीजों के बारे में सोचें। आप पहले नियंत्रक (तर्क) कहते हैं। यह पता लगाता है कि क्या जरूरत है। यदि इसे डेटाबेस से डेटा की आवश्यकता है तो यह मॉडल को आमंत्रित करता है और अनुरोध करता है। फिर यह इसे स्वरूपित करता है, अन्य डेटा जोड़ता है, अतिरिक्त प्रश्न चलाता है, और फिर इसे दृश्य में पास करता है।

+1

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

+1

@ मार्कस: फिर पृष्ठों के शीर्ष पर उपयोग शामिल करें। यदि किसी पृष्ठ में तर्क है (फॉर्म इनपुट, डेटाबेस कार्य, आदि) तो सभी तर्क एक पृष्ठ को छूने का प्रयास करें, और दृश्य प्रवाह प्रदान करने के लिए रीडायरेक्ट के साथ '$ _SESSION' का उपयोग करें। –

1

एक टेम्पलेट इंजन की तरह ध्वनि जो आप खोज रहे हैं - बहुत सारे परिणामों के लिए Google से पूछें। व्यक्तिगत रूप से, मुझे smarty बहुत पसंद है।

(और उस किताब फेंक, ध्वनि यह है की तरह ... वर्ष)

+0

ओह हाँ। अब जब मैं अपने प्रश्न को देखता हूं और Smarty को देखता हूं, ऐसा लगता है कि मैं चीजों को बहुत वैसे ही करता हूं जैसा मैं सोच रहा था। हालांकि, मुझे आश्चर्य है कि मुझे चतुरता की आवश्यकता है या अगर मैं सिर्फ "smarty" तरीके से चीजें कर सकता हूं। –

1

एमवीसी (मॉडल व्यू कंट्रोलर) लगता है जैसे यह आपकी आवश्यकताओं के अनुरूप हो सकता है। आप उस here के बारे में पढ़ सकते हैं।

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

  • कोई संबंधित समस्या नहीं^_^