आपको नमस्कार है, हेब्रूसर!आज मैं आपके न्यायालय को एक निश्चित मात्रा में ब्यलोक्लोड प्रस्तुत करना चाहता हूं, जिसे मैं गर्व से "मेरा ढांचा" कहता हूं। कटौती के तहत आपको वर्ग पहियों के साथ बड़ी संख्या में साइकिल, कोड पर हास्यास्पद टिप्पणियां, पूरी तरह से अर्थहीन पाठ की काफी उचित मात्रा और कई अन्य समान भयावहता दिखाई देगी। जिनसे यह डरता नहीं है - "और पढ़ें" बटन पर क्लिक करें।
फिलहाल, रूपरेखा में कुछ बदलाव हुए हैं, इसलिए लेख के सभी उदाहरण काम नहीं कर सकते हैं, और फ्रेमवर्क संरचना थोड़ी अलग होगी।संक्षिप्त परिचय
फिलहाल, मैं अपने तीसरे वर्ष में मॉस्को के पास एक कॉलेज में कंप्यूटर सॉफ्टवेयर और स्वचालित सिस्टम में डिग्री के साथ हूं। तीसरे वर्ष के दूसरे सेमेस्टर में, उन्होंने हमें "अब आप तैयार हैं" जैसे कुछ बताया, और हमारे पास एक नया विषय है - कंप्यूटर नेटवर्क सॉफ्टवेयर, या, दूसरे शब्दों में, हमने HTML सीखना शुरू कर दिया। कुछ समय पहले, मेरे एक सहपाठी ने HTML, CSS और PHP का अध्ययन करना शुरू किया और इसमें कुछ सफलता हासिल की - उसने अपना ऑनलाइन स्टोर बनाया। किसी तरह मैंने उसे स्रोत दिखाने के लिए कहा, और विशेष रूप से आश्चर्यचकित नहीं हुआ - एक निश्चित संख्या के निष्कर्षों को छोड़कर, सभी PHP में फ़ाइल एक्सटेंशन (टोकरी और अन्य सभी गैजेट जो "स्टोर पार्ट" बना रहे थे, Ecommtools com पर थे)।
यह देखकर, मैं बस चुप नहीं रह सका और एमवीसी के बारे में, आधार और उस जैज के बारे में कुछ रगड़ना शुरू कर दिया। स्वाभाविक रूप से, उन्होंने मेरे शब्दों से लगभग कुछ भी नहीं समझा (जैसा कि आप देख सकते हैं, मैं इसे बहुत अच्छी तरह से नहीं समझा रहा हूं)। लेकिन वस्तुतः कुछ हफ़्ते बाद में उपरोक्त विषय बदल गया। शिक्षक ने इसे पहले हमारे साथ आयोजित किया, और बिना किसी समस्या के मैंने उसके साथ सहमति व्यक्त की कि हम अपने साथ एक सहपाठी के साथ व्यवहार करेंगे। नतीजतन, कुछ निश्चित जोड़े के लिए, साइट को अपने हाथों से खरोंच से फिर से लिखा गया था, और एक सहपाठी, नई साइट के अलावा, ज्ञान का एक प्रभावशाली शरीर प्राप्त किया (मुझे आशा है कि उपयोगी)।
मैंने स्रोत कोड को फेंक दिया (हमने उसके लैपटॉप पर काम किया) और घर पर चारों ओर पोक किया, कार्यक्षमता को जोड़ा, फिर से काम किया, कुछ फिर से बनाया। नतीजतन, मुझे एक तरह की रूपरेखा मिली, जिस पर कई परियोजनाएं काफी सफलतापूर्वक काम करती हैं। अब मैंने अपनी रचना को लोगों के लिए खोलने का फैसला किया, ताकि उसने फैसला किया - मुझे वेब प्रोग्रामिंग को फेंकने या अपने दिमाग की उपज को और विकसित करने के लिए। और आप कभी नहीं जानते, अचानक कोई काम आता है।
फ्रेमवर्क सुविधाएँ
1.
हल्के वजन। खैर, बहुत छोटा है। जब अनपैक किया जाता है, तो यह लगभग 34 किलोबाइट लेता है (यदि आप मानक स्वागत पाठ और लोगो छवि हटाते हैं)
2.
ओओपी का अभाव। मुझे नहीं पता कि यह एक फायदा है या इसके विपरीत, लेकिन सिद्धांत रूप में ओओपी अनुप्रयोग एक प्रक्रियात्मक शैली में लिखे गए अनुप्रयोगों की तुलना में बहुत अधिक संसाधनों का उपभोग करते हैं। (वस्तुओं के बारे में किस तरह का भाषण हो सकता है जब एक व्यक्ति जिसे यह मुख्य रूप से प्रदर्शित किया गया था, वह अभी भी पूरी तरह से मूल बातें नहीं समझ पाया है)
3.
एमवीसी। खैर, यहाँ मुझे लगता है कि कुछ भी समझाना आवश्यक नहीं है।
4.
रूटिंग। रूटिंग (मेरी राय में) का उपयोग करना बहुत आसान है, लेकिन एक ही समय में कॉन्फ़िगरेशन में काफी लचीला है, हालांकि इसे शोधन की आवश्यकता है। डिफ़ॉल्ट रूटिंग "कंट्रोलर / एक्शन / परम -1 / वैल्यू -1 / परम -2 / वैल्यू -2" है।
5.
JSON और XML। इनमें से किसी एक प्रारूप में उत्तर पाने के लिए, आपको क्रमशः पते ".json" या ".xml" जोड़ने होंगे। यही है, अगर पते "/ माल / दृश्य / आईडी / 3" पर आपको उत्पाद के बारे में जानकारी मिलती है, तो पते पर "/goods/view/id/3.json" पर आप इसे JSON प्रारूप में प्राप्त कर सकते हैं।
6.
कार्यशीलता। बॉक्स से बहुत अधिक कार्यक्षमता नहीं है, क्योंकि समुदाय केवल 1 व्यक्ति है। अब तक सत्रों का उपयोग करते हुए एक खराब साबुन प्रेषण स्क्रिप्ट और काफी कामकाजी उपयोगकर्ता प्राधिकरण है।
7.
बैकट्रेस। वर्तमान। यदि डिबग मोड में एप्लिकेशन नहीं है, तो डिस्कनेक्ट किया गया।
8.
डीबी। केवल MySQL समर्थित है। यह एक शून्य है, लेकिन इस समय महत्वपूर्ण नहीं है।
9.
ओआरएम। यह यहाँ नहीं हो सकता है, क्योंकि ओओपी सिद्धांत में रूपरेखा में अनुपस्थित है। लेकिन डेटाबेस पर किसी प्रकार का बंधन है।
10.
ए.सी.एल. फिलहाल उपलब्ध नहीं है, लेकिन ढांचे के विकास की योजनाओं में (और यह तभी विकसित होगा जब कम से कम कुछ सकारात्मक समीक्षा प्राप्त हो) पहले स्थान पर है।
11.
DEBUG मोड। वर्तमान, कुछ त्रुटियों के आउटपुट को प्रभावित करता है, बैकट्रैक का आउटपुट, उपयोग किए गए कॉन्फ़िगरेशन।
ढांचा संरचना
योजना
| - ऐप /
| - विन्यास /
| - डिबग /
| - * .php
| - * .php
| - नियंत्रक /
| - * /
| - * क्रिया। एफ.पी.
| - मॉडल /
| - * .php
| - विचार /
| - रिवाज /
| - * .phtml
| - लेआउट /
| - default.phtml
| - स्क्रिप्ट /
| - * /
| - * .phtml
| - पुस्तकालय /
| - कार्य /
| - default.php
| - * .php
| - init /
| - configs.php
| - init.php
| - predispatch.php
| - मॉडल /
| - basemodel.php
| - राउटर /
| - राउटर। एफपी
| शामिल हैं
| - फाइलें /
| - *
| - index.php
| --htaccess
चलो सब कुछ क्रम में विचार करें
चलिए बहुत नीचे से शुरू करते हैं, वह है
।htaccess फ़ाइल से। यहाँ इसकी सामग्री हैं:
RewriteEngine on RewriteCond %{REQUEST_URI} !/files RewriteRule .*$ index.php [L] AddDefaultCharset UTF-8
यही है, "/ फाइल" के साथ शुरू करने के अलावा किसी भी अनुरोध को index.php पर पुनर्निर्देशित किया जाएगा। वास्तव में, यह सबसे अच्छा पुनर्लेखन विकल्प से एकमात्र और दूर नहीं है, लेकिन मैं पहले से ही इसके साथ काम कर रहा था और इसे अभी तक नहीं बदलने का फैसला किया है। खैर, डिफ़ॉल्ट एन्कोडिंग: UTF-8। हमें यहां कुछ और दिलचस्प नहीं दिखाई देगा।
आइए
index.php पर
चलते हैं । यहाँ इसकी सामग्री हैं:
यहां, मुझे लगता है, कुछ भी समझाना आवश्यक नहीं है, क्योंकि सभी कार्यों पर टिप्पणी की जाती है।
फ़ोल्डर
फ़ाइलें । जैसा कि आपको याद होगा, केवल इस फ़ोल्डर की सीधी पहुंच है, अर्थात,
index.php को दरकिनार करना। तदनुसार, शैली पत्रक, जावास्क्रिप्ट फ़ाइलें, चित्र और इसी तरह के संसाधन इसमें बनते हैं।
अगला,
एप्लिकेशन फ़ोल्डर पर विचार करें। जैसा कि नाम से ही स्पष्ट है, यह एप्लिकेशन का फ़ोल्डर है। इसमें एप्लिकेशन कॉन्फ़िगरेशन (
कॉन्फ़िगरेशन फ़ोल्डर), नियंत्रक (
कंट्रोलर फ़ोल्डर) और इन नियंत्रकों, मॉडल (
मॉडल फ़ोल्डर) और विचार (
व्यू फ़ोल्डर) की क्रियाएं शामिल हैं।
नियंत्रक एक फ़ोल्डर है जिसमें PHP-files - कार्रवाई है। फ़ोल्डर का नाम कैमलकेस में होना चाहिए। एक्शन फ़ाइल का नाम भी कैमसेल में होना चाहिए, लेकिन अंत में "एक्शन" पोस्टफिक्स के साथ।
अर्थात्,
"सामान" और
"इंडेक्स" ,
"शो" ,
"नया" ,
"एडिट" और
"डिलीट" नाम के साथ कंट्रोलर फाइल सिस्टम में इस तरह दिखेगा:
| - नियंत्रक /
| - माल /
| - indexAction.php
| - showAction.php
| - newAction.php
| - editAction.php
| - deleteAction.php
वैकल्पिक रूप से, किसी भी नियंत्रक में
_init.php फ़ाइल हो सकती है। इस नियंत्रक में किसी भी कार्रवाई को चलाने से पहले इस फ़ाइल की सामग्री को निष्पादित किया जाएगा।
अब मॉडल (फ़ोल्डर
"मॉडल" ) के बारे में। मेरी समझ में, मॉडल को तैयार-से-उपयोग डेटा वापस करना चाहिए जिसे अब नियंत्रक में आगे संसाधित नहीं करना पड़ेगा। उदाहरण के लिए, आपको ब्लॉक 5 में नवीनतम समाचारों को प्रदर्शित करने की आवश्यकता है। आप नियंत्रक से सीधे एक अनुरोध कर सकते हैं, लेकिन मेरी समझ में कोड को इस रूप में कम करना अधिक सही होगा:
loadModel('news'); $_view['last_news'] = getLastNews(5);
यहाँ
getLastNews()
विधि को
"समाचार" मॉडल में घोषित किया गया है और डेटा की एक सरणी देता है जो केवल स्वरूपित और दृश्य में प्रदर्शित होने के लिए बनी रहती है।
मॉडल ही एकल फ़ाइल में संयुक्त विधियों का एक संग्रह है।
आइए विचारों पर चलते हैं,
"विचार" फ़ोल्डर। इसमें 3 उपनिर्देशिकाएँ शामिल हैं:
कस्टम ,
लेआउट ,
स्क्रिप्ट । सभी दृश्यों में एक
.phtml एक्सटेंशन है।
लेआउट फ़ोल्डर में एप्लिकेशन के सभी
लेआउट शामिल हैं। समझाने के लिए कुछ खास नहीं है। सामग्री को लेआउट में आउटपुट करने के लिए,
content()
विधि का उपयोग करें।
स्क्रिप्ट फ़ोल्डर में एक्शन गेम्स के लिए दृश्य शामिल हैं। संरचना है:
स्क्रिप्ट / <नियंत्रक नाम> / <ActionName> .phtml ।
खैर,
"कस्टम" फ़ोल्डर में अन्य सभी दृश्य हैं जो पहले दो फ़ोल्डरों के लिए उपयुक्त नहीं हैं। उदाहरण के लिए, किसी हेडर वगैरह द्वारा अलग-अलग निकाले गए साइडबार ब्लॉक हो सकते हैं।
और अंत में,
"कॉन्फ़िगर" फ़ोल्डर। इसमें
डीबग उपनिर्देशिका होती है जहाँ कॉन्फ़िगरेशन को डुप्लिकेट किया जा सकता है। यदि निरंतर
APP_DEBUG सत्य है, तो एप्लिकेशन
कॉन्फ़िगर / डिबग फ़ोल्डर में अनुरोधित कॉन्फ़िगरेशन को खोजने का प्रयास करेगा, और केवल अगर
कॉन्फ़िगरेशन नहीं है, तो यह इसे
कॉन्फ़िगर फ़ोल्डर से कनेक्ट करेगा। यदि एप्लिकेशन
डिबग मोड में
नहीं है, तो
डिबग फ़ोल्डर को अनदेखा कर दिया जाएगा।
सभी विन्यास PHP फाइलें हैं जो एक सरणी लौटाती हैं, अर्थात्, उनकी सामग्री कुछ इस प्रकार है:
return array(
फ़ोल्डर
"लाइब्रेरी" । वास्तव में, यह ढांचा ही है। इसलिए, मैं इसे विस्तार से (शर्मिंदा) नहीं मानूंगा। मैं केवल कुछ विवरणों का उल्लेख करूंगा।
फ़ोल्डर
"फ़ंक्शंस" । यदि आपको ढांचे की कार्यक्षमता का विस्तार करने की आवश्यकता है, तो यहां आप हैं। इस फ़ोल्डर से PHP फाइलें
loadFunction($fnc)
विधि का उपयोग करके भरी जाती हैं। अभी तक कोई ऑटोलॉड नहीं है, लेकिन निकट भविष्य में होगा। हमें फ़ाइल
"default.php" पर भी ध्यान देना चाहिए। इसमें फ्रेमवर्क की सभी मुख्य कार्यक्षमता शामिल है और एप्लिकेशन शुरू होने पर जुड़ा हुआ है।
Init फ़ोल्डर में
, हम
init.php फ़ाइल में रुचि रखते हैं। यह हर बार जब आवेदन शुरू होता है और गतिशील कॉन्फ़िगरेशन वहां किया जाना चाहिए।
"मॉडल" फ़ोल्डर में
, "basemodel.php" फ़ाइल पर ध्यान दें। यह MySQL के लिए बहुत बाध्यकारी है जिसके बारे में मैंने ऊपर लिखा था।
ढांचे के साथ काम करें
आइए इस ढांचे पर एक छोटा अनुप्रयोग बनाने का प्रयास करें। इसे उन पुस्तकों का एक कैटलॉग बनने दें जिन्हें आप पढ़ते हैं।
प्रोजेक्ट बनाना और स्थापित करना
लिंक में से किसी एक पर फ्रेमवर्क डाउनलोड करें:
github.com/SazereS/NoNameFramework.git yadi.sk/d/ZAnE6Yq_4kgBe troloload.ru/f/5979-nonameframework.zip dl.dropboxusercontent.com/u/85783372/NNFameसाइट फ़ोल्डर में फ्रेमवर्क को अनपैक करें। हमारा एप्लिकेशन डेटाबेस का उपयोग करेगा, इसलिए तुरंत इसे आपके लिए सुविधाजनक तरीके से बनाएं।
हम
app / config पर जाते हैं और
mysql.php फ़ाइल
खोलते हैं। डिफ़ॉल्ट मानों को अपने साथ बदलें। यह इस तरह निकला:
अगला,
लाइब्रेरी खोलें
/ init / init.php और जाँचें कि लाइन
initDb();
अधूरा था।
इस प्रारंभिक सेटअप को पूर्ण माना जा सकता है।
एक CRUD अनुप्रयोग बनाना
सबसे पहले, हमें डेटाबेस में एक टेबल चाहिए। इसे
किताबें कहा जाता है और कॉलम
आईडी, शीर्षक, लेखक, टिप्पणी, निशान से मिलकर बनता है। ऐसा करने के लिए, हम हमारे द्वारा बनाए गए डेटाबेस के लिए इस अनुरोध को निष्पादित करते हैं:
CREATE TABLE `books` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `title` VARCHAR(80) NOT NULL, `author` VARCHAR(40) NOT NULL, `comment` TEXT NOT NULL, `mark` INT NOT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=MyISAM;
हमें एक मॉडल भी चाहिए। ऐसा करने के लिए,
मॉडल फ़ोल्डर में
books.php फ़ाइल बनाएं।
एक
पुस्तक नियंत्रक बनाएँ। ऐसा करने के लिए,
एप्लिकेशन / नियंत्रक फ़ोल्डर में
पुस्तकें फ़ोल्डर बनाएं।
CRUD क्रिएट रीड अपडेट डिलीट (क्रिएट, रीड, अपडेट, डिलीट) का संक्षिप्त नाम है। यह इन क्रियाओं का है जो हमारे नियंत्रक का उत्पादन करेगा। इनमें से प्रत्येक क्रिया के लिए एक क्रिया बनाएँ। इन क्रियाओं के नाम
नए हैं ,
देखें ,
संपादित करें और
हटाएं । इसके अलावा, हमें सभी पुस्तकों को सूचीबद्ध करने के लिए कार्रवाई की आवश्यकता है। हम इसे
"सूचकांक" कहेंगे। ऐसा करने के लिए,
पुस्तक फ़ोल्डर में पाँच फ़ाइलें बनाएँ:
indexAction.php, newAction.php, viewAction.php, editAction.php और deleteAction.php।कुछ एक्शन गेम्स में
व्यू फाइल्स की जरूरत होती है। हम उन्हें आवश्यक रूप से बनाएंगे।
नई कार्रवाई के साथ शुरू करते हैं। ऐसा करने के लिए,
दृश्य / स्क्रिप्ट फ़ोल्डर में
पुस्तकों (नियंत्रक के नाम से) का एक सबफ़ोल्डर और
उसमें एक
नई .phtml फ़ाइल (क्रिया के नाम से) बनाएँ। अस्थायी रूप से इसमें निम्न पाठ डालें:
books/new
। अब अपना वेब सर्वर शुरू करें और "http: // <SITE ADDRESS> / किताबें / नई" पते पर जाएं। वहां हमें पाठ्य
पुस्तकें / नई देखनी चाहिए।
आइए हम अपनी कार्रवाई पर वापस जाएं।
NewAction.php फ़ाइल खोलें और निम्नलिखित कोड जोड़ें:
<?php
$ _View चर पर ध्यान दें। यह उसकी मदद से है कि नियंत्रक दृश्य के साथ संचार करता है। इसके पास दिए गए सभी मूल्य, दृश्य और लेआउट दोनों से उपलब्ध होंगे।
इसके अलावा, हम
newBook()
फ़ंक्शन में रुचि रखते हैं। वास्तव में यह फ़ंक्शन अभी तक मौजूद नहीं है। चलो इसे बनाते हैं। ऐसा करने के लिए, हमारा मॉडल (
books.php ) खोलें और वहां निम्न कोड डालें:
<?php function newBook($array) {
इस पर, मॉडल और कार्रवाई के साथ काम पूरा हो गया है, हम दृश्य में बदल जाते हैं। वहाँ निम्न कोड चिपकाएँ:
<form method="post"> <label> : </label> <br /> <input type="text" name="title" value="<?=$_view['form']['title'] ?>" /> <br /> <label>: </label> <br /> <input type="text" name="author" value="<?=$_view['form']['author'] ?>" /> <br /> <label> : </label> <br /> <textarea name="comment"><?=$_view['form']['comment'] ?></textarea> <br /> <label> ( 1 10): </label> <br /> <input type="text" name="mark" value="<?=$_view['form']['mark'] ?>" /> <br /> <button type="submit"></button> </form>
अब आप ब्राउज़र में पेज को रिफ्रेश कर सकते हैं और फॉर्म के माध्यम से डेटा जोड़ने का प्रयास कर सकते हैं। डेटा जोड़ा जाता है, लेकिन रीडायरेक्ट के बाद एक अनुपलब्ध दृश्य के बारे में एक संदेश दिखाई देता है। आइए इसे बनाएं (फ़ाइल को
index.phtml कहा जाएगा)।
अब एक्शन
इंडेक्स पर जाएं । वहां कोड डालें:
<?php
जैसा कि आप देख सकते हैं, हमने फिर से nonexistent
getAllBooks()
फ़ंक्शन का उपयोग किया। हमारे मॉडल में इन पंक्तियों को जोड़ें:
function getAllBooks() {
दृश्य पर जाएं और इसे वहां डालें:
<?php if($_view['books']) foreach ($_view['books'] as $v) { ?> #<?=$v['id'] ?>: <a href="<?=baseUrl('books/view/id/'.$v['id']) ?>"><?=$v['title'] ?></a><br /> <?php } ?>
यहां हमारे लिए एक नया
baseUrl()
फंक्शन आया। सही लिंक बनाने के लिए यह आवश्यक है। इस मामले में, आप साइट के रूट से लिंक बनाकर इसके बिना कर सकते हैं, लेकिन यह अनावश्यक परेशानी को समाप्त करता है, विशेष रूप से उन लोगों के पास जो एक साइट पर स्थित है जैसे कि
लोकलहोस्ट / फ्रेमवर्क / टेस्ट ।
इस क्रिया के साथ आप समाप्त कर सकते हैं। हम तार्किक श्रृंखला में अगली कार्रवाई को पास करते हैं -
दृश्य । मैं आपको पूरा कोड यहाँ दूंगा, क्योंकि सादृश्य द्वारा सब कुछ स्पष्ट है।
viewAction.php:
<?php loadModel('books');
मॉडल के लिए जोड़:
function getBook($id) {
देखें (इसे बनाना न भूलें):
<strong>: </strong> <?=$_view['book']['title'] ?><br /> <strong>: </strong> <?=$_view['book']['author'] ?><br /> <strong>: </strong><br /> <?=$_view['book']['comment'] ?><br /> <strong>: </strong> <?=$_view['book']['mark'] ?> 10<br /> <a href="<?=baseUrl('books/edit/id/'.$_view['book']['id']) ?>"></a><br /> <a href="<?=baseUrl('books/delete/id/'.$_view['book']['id']) ?>"></a><br />
अब
संपादित करेंeditAction.php:
loadModel('books');
कृपया ध्यान दें कि हम इस कार्रवाई के लिए एक दृश्य नहीं बना रहे हैं, क्योंकि हम
नए .
phtml से
प्राप्त फॉर्म का उपयोग करेंगे
मॉडल में एक फ़ंक्शन जोड़ें:
function updateBook($id, $values) {
और अंत में, अंतिम क्रिया
हटा दी जाती है ।
deleteAction.php:
loadModel('books'); deleteBook(getParam('id')); redirect('books');
मॉडल के लिए समारोह:
function deleteBook($id) {
इस क्रिया को सिद्धांत रूप में प्रस्तुति की आवश्यकता नहीं है, क्योंकि यह आपको वैसे भी अनुक्रमणिका क्रिया पर पुनर्निर्देशित करेगी।
अब आप परिणामी कोड को थोड़ा सुधार सकते हैं। जैसा कि आपने देखा होगा, हर बार, कार्रवाई की शुरुआत में, हमने एक ही ऑपरेशन -
loadModel('books')
। चलिए इसे अलग से निकालते हैं। ऐसा करने के लिए, हमारे नियंत्रक के फ़ोल्डर में
_init.php फ़ाइल बनाएं और इस पंक्ति को वहां रखें, और इसे नियंत्रकों से हटा दें। लिंक को पोक करें और सुनिश्चित करें कि परियोजना काम कर रही है।
अब हम एक नया रिकॉर्ड और सभी रिकॉर्ड की एक सूची बनाने के लिए लिंक करेंगे। ऐसा करने के लिए, फ़ाइल
ऐप / विचार / लेआउट / default.phtml खोलें।
content()
दिनचर्या लेआउट में दृश्य की सामग्री को प्रदर्शित करती है। इसके ऊपर सीधे कोड की निम्नलिखित पंक्तियाँ जोड़ें:
<a href="<?=baseUrl('books') ?>"> </a><br /> <a href="<?=baseUrl('books/new') ?>"> </a><br />
अब सूची और लिंक फॉर्म के लिंक आवेदन के सभी पृष्ठों पर होंगे।
मार्ग
आइए फैसला करें कि प्रत्येक क्रिया का पता आदर्श रूप से कैसा होना चाहिए। मैं इस विकल्प का सुझाव देता हूं:
'किताबें' => '',
'किताबें / नया' -> 'पुस्तक / नया',
'किताबें / दृश्य / आईडी / {आईडी}' -> पुस्तक / {आईडी} ',
'किताबें / संपादन / आईडी / {आईडी}' -> पुस्तक / {आईडी} / संपादित करें ',
'किताबें / डिलीट / आईडी / {आईडी}' -> 'बुक / {आईडी} / डिलीट',
आदेश में यह काम करने के लिए?
विन्यास / राऊटर को खोलें।
फाइल को टाइप करें और एरे को निम्न फॉर्म में डालें:
return array(
अब,
पुस्तक 1 पर, ID
1 के साथ पुस्तक के बारे में जानकारी खुलेगी। शेष समान है।
मार्ग सिंटैक्स के बारे में थोड़ा और
साहचर्य सरणी की कुंजी मार्ग पैटर्न है, और मान सभी मापदंडों के साथ वास्तविक क्रिया पता है। गतिशील भागों को ब्रेसिज़ में संलग्न किया गया है। ध्यान रखें कि प्रत्येक रूट ब्लॉक या तो पूरी तरह से स्थिर या पूरी तरह से गतिशील हो सकता है, अर्थात्, ऐसी प्रविष्टि -
'user/{id}' => 'users/profile/id/{id}'
- सही होगी, और प्रविष्टि
'id{id}' => 'users/profile/id/{id}'
- गलत है,
अर्थात् , फिलहाल,
yourite.com/id33523 जैसे लिंक प्राप्त नहीं किए जा सकते हैं, हालांकि मैं निकट भविष्य में इसे ठीक करने जा रहा हूं।
रूट डेटा प्रकार (स्ट्रिंग - स्ट्रिंग, स्ट्र?, पूर्णांक - इंट, पूर्णांक; आंशिक - फ्लोट, वास्तविक) और प्रेषित मूल्य की अधिकतम लंबाई द्वारा फ़िल्टर किए जाते हैं। फ़िल्टर जोड़ने के लिए, पैरामीटर नाम के बाद, एक ऊर्ध्वाधर बार के साथ फ़िल्टर निर्दिष्ट करें। उदाहरण:
निष्कर्ष
वास्तव में, यह इस ढांचे की सभी विशेषताएं नहीं हैं, लेकिन लेखन के थक गए हैं =)। मुझे उम्मीद है कि कम से कम किसी को मेरी रचना उपयोगी लगेगी, अन्यथा, मुझे यहाँ क्यों सूली पर चढ़ाया गया है?
लिंक डाउनलोड करें
GitHub:
github.com/SazereS/NoNameFramework.gitYandex.Disk:
yadi.sk/d/ZAnE6Yq_4kgBeड्रॉपबॉक्स:
dl.dropboxusercontent.com/u/85783372/NoNameFramework.zipट्रोलोलॉड:
troloload.ru/f/5979_nonameframework.zipबड़े कृपया! त्रुटियों के साथ अपनी नाक को दबाएं और कमजोरियों को इंगित करने में संकोच न करें। यहां तक कि "यदि आपके पास कोई तर्क नहीं है तो प्रोग्रामिंग को छोड़ दिया गया है" जैसे बयानों का समर्थन किया जाएगा। अग्रिम धन्यवाद!