2008-09-01 16 views
5

मुझे लगता है कि इस परियोजना पर किसी अन्य प्रोग्रामर के साथ बहस में उलझन में आने के लिए मुझे लगता है कि विचारों में कोई योग्यता नहीं है। वह एक प्रणाली का प्रस्ताव करता है कि PHP इस तरह कुछ दिखता है:विचारों का उपयोग करने के लिए या विचारों का उपयोग न करने के लिए

$draw = new Draw; 
$nav = $draw->wideHeaderBox(). 
$draw->left(). 
    $draw->image(). 
     Image::get($image,60,array('id'=>'header_image')). 
    $draw->imageEnd(). 
$draw->leftEnd(). 
$draw->left(10). 
    '<div id="header_text">'. 
     self::defaultSectionText(). 
    '</div>'. 
$draw->leftEnd(). 

और इसी तरह (यह नियंत्रक बीटीडब्ल्यू में है)। अब इसके लिए उनके तर्क वास्तव में कुछ समझ में आते हैं, उनका दावा है कि यदि कोई नया स्वरूप है तो हमें केवल एक ही स्थान पर HTML बदलना होगा और यह हर जगह स्वचालित रूप से बदल जाएगा। हालांकि, किसी भी कारण से, यह विधि अभी भी मुझे गलत तरीके से रोकती है, क्या इस विधि पर विचारों के लिए कोई योग्यता है? मेरा मतलब हाथ से एचटीएमएल को फिर से टाइप करने के अलावा नहीं है।

उत्तर

5

एचटीएमएल समय-सेवर्स उपयोगी होते हैं, लेकिन वे केवल उपयोगी है जब वे सहज और आसान समझते हैं कर रहे हैं कर रहे हैं। new Draw को तुरंत चालू करने के लिए बस बहुत स्वाभाविक नहीं लगता है। इसके अलावा, wideHeaderBox और left केवल उस व्यक्ति के लिए महत्व होगा जो सिस्टम को गहराई से जानता है। और क्या होगा यदि आपके सहकर्मी संगीत की तरह एक नया स्वरूप है? क्या होगा यदि wideHeaderBox बहुत संकीर्ण हो जाता है? क्या आप PHP विधि द्वारा उत्पन्न मार्कअप (और शैलियों, अनुमानित) को बदल देंगे लेकिन कोड को कॉल करने के लिए एक बहुत ही गलत विधि नाम छोड़ देंगे?

तुम लोग सिर्फ एचटीएमएल पीढ़ी का उपयोग करने के है, तो आप इसे देखने के लिए फाइलों में बीच-बीच में उपयोग करना चाहिए, और आप इस तरह कुछ इस तरह के रूप में उपयोग करना चाहिए जहां यह वास्तव में आवश्यक/उपयोगी, है:

HTML::link("Wikipedia", "http://en.wikipedia.org"); 
HTML::bulleted_list(array(
    HTML::list_item("Dogs"), 
    HTML::list_item("Cats"), 
    HTML::list_item("Armadillos") 
)); 

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

1

तर्क वह उपयोग करता तर्क आप दृश्य दिखाई देते हैं की जरूरत है। दोनों परिणाम केवल एक ही स्थान पर बदल रहे हैं। हालांकि, अपने संस्करण में, आप व्यवसाय कोड के साथ दृश्य मार्कअप मिश्रण कर रहे हैं।

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

क्या आपने smarty को देखा है? http://smarty.php.net

1

मैंने पहले भी ऐसा ही कुछ किया है, और यह समय की बर्बादी थी। उदाहरण के लिए, आपको मूल रूप से HTML के साथ पहले से ही सब कुछ के लिए रैपर लिखना होगा और आप कुछ चीजें भूल जाएंगे। जब आपको लेआउट में कुछ बदलना होगा तो आपको लगता है कि "शूट करें, मैं इसके बारे में भूल गया हूं .. अब मुझे एक और विधि कोड करना होगा या कोई अन्य पैरामीटर जोड़ना होगा"।

अंत में, आप कार्यों/वर्गों है कि HTML जो कोई भी नहीं पता है या कैसे अब से महीने उपयोग करने के लिए याद होगा उत्पन्न का एक विशाल संग्रह होगा। नए डेवलपर्स आपको इस प्रणाली का उपयोग करने के लिए शाप देंगे, क्योंकि उन्हें कुछ भी बदलने से पहले इसे सीखना होगा। इसके विपरीत, अधिकतर लोग शायद आपके अमूर्त HTML ड्राइंग क्लास की तुलना में HTML को जानते हैं ... और कभी-कभी आपको अपने हाथों को शुद्ध HTML के साथ गंदे मिलना होगा!

1

यह बहुत वर्बोज़ और ईमानदारी से पालन करने के लिए मुश्किल लग रहा है और कोड के कुछ लग रहा है यह बहुत ज्यादा लेआउट जानकारी है की तरह।

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

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

1

मुझे हमेशा एचटीएमएल के साथ काम करना ज्यादा आसान लगता है। एक कम अमूर्त परत (एचटीएमएल -> वास्तविक वेबपृष्ठ/PHP कार्य -> ​​एचटीएमएल -> वास्तविक वेबपेज) के साथ सौदा करने के लिए आप बस HTML में काम करते हैं।

मुझे सच में लगता है कि 'इसे सिर्फ एक ही स्थान में बदलना है' इस मामले में काम नहीं करेगा। ऐसा इसलिए है क्योंकि जब आप किसी फ़ंक्शन के आउटपुट को बदलना चाहते हैं, लेकिन केवल एक ही स्थान पर वे कई बार होंगे। निश्चित रूप से आप तर्कों का उपयोग कर सकते हैं लेकिन जल्द ही आप एक दर्जन तर्कों वाले कुछ कार्यों के साथ समाप्त हो जाएंगे। छी।

दिमाग में भालू भाषाएं/प्रणालियों को ध्यान में रखते हुए अक्सर आपको उप टेम्पलेट्स शामिल करने देते हैं, जिससे आप HTML के कुछ पुन: प्रयोज्य ब्लॉक प्राप्त कर सकते हैं।

नीचे की रेखा यह है कि अगर मैंने अभी आपकी कंपनी में शुरुआत की थी और हर जगह कोड देखा था, तो मेरा पहला विचार होगा, 'अरे! एक नई नौकरी की जरूरत है। '

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