Günahsız bölüm php. İnclude ve require kullanarak PHP'deki dosyaları dahil etmek. Bölüm öğesini kullanırken sınırlamalar

). Her etiket (Bölüm) bir çifti olmalı (/ Bölüm) ... Gerekli parametreler isim ve döngü ... Döngünün (bölüm) adı, harflerden, sayılardan ve alt çizgilerden oluşan herhangi bir ad olabilir. Döngüleri (Bölüm) iç içe olabilir ve iç içe geçmiş isimler (bölüm) kendi aralarında benzersiz olmalıdır. Değişken döngü (genellikle bir değerler dizisi) döngü yinelemelerinin sayısını belirler. Bir bölüm içindeki değişkenleri yazdırırken, bölüm adı değişken adının yanında köşeli parantez içinde belirtilmelidir. (bölüm) parametre ise çalıştırılır döngü değer içermez.

Öznitelik adı Bir tür Zorunlu Varsayılan Açıklama
isim dizi Evet yok Bölüm adı
döngü karışık Evet yok Döngü yinelemelerinin sayısını belirleyen bir değer.
başlat tamsayı Hayır 0 Döngünün başlayacağı konumun dizini. Değer negatifse, başlangıç \u200b\u200bkonumu dizinin sonundan hesaplanır. Örneğin, döngü değişkeninin 7 öğesi varsa ve başlangıç \u200b\u200bözniteliği değeri -2 ise, başlangıç \u200b\u200bdizini 5 olacaktır. Geçersiz değerler (dizi dışındaki değerler) otomatik olarak en yakın geçerli değere kesilir.
adım tamsayı Hayır 1 Dizide gezinmek için kullanılan adım değeri. Örneğin, adım \u003d 2, dizinin 0,2,4 ... öğeleriyle çapraz geçişini belirtir. Adım negatifse, dizi ters yönde geçecektir.
max tamsayı Hayır 1 Maksimum döngü yineleme sayısı.
göstermek boole Hayır doğru Bu bölümün gösterilip gösterilmeyeceğini gösterir

Not

Smarty 1.5.0'dan başlayarak, oturum özelliği değişkenlerinin sözdizimi (% bölümadı.varname%) yerine ($ akıllıy.section.sectionname.varname) olarak değiştirildi. Eski sözdizimi hala desteklenmektedir, ancak yalnızca yeni sözdiziminin örneklerini göreceksiniz.

dizin, dizinin sıfırdan (veya belirtilmişse başlangıç \u200b\u200bözniteliğinden) başlayıp bir artarak (veya belirtilmişse adım özniteliğinin değerine göre) geçerli dizinini görüntülemek için kullanılır.

Teknik not

Adım ve başlangıç \u200b\u200böznitelikleri belirtilmezse, dizin 1 değil 0'dan başlaması dışında yineleme bölümündeki öznitelikle aynıdır.

yineleme, döngünün geçerli yineleme numarasını görüntülemek için kullanılır.

Not

Bu değer, index özelliğinden farklı olarak start, step ve max özelliklerinden bağımsızdır. Ayrıca yinelemeler, endeksler gibi sıfırdan ziyade birde başlar. rownum yineleme özelliğinin eşanlamlısıdır, aynı şekilde çalışırlar.

Örnek 7.38. özellik (bölüm) yineleme

atama ("custid", $ id); ?\u003e (bölüm adı \u003d cu döngüsü \u003d $ custid başlangıç \u200b\u200b\u003d 5 adım \u003d 2) yineleme \u003d ($ smarty.section.cu.iteration) dizin \u003d ($ smarty.section.cu.index) id \u003d ($ custid)
(/ Bölüm)

Bu örneğin sonucu:

Yineleme \u003d 1 dizin \u003d 5 id \u003d 3005
yineleme \u003d 2 indeks \u003d 7 id \u003d 3007
yineleme \u003d 3 indeks \u003d 9 id \u003d 3009
yineleme \u003d 4 indeks \u003d 11 id \u003d 3011
yineleme \u003d 5 indeks \u003d 13 id \u003d 3013
yineleme \u003d 6 indeks \u003d 15 id \u003d 3015

Bu örnek, tablo başlığını her beş satırda bir yazdırmak için yineleme özelliğini kullanır (mod operatörüyle (if) kullanır).

(bölüm adı \u003d ortak döngü \u003d $ kişiler) ($ smarty.section.co.iteration% 5 \u003d\u003d 1 ise) (/ Eğer) (/ Bölüm)
İsim\u003eEvHücreE-posta adresi
görünüm ($ kişiler.adı) ($ kişiler.home) ($ kişiler.cell) ($ kişiler.email)


Belge içindekiler tablosu

1. config_load işlevi

Sözdizimi:
(config_load file \u003d "dosya adı")

