पाप रहित खंड php। PHP में फ़ाइलों का उपयोग करना शामिल है और आवश्यकता होती है। अनुभाग तत्व का उपयोग करते समय सीमाएं

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

उत्तरदायी ठहराने के लिए नाम एक प्रकार अनिवार्य चूक विवरण
नाम तार हाँ एन / ए अनुभाग का नाम
पाश मिश्रित हाँ एन / ए एक मान जो लूप पुनरावृत्तियों की संख्या निर्धारित करता है।
शुरू पूर्णांक नहीं 0 उस स्थिति का सूचकांक जिस पर लूप शुरू होगा। यदि मान ऋणात्मक है, तो प्रारंभिक स्थिति की गणना सरणी के अंत से की जाती है। उदाहरण के लिए, यदि लूप वैरिएबल में 7 तत्व हैं और प्रारंभ विशेषता मान -2 है, तो शुरुआती इंडेक्स 5. होगा। अमान्य मान (सरणी के बाहर के मान) स्वचालित रूप से निकटतम वैध मान में काट दिए जाते हैं।
कदम पूर्णांक नहीं 1 सरणी को पीछे करने के लिए उपयोग किया जाने वाला स्ट्राइड मान। उदाहरण के लिए, चरण \u003d 2 तत्व 0,2,4 द्वारा सरणी के एक आघात को इंगित करता है ... यदि चरण नकारात्मक है, तो सरणी विपरीत दिशा में फंस जाएगी।
अधिकतम पूर्णांक नहीं 1 लूप पुनरावृत्तियों की अधिकतम संख्या।
प्रदर्शन बूलियन नहीं सच इंगित करता है कि इस अनुभाग को दिखाना है या नहीं

ध्यान दें

स्मार्टी 1.5.0 के साथ शुरू, सत्र संपत्ति चर के लिए वाक्यविन्यास (% sectionname.varname%) से ($ smarty.section.sectionname.varname) में बदल दिया गया है। पुराना सिंटैक्स अभी भी समर्थित है, लेकिन आप केवल नए सिंटैक्स के उदाहरण देखेंगे।

सूचकांक का उपयोग सरणी के वर्तमान सूचकांक को प्रदर्शित करने के लिए किया जाता है, जो शून्य पर शुरू होता है (या यदि निर्दिष्ट किया गया हो तो प्रारंभ विशेषता पर), या एक से बढ़ कर (या यदि निर्दिष्ट किया गया है, तो चरण विशेषता के मूल्य से)।

तकनीकी नोट

यदि चरण और प्रारंभ विशेषताएँ निर्दिष्ट नहीं हैं, तो सूचकांक पुनरावृत्ति अनुभाग में विशेषता के समान है, सिवाय इसके कि यह 0 पर शुरू होता है, 1 नहीं।

पुनरावृति का उपयोग लूप की वर्तमान पुनरावृत्ति संख्या को प्रदर्शित करने के लिए किया जाता है।

ध्यान दें

यह मान इंडेक्स प्रॉपर्टी के विपरीत स्टार्ट, स्टेप और अधिकतम गुणों से स्वतंत्र है। इसके अलावा, पुनरावृत्तियां सूचकांकों की तरह शून्य के बजाय एक पर शुरू होती हैं। rownum पुनरावृत्ति संपत्ति का एक पर्याय है, वे उसी तरह काम करते हैं।

उदाहरण 7.38। संपत्ति (खंड) पुनरावृत्ति

असाइन करें ("कस्टिड", $ आईडी); ?\u003e (अनुभाग नाम \u003d क्यू लूप \u003d $ कस्टिड प्रारंभ \u003d ५ चरण \u003d २) पुनरावृति \u003d ($ smarty.section.cu.iteration) सूचकांक \u003d ($ smarty.section.cu.index) id \u003d ($ custid)
(/ अनुभाग)

इस उदाहरण का परिणाम:

Iteration \u003d 1 इंडेक्स \u003d 5 आईडी \u003d 3005
पुनरावृति \u003d २ सूचकांक \u003d \u003d आईडी \u003d ३००।
पुनरावृति \u003d ३ सूचकांक \u003d ९ आईडी \u003d ३०० ९
पुनरावृति \u003d 4 सूचकांक \u003d 11 आईडी \u003d 3011
पुनरावृति \u003d 5 सूचकांक \u003d 13 आईडी \u003d 3013
पुनरावृति \u003d 6 सूचकांक \u003d 15 आईडी \u003d 3015

यह उदाहरण प्रत्येक पाँच लाइनों (मॉड ऑपरेटर के साथ (यदि) का उपयोग करता है) तालिका शीर्षक को मुद्रित करने के लिए पुनरावृत्ति गुण का उपयोग करता है।

(अनुभाग नाम \u003d सह लूप \u003d $ संपर्क) (यदि $ smarty.section.co.iteration% 5 \u003d\u003d 1) (/ अगर) (/ अनुभाग)
नाम\u003eघरसेलईमेल
राय ($ contacts.name) ($ contacts.home) ($ contacts.cell) ($ contacts.email)


