मैं ऑब्जेक्ट उन्मुख फॉर्म जेनरेटर बनाने की कोशिश कर रहा हूं। कृपया ध्यान रखें कि इसका उपयोग केवल एक विशिष्ट समस्या को हल करने के लिए हमारी कंपनी के कुछ हद तक लोगों द्वारा किया जाएगा।PHP ऑब्जेक्ट उन्मुख फॉर्म जेनरेटर
मुझे वर्तमान में दो छोटी चेतावनियों का सामना करना पड़ रहा है।
बनाने तत्वों की सिंटेक्स
कुछ दृष्टिकोण मैं ले जा सकते हैं कर रहे हैं।
कन्स्ट्रक्टर में सबकुछ सेट करना। एक दोष के रूप में इस
Input::create('text', 'name', array('maxlength' => 10));
सीमा निर्माता असंगत निर्माता उपयोग होता टाइप करें और तरीकों (मास विशेषता की स्थापना के लिए एक विधि रखना)
Input::create('text')->name('name')->value('value')->attribute('max_length', 10);
के रूप में हर विशेषता का पर्दाफाश के रूप में केवल सबसे अधिक इस्तेमाल किया विशेषताओं का पर्दाफाश करने के सकता है प्रत्येक विशेषता के लिए या __call
जादू विधि के साथ विधि बनाने के साथ विधि जिसके परिणामस्वरूप आईडीई में कोई स्वत: पूर्ण समर्थन नहीं होगा। और अब भी, मैं attribute
विधि रख सकता हूं।
Input::create()->type('text')->name('name')->value('value')->max_length(10)->id('id'); //etc.
फिलहाल, मैं दूसरा दृष्टिकोण सबसे अच्छा मानता हूं, क्योंकि यह दोनों दुनिया से "अच्छी" सामग्री रखता है। जैसा कि अभी भी कुछ कामों को अमूर्त करने का एक तरीका प्रदान करता है, उदाहरण के बाद से विधि required
न केवल आवश्यक विशेषता सेट करेगी, बल्कि आवश्यकतानुसार सत्यापन ऑब्जेक्ट के लिए इस फ़ील्ड को भी चिह्नित करेगी। दृष्टिकोण 2 के साथ
कोड दोहराव और 3
के बाद से वहाँ विशेषताओं है कि हर तत्व द्वारा किया जा सकता है, लेकिन यह भी जिम्मेदार बताते हैं कि केवल 3 या 4 तत्वों, उदा प्रयोग करने योग्य हैं एचटीएमएल 5 विशेषता form
।
प्रत्येक तत्व मूल तत्व से प्राप्त हो सकता है जिसमें प्रत्येक तत्व के लिए सार्वभौमिक गुणों के लिए विधियां हैं (उदा। name
)। आंशिक रूप से उपयोग करने योग्य विशेषताओं को इंटरफेस के साथ हल किया जा सकता है, लेकिन इससे कोड डुप्लिकेशन होता है क्योंकि उनमें विधि निकाय नहीं हो सकता है।
लक्षण समाधान होंगे, लेकिन दुख की बात है, मैं PHP 5.3 पर फंस गया हूं, अपग्रेड करने के लिए कोई रास्ता नहीं है। यह मुझे या तो मिक्सिन या संरचना पैटर्न को कार्यान्वित करने के साथ छोड़ देता है, जो फिर से, कोई स्वत: पूर्ण समर्थन नहीं ले सकता है। दूसरे दृष्टिकोण का उपयोग करते समय इसे आंशिक रूप से कम किया जाएगा।
मेरे वास्तविक सवाल का तो:
किस तरीके के रूप में सबसे उपयुक्त समाप्त कर सकते हैं? (न्यूनतम कोड डुप्लिकेशन, ठोस कोड पुन: उपयोग और कार्यान्वयन की आसानता के रूप में उपयुक्त)
मुझे एहसास है कि यह बहुत अच्छी तरह से विचार आधारित उत्तर हो सकता है, इसलिए अगर मैं ऐसा करता हूं तो मैं पहले से माफ़ी मांगता हूं।
है 'इनपुट ::()' सिर्फ एक असली "इनपुट वस्तुओं" बनाने के लिए कारखाना विधि बनाने? मैं उलझन में आया क्योंकि आपने कुछ बार कन्स्ट्रक्टर का उल्लेख किया था, लेकिन कभी भी आपके कन्स्ट्रक्टर को नहीं दिखाया। इसके अलावा आपकी विरासत की समस्या के लिए सार वर्ग भी हैं। उनके पास एक विधि निकाय हो सकता है और शरीर के बिना अमूर्त तरीकों को परिभाषित करके अपने बच्चों को कार्यान्वयन विवरण भी दे सकता है। – thpl
इनपुट :: बनाएँ() एक स्टैंडअलोन इनपुट ऑब्जेक्ट बनाता है, लेकिन एकाधिक तत्व, उदा। Textarea, बटन अलग कन्स्ट्रक्टर पैरामीटर होगा। जैसा कि मैंने कहा था, प्रत्येक तत्व आधार तत्व (अमूर्त वर्ग) से प्राप्त कर सकता है, लेकिन हम एकाधिक आधार तत्वों का उपयोग करते समय एकल विरासत के बारे में बात कर रहे हैं और इस प्रकार कोड डुप्लिकेशंस (क्योंकि मुझे ऐसे गुण नहीं चाहिए जिन्हें केवल टेक्स्टरेरा में इनपुट के लिए सेट किया जा सके)। इंटरफेस के साथ कई आधार तत्वों का उपयोग करने से भी नकल हो जाएगी। – realshadow
कभी भी यह देखने पर विचार किया गया कि https://github.com/naomik/htmlgen जैसे पहले से क्या है? – Tschallacka