Bu işlev, değişkenleri yapılandırma dosyalarından bir şablona yüklemek için kullanılır. Yüklenen dosyanın adının yanı sıra, bu işlevin birkaç ek parametresi olabilir. Örneğin, yüklenecek bölümün adını belirten bölüm parametresi. Bunlar ve diğer parametreler hakkında daha fazla bilgi Smarty belgelerinden elde edilebilir.

Misal:
(config_load file \u003d "task.conf")

2. Yakalama işlevi

Sözdizimi:

(yakalama adı \u003d "blok_adı"
atama \u003d "değişken_adı") ...
(/ ele geçirmek)

Bu işlev, şablon çıktısını ekranda görüntülemek yerine bir değişkene toplamak için tasarlanmıştır.

(Capture name \u003d "varname") ile (/ capture) arasındaki her şey, varname adlı bir değişkene yazılacaktır. Bu şekilde yakalanan içerik şablonda $ smarty.capture.varname özel değişkeni kullanılarak kullanılabilir; burada varname, yakalama işlevinin name özniteliğine iletilen değerdir. Değişken adı belirtilmezse, varsayılan ad kullanılır.

İkinci parametre ataması, yakalanan çıktı değerinin atanacağı değişkenin adını belirtir. Ad gibi bu parametre isteğe bağlıdır.

3. Bölüm işlevi

Sözdizimi:

(bölüm adı \u003d "bölüm_adı"
loop \u003d "variable_for_setting_number_iterations"
[, start \u003d "start_position_index"]
[, step \u003d "adım"] [, max \u003d "maksimum_iterasyonlar"]
[, show \u003d "show_or_section"]) ...
(/ Bölüm)

Bölüm Bölümü, dizi öğelerinin geçişi için bir döngüdür. Gerekli parametreler, bölüm adını ayarlamak için kullanılan ad ve döngü yinelemelerinin sayısını belirleyen bir değişken olan döngüdür.

Kural olarak, döngü bir dizi değişkenidir ve bölüm yinelemelerinin sayısı bu dizinin elemanlarının sayısına eşittir. Döngü içindeki bir değişkeni görüntülemek için, değişken adından sonra köşeli parantez içinde bölüm adını belirtmeniz gerekir.

(bölüm adı \u003d sanat döngüsü \u003d $ başlık)

Başlık: ($ başlık)

(/ Bölüm)

Örnek 15.8. Dizi öğelerini yinelemek için döngü

4. foreach işlevi

Sözdizimi:

(foreach from \u003d "dizi_adı"
item \u003d "current_item_name")
... (/ her biri için)

Ek olarak, ek nitelikler anahtarını - dizinin geçerli öğesi için anahtarın adı ve adı - özelliklerine erişebileceğiniz döngünün adını kullanabilirsiniz. Kimden ve öğe özellikleri zorunludur.

Foreach döngüleri, bölüm döngülerine bir alternatiftir. Foreach işlevi PHP foreach döngüsüne çok benzer.
(foreach from \u003d $ makaleler öğe \u003d sanat)
Başlık: ($ sanat)

(/ her biri için)

Örnek 15.9. Foreach döngüsü

Foreach döngülerinin kendi özellikleri vardır. Bunlara şu yolla erişilebilir: ($ smarty.foreach.foreachname.varname), burada foreachname, kendi name parametresiyle belirtilen döngünün adıdır ve varname, özelliğin adıdır.

5. Operatör if, elseif, else

Sözdizimi:

(if ifade) action_block
(elseif ifade1) action_block1
(başka) action_block2
(/ Eğer)

Operatör eylemi hemen hemen PHP operatörü if ... elseif ... else ile aynıdır.

Aşağıdaki karşılaştırma operatörleri ifadelerde kullanılabilir: eq, ne, neq, gt, lt, lte, le, gte, ge, is even, is tuhaf, çift değil, tek değil, not, mod, div by, even by, tek, \u003d\u003d ,! \u003d,\u003e,<, <=, >\u003d. Her biri çevredeki değerlerden boşluklarla ayrılmalıdır. İfadelerde parantez kullanabilir ve php işlevlerini çağırabilirsiniz.

($ isim eq "Vasya" ise)
Hoşgeldin Vasya.
(değilse $ isim eq "Petya")
Hoş geldin Petya.
(Başka)
Hoşgeldiniz. Ve sen kimsin?
(/ Eğer)

Örnek 15.10. If, elseif, else ifadeleri

(* karşılaştırma operatörlerinin etrafında boşluk olmadığından bu örnek çalışmayacaktır *)
($ name \u003d\u003d "Vasya" || $ name \u003d\u003d "Petya" ise)
...
(/ Eğer)
Örnek 15.11. Kırık örnek

Kendi kendine yazılan web siteleri oluştururken (web geliştiricileri için hayatı kolaylaştıran çerçeveler, CMS ve diğer moda şeyler kullanmadan), çok sayıda sayfa olduğunda sitede düzenleme yapma sorunuyla karşı karşıyayız.