सामग्री की दस्तावेज़ तालिका

1. config_load फ़ंक्शन

वाक्य - विन्यास:
(config_load फ़ाइल \u003d "फ़ाइल नाम")

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

उदाहरण:
(config_load फ़ाइल \u003d "task.conf")

2. कब्जा समारोह

वाक्य - विन्यास:

(कैप्चर नाम \u003d "block_name"
असाइन करें \u003d "variable_name") ...
(/ कब्जा)

इस फ़ंक्शन को टेम्पलेट आउटपुट को स्क्रीन पर प्रदर्शित करने के बजाय एक चर में इकट्ठा करने के लिए डिज़ाइन किया गया है।

(नाम कैप्चर करें \u003d "varname") और (/ कैप्चर) के बीच कुछ भी varname नामक एक चर को लिखा जाएगा। इस तरह से कैप्चर की गई सामग्री को विशेष चर $ smarty.capture.varname का उपयोग करके टेम्पलेट में उपयोग किया जा सकता है, जहां varname कैप्चर फ़ंक्शन के नाम विशेषता के लिए पारित मूल्य है। यदि कोई चर नाम निर्दिष्ट नहीं है, तो डिफ़ॉल्ट नाम का उपयोग किया जाएगा।

दूसरा पैरामीटर असाइन चर का नाम निर्दिष्ट करता है जिसमें कैप्चर किया गया आउटपुट मान असाइन किया जाएगा। यह पैरामीटर, जैसे नाम, वैकल्पिक है।

3. अनुभाग समारोह

वाक्य - विन्यास:

(अनुभाग नाम \u003d "अनुभाग_नाम"
लूप \u003d "वैरिएबल_पर_आउट_नंबर_परेशन"
[, start \u003d "start_position_index"]
[, चरण \u003d "चरण"] [, अधिकतम \u003d "अधिकतम_ संस्कार"]
[, शो \u003d "show_or_section"]) ...
(/ अनुभाग)

खंड अनुभाग सरणी तत्वों को ट्रेस करने के लिए एक लूप है। आवश्यक पैरामीटर नाम हैं, जिसका उपयोग अनुभाग नाम, और लूप सेट करने के लिए किया जाता है, जो एक चर है जो लूप पुनरावृत्तियों की संख्या निर्धारित करता है।

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

(अनुभाग नाम \u003d कला पाश \u003d $ शीर्षक)

शीर्षक: ($ शीर्षक)

(/ अनुभाग)

उदाहरण 15.8। सरणी तत्वों पर पुनरावृति करने के लिए लूप करें

4. फ़ॉरेस्ट फ़ंक्शन

वाक्य - विन्यास:

(foreach from \u003d "array_name"
आइटम \u003d "current_item_name")
... (/ प्रत्येक के लिए)

इसके अलावा, आप अतिरिक्त विशेषताओं कुंजी का उपयोग कर सकते हैं - सरणी के वर्तमान तत्व के लिए कुंजी का नाम और नाम - लूप का नाम, जिसके साथ आप इसके गुणों तक पहुंच सकते हैं। से और आइटम विशेषताओं की आवश्यकता है।

Foreach छोरों अनुभाग छोरों के लिए एक विकल्प है। Foreach फंक्शन PHP foreach लूप के समान है।
(foreach \u003d $ लेख आइटम \u003d कला से)
शीर्षक: ($ कला)

(/ प्रत्येक के लिए)

उदाहरण 15.9। फॉरच लूप

Foreach छोरों के अपने गुण हैं। आप उन्हें इस तरह से एक्सेस कर सकते हैं: ($ smarty.foreach.foreachname.varname), जहां foreachname अपने नाम पैरामीटर द्वारा निर्दिष्ट लूप का नाम है, और varname संपत्ति का नाम है।

5. ऑपरेटर, अगर, और, तो

वाक्य - विन्यास:

(अगर अभिव्यक्ति) क्रिया_ब्लॉक
(अन्य अभिव्यक्ति 1) कार्रवाई_ब्लॉक 1
(और) एक्शन_ब्लॉक 2
(/ अगर)

ऑपरेटर की कार्रवाई लगभग PHP ऑपरेटर के समान ही है यदि ... और ...।

निम्नलिखित तुलना संचालकों का उपयोग अभिव्यक्तियों में किया जा सकता है: eq, ne, neq, gt, lt, lte, le, gte, ge, सम है, विषम है, सम भी नहीं है, विषम नहीं है, नहीं, mod, div by, यहां तक \u200b\u200bकि, विषम द्वारा, \u003d\u003d,! \u003d;\u003e,<, <=, >\u003d। उनमें से प्रत्येक को रिक्त स्थान द्वारा आसपास के मूल्यों से अलग किया जाना चाहिए। आप अभिव्यक्तियों में कोष्ठक का उपयोग कर सकते हैं और php फ़ंक्शन को कॉल कर सकते हैं।