Sayfa dosyalarının her birinde sitenin aynı bölümlerini değiştirmek zorunda kalmamak için, kelimenin tam anlamıyla bir satır kod içeren tüm sayfalara gerekli koda sahip dosyaları eklememize izin veren kullanışlı PHP talimatlarını kullanabiliriz. Daha sonra eklenen dosyanın içeriğini değiştirerek sitenin tüm sayfalarındaki kodu değiştiriyoruz. Nasıl göründüğünüz önemli değil.

Şimdi dosyaları bağlamanın yollarına daha ayrıntılı bakalım:

İnclude ve required

Tüm arzunuzla bu iki talimat arasında temel bir fark bulamayacaksınız, ancak nüanslar var:

Require komutunun yürütülmesi sırasında bir hata oluşursa, ayrıştırıcı ölümcül bir hata yanıtı alır ve sayfa kodunun yürütülmesi durur, include yalnızca bir uyarı verir ve dosya yürütülmeye devam eder (dosya basitçe bağlanmaz).

Konuyu daha iyi anlamak için basit bir örnek verelim.

Üstbilgi ve altbilginin tüm sayfalarda aynı olduğu ve belgenin gövdesinin değiştiği mini sitemiz var.

Tüm sayfalarda aynı olacak kodu koyduğumuz header.php ve footer.php dosyalarını oluşturuyoruz ve index.php ve newpage.php dosyalarına statik kısımları bağlayacağız. Sonuç olarak, şunları elde ederiz:

Header.php içeriği

< header> < nav> < a href= "newpage1.php" title= "menü seçeneği" > menü seçeneği < a href= "newpage2.php" title= "menü seçeneği" > menü seçeneği < a href= "newpage3.php" title= "menü seçeneği" > menü seçeneği

Footer.php içeriği

< footer> < p> Bizim tarafımızdan yapılmıştır

Sitenin diğer sayfalarının içeriği

Minisite

Çok sayıda faydalı bilgi

Sayfamızı yüklememizin bir sonucu olarak aşağıdaki resmi alıyoruz:

Gördüğümüz gibi, her şey harika çalışıyor.

PHP'nin çalışması için PHP desteğine sahip bir sunucuya ihtiyaç duyduğundan, örneği yerel Denwer sunucusunda çalıştırdığımızı unutmayın. Bir bilgisayardaki basit bir klasörde bir web sitesi oluşturursanız, hiçbir şey çalışmaz.

Yukarıdaki örnekte, gerekli üstbilgiyi ve dahil altbilgiyi kullandık. Sitelerinizde ne kullanacağınız size kalmış. Daha önce de belirtildiği gibi, aralarında çok fazla fark yok. Gereksinim biraz daha katı bir ifade olarak kabul edilmedikçe.

Aslında çizgi dosyanın tüm içeriğini, belirttiğimiz yolu, içinde bulunduğu belgeye kopyalar.

Dahil _once ve _once gerektirir

Bir site üzerinde çalışırken, aynı kod parçasının bir dosyaya art arda dahil edilmesi nedeniyle sorunlar ortaya çıkabilir.

Bunun, sitede birkaç kişinin çalıştığı ve kodlar birleştirildiğinde böyle bir olay ortaya çıktığı için olduğunu varsayalım ...

Geliştiriciler, bu tür sorunların olasılığını ortadan kaldırmak için genellikle include_once ve require_once ifadeleri kullanır. Onlar için çalışma prensibi, zorunlu ile içerme ile tamamen aynıdır, ancak böyle bir talimattaki dosya zaten bizimkine bağlanmışsa, yeniden bağlantı gerçekleşmeyecektir.

Bu yöntemin dezavantajları, önceki yöntemlere göre daha yavaş ve hesaplama açısından daha yoğun olması gerçeğini içerir, çünkü dahil edilen tüm dosyaları hatırlamak ve kod tekrarını önlemek için bunları karşılaştırmak gerekir.

Bir notta

  • Site sayfalarının dosyaları ile bunlara dahil ettiğimiz parçalarının dosyaları arasında ayrım yapmayı kolaylaştırmak için, genellikle dahil edilen dosyalar ada bir inc parçası ekler. Örneğimizdeki bu yaklaşımı göz önünde bulundurarak, header.inc.php dosyasını header.php dosyasından vb. Alırız. Bu yaklaşım, gelecekte sitenin yapısının anlaşılmasını büyük ölçüde basitleştirebilir.
  • Bağlandığımız dosyadaki kod, bağlı olduğu satırın kapsamını devralır. Tobish, sayfanın hemen içinde küresel bir kapsama sahip olacak ve işlevin içinde yerel bir kapsamı olacaktır.
  • İçerme ile istediğimiz yerde kullanabiliriz. Senaryoların içinde bile.