(यदि $ नाम eq "वस्या")
स्वागत है, वस्या।
(अन्य नाम $ eq "पेट्या")
स्वागत है, पेट्या।
(अन्य)
स्वागत हे। तुम कौन हो?
(/ अगर)

उदाहरण 15.10। यदि, और, कथन

(* यह उदाहरण काम नहीं करेगा क्योंकि तुलना ऑपरेटरों के आसपास कोई रिक्त स्थान नहीं हैं *)
(अगर $ नाम \u003d\u003d "वस्या" || $ नाम \u003d\u003d "पेट्या")
...
(/ अगर)
उदाहरण 15.11। टूटा हुआ उदाहरण

स्व-लेखन पर साइटें बनाते समय (वेब \u200b\u200bडेवलपर्स के जीवन को सरल बनाने वाली फ्रेमवर्क, सीएमएस और अन्य फैशनेबल चीजों का उपयोग किए बिना), हमें बहुत सारे पृष्ठ होने पर साइट पर संपादन करने की समस्या का सामना करना पड़ता है।

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

अब फ़ाइलों को कैसे कनेक्ट करें, इस पर करीब से नज़र डालते हैं:

का उपयोग करना शामिल है और आवश्यकता होती है

आप अपनी सभी इच्छाओं के साथ इन दो निर्देशों के बीच एक बुनियादी अंतर नहीं पा सकेंगे, लेकिन कुछ बारीकियां हैं:

यदि आवश्यक कमांड के निष्पादन के दौरान कोई त्रुटि होती है, तो पार्सर को एक घातक त्रुटि प्रतिक्रिया प्राप्त होगी और पेज कोड का निष्पादन बंद हो जाएगा, जबकि केवल एक चेतावनी जारी करेगा और फ़ाइल निष्पादन जारी रहेगा (फ़ाइल बस कनेक्ट नहीं होगी)।

आइए विषय की बेहतर समझ के लिए एक सरल उदाहरण लेते हैं।

हमारे पास हमारा मिनीसाइट है जिसमें हेडर और फुटर सभी पृष्ठों पर समान हैं, और दस्तावेज़ का शरीर बदल जाता है।

हम फाइल शीर्ष लेख बनाते हैं। php और footer.php जिसमें हम सभी पृष्ठों पर समान कोड रखते हैं, और फाइलों में index.php और newpage.php हम स्थैतिक भागों को जोड़ेंगे। नतीजतन, हम प्राप्त करते हैं:

शीर्ष लेख। सामग्री

< header> < nav> < a href= "newpage1.php" title= "मेनू आइटम" > मेनू आइटम < a href= "newpage2.php" title= "मेनू आइटम" > मेनू आइटम < a href= "newpage3.php" title= "मेनू आइटम" > मेनू आइटम

Footer.php सामग्री

< footer> < p> हमारे द्वारा बनाया गया

अन्य साइट पृष्ठों की सामग्री

minisite

बहुत सारी उपयोगी जानकारी

हमारे पृष्ठ को लोड करने के परिणामस्वरूप, हमें निम्न चित्र मिलते हैं:

जैसा कि हम देख सकते हैं, सब कुछ महान काम करता है।

ध्यान दें कि हमने स्थानीय डेनवर सर्वर पर उदाहरण दिया, क्योंकि PHP को काम करने के लिए PHP के समर्थन के साथ सर्वर की आवश्यकता होती है। यदि आप पीसी में एक साधारण फ़ोल्डर में एक वेबसाइट बनाते हैं, तो कुछ भी काम नहीं करेगा।

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

वास्तव में, रेखा बस फ़ाइल की संपूर्ण सामग्री की प्रतिलिपि बनाता है, जिस पथ को हम इंगित करते हैं, उस दस्तावेज़ में जिसमें वह स्थित है।

का उपयोग करना शामिल है _once और आवश्यकता _once

किसी साइट पर काम करते समय, इस तथ्य के कारण समस्याएं पैदा हो सकती हैं कि कोड का एक ही टुकड़ा बार-बार एक फ़ाइल में शामिल हो।

मान लीजिए यह इस तथ्य के कारण हुआ कि कई लोगों ने साइट पर काम किया, और जब कोड विलय किए गए, तो ऐसी घटना सामने आई ...

डेवलपर्स अक्सर ऐसी समस्याओं की संभावना को खत्म करने के लिए शामिल हैं _ औरce_ आवश्यकता के बयानों का उपयोग करते हैं। उनके लिए ऑपरेशन का सिद्धांत ठीक उसी तरह है जैसा कि आवश्यकता के साथ शामिल है, लेकिन अगर इस तरह के निर्देश में फ़ाइल पहले से ही हमारे से जुड़ी हुई है, तो फिर से कनेक्शन नहीं होगा।

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

एक नोट पर

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