Günahsız bölüm php. PHP'ye dahil etme ve gerektirme kullanarak dosyaları dahil etme

Kendi kendine yazma üzerine siteler oluştururken (çerçeveler, CMS ve web geliştiricileri için hayatı kolaylaştıran diğer modaya uygun şeyler kullanmadan), çok fazla sayfa olduğunda sitede düzenlemeler yapma sorunuyla karşı karşıya kalıyoruz.

Sayfa dosyalarının her birinde sitenin aynı kısımlarını değiştirmek zorunda kalmamak için, gerekli koda sahip dosyaları tüm sayfalara kelimenin tam anlamıyla bir satır kodla dahil etmemize izin veren kullanışlı PHP talimatlarını kullanabiliriz. Ardından dahil edilen 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, kullanışlı.

Şimdi dosyaları nasıl bağlayacağınıza daha yakından bakalım:

Dahil etme ve gerektirme kullanma

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 meydana gelirse, ayrıştırıcı önemli bir hata yanıtı alır ve sayfa kodunun yürütülmesi durur, içerme yalnızca bir uyarı verir ve dosya yürütmesi devam eder (dosya basitçe çalışmayacaktır). bağlı).

Konunun daha iyi anlaşılması için basit bir örnek verelim.

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

Tüm sayfalarda aynı olacak kodu yerleştirdiğimiz header.php ve footer.php dosyalarını oluşturuyoruz ve index.php ve newpage.php dosyalarında 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

mini site

Çok sayıda faydalı bilgi

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

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

PHP'nin çalışabilmesi için PHP'yi destekleyen bir sunucu gerektirdiğinden, örneği yerel Denwer sunucusunda çalıştırdığımıza dikkatinizi çekmek isterim. PC'deki basit bir klasörde bir web sitesi oluşturursanız hiçbir şey çalışmaz.

Yukarıdaki örnekte, gerekli üstbilgiyi ve altbilgiyi dahil ettik. Sitelerinizde ne kullanacağınız size kalmış. Daha önce de belirtildiği gibi, aralarında çok fazla fark yoktur. Gerektiği sürece biraz daha katı bir ifade olarak kabul edilir.

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

include _once ve require _once kullanımı

Sitede çalışırken, aynı kod parçasının tekrar tekrar aynı dosyada yer almasıyla ilgili sorunlar ortaya çıkabilir.

Diyelim ki bu, sitede birkaç kişinin çalışması nedeniyle oldu ve kodlar birleştirildiğinde böyle bir olay çıktı ...

Geliştiriciler, bu tür sorunların olasılığını ortadan kaldırmak için genellikle include_once ve require_once deyimlerini kullanır. Onlar için çalışma prensibi, require ile include 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ı arasında, kod tekrarını önlemek için dahil edilen tüm dosyaları hatırlamak ve bunları karşılaştırmak gerektiğinden, öncekilerine göre daha yavaş ve hesaplama açısından daha yoğun çalışması yer alır.

bir notta

  • Site sayfalarının dosyaları ile bunlara dahil ettiğimiz parçalarının dosyaları arasında ayrım yapmayı daha kolay hale getirmek için, genellikle dahil edilen dosyalar adına bir inc parçacığı ekler. Örneğimizde bu yaklaşımı göz önünde bulundurarak, header.php dosyasından header.inc.php dosyasını alırdık vb. Bu yaklaşım, gelecekte sitenin yapısını anlamayı büyük ölçüde kolaylaştırabilir.
  • Bağladığı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ı olacak.
  • Require ile include'u istediğimiz yerde kullanabiliriz. Senaryoların içinde bile.
Belge içindekiler

1. config_load işlevi

Sözdizimi:
(config_load dosyası = "dosya adı")

Bu işlev, yapılandırma dosyalarından bir şablona değişkenler yüklemek için kullanılır. Yüklenen dosyanın adına ek olarak, 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 dokümantasyonundan elde edilebilir.

Örnek:
(config_load dosyası = "task.conf")

2. Yakalama işlevi

Sözdizimi:

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

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

(yakalama adı = "varname") ile (/ yakalama) arasındaki herhangi bir ş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 değişkenname, yakalama işlevinin name niteliğine iletilen değerdir. Değişken adı belirtilmemişse, varsayılan ad kullanılacaktır.

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

3. Bölüm işlevi

Sözdizimi:

(bölüm adı = "bölüm_adı"
döngü = "variable_for_out_number_iterations"
[, start = "start_position_index"]
[, adım = "adım"] [, maks = "maksimum_yineleme"]
[, show = "show_or_section"]) ...
(/ Bölüm)

Bölüm Bölüm, dizi öğeleri arasında geçiş yapmak için bir döngüdür. Gerekli parametreler, bölümün 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ü dizi tipi bir değişkendir ve bölüm yineleme sayısı bu dizinin eleman sayısına eşittir. Bir değişkeni bir döngü içinde görüntülemek için, değişken adından sonra bölüm adını köşeli parantez içinde belirtmeniz gerekir.

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

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

(/ Bölüm)

Örnek 15.8. Dizi öğeleri üzerinde yineleme yapmak için döngü

4. foreach işlevi

Sözdizimi:

(foreach = "dizi_adı"ndan
item = "current_item_name")
... (/ her biri için)

Ek olarak, anahtarın ek özniteliklerini kullanabilirsiniz - dizinin geçerli öğesi için anahtarın adı ve adı - özelliklerine erişebileceğiniz döngünün adı. from ve item öznitelikleri gereklidir.

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 = $ makale öğesi = 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 şekilde erişebilirsiniz: ($ smarty.foreach.foreachname.varname), burada foreachname, name parametresi tarafından belirtilen döngünün adıdır ve değişkenname, özelliğin adıdır.

5. Operatör if, elseif, else

Sözdizimi:

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

Operatörün eylemi, PHP if ... elseif ... else operatörüyle hemen hemen 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 double, is single, is not not, is not single, not, mod, div by,even göre, tek göre, ==,! =,>,<, <=, >=. Her biri çevreleyen değerlerden boşluklarla ayrılmalıdır. İfadelerde parantez kullanabilir ve php fonksiyonlarını çağırabilirsiniz.

(eğer $ name eq "Vasya" ise)
Hoş geldin Vasya.
(elseif $ name eq "Petya")
Hoş geldin Petya.
(Başka)
Hoş geldin. 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 *)
(eğer $ isim == "Vasya" || $ isim == "Petya")
...
(/ Eğer)
Örnek 15.11. kırık örnek

Bölümleme kategorisindeki HTML bölüm öğesini araştıran bir makale.

Bölüm öğesinin amacı

Bölüm öğesi, bir belgede bazı konu içeriğini birlikte gruplayan bir bölüm oluşturmak için kullanılır. Belgedeki her bölüm için adı (konu) belirtilmelidir. Bu genellikle başlıklarla (h1-h6 öğeleri) yapılır.

Bölüm başlığı

Bölüm içeriği...

Bölüm öğeleri genellikle aşağıdaki durumlarda kullanılır:

  • Bir bölüm içindeki bölümleri işaretlemek için. Örneğin, bir makaledeki bölümleri, bir iletişim kutusundaki sekmeleri, bir tezdeki bölümleri vb. işaretlemek için.
  • birkaç bölümü tek bir tematik grupta gruplamak için. Örneğin, sitedeki en son haberleri, bir makaleye yapılan yorumları vb.

Bu nedenle, bölüm öğesi yalnızca bir başlığı varsa ve başka bir şeyin parçasıysa bazı içerikler için kullanılmalıdır.

Bölüm öğesini kullanma

Örneğin, yorumlar içeren bir makale içeren bir sayfa kodu pasajı düşünün. Kullanıcı tarafından sayfada yayınlanan yorumların her biri bir miktar eksiksiz içerik içerir ve bu nedenle bir makale öğesi olarak kabul edilebilir. Ancak aynı zamanda, tüm yorumlar belirli bir tematik grubu temsil eder ve bu nedenle bölüm öğesine, yani. bu öğe, sayfadaki tüm bu yorumları birlikte gruplayacaktır.

Makale başlığı

Yorumlar (1)

Yorum başlığı

Yorum metni...

Yorum başlığı

Yorum metni...

Makale Başlığı Yorumlar Yorum Başlığı Yorum Başlığı

Örneğin, bir makale öğesi içinde bölümler oluşturmak için bölüm öğelerini kullanmayı düşünün:

Kitap başlığı

İlk bölüm

İkinci bölüm

Üçüncü bölüm

Ek Bölüm A

Ek B

Yukarıdaki örnekte aşağıdaki ana hat olacaktır:

Kitap Başlığı Birinci Bölüm İkinci Bölüm Üçüncü Bölüm Ek A Ek B

Bölüm öğesini kullanırken sınırlamalar

HTML 5'teki bölüm öğesi, içeriği gruplamak için genel bir öğe değildir, yani. beğendiğiniz herhangi bir içeriği sarmak için kullanılmamalıdır. Ana amacı, belgeye anlambilim eklemek ve ana hatlarını oluşturmaktır.

Bir yazarın içeriği yalnızca JavaScript'te biçimlendirmek veya değiştirmek için gruplaması gerektiğinde, onun için en iyi yer div öğesini kullanmalarıdır. Div öğesi, bölüm öğesinin aksine, belgeye anlam katmaz ve anahattının (anahat) oluşturulmasına katılmaz.

Bölüm ve makale öğeleri arasındaki fark

Bölüm ve makale öğeleri, ilk bakışta çok benzer görünse de, farklı anlamsal anlamlara sahiptir. Makale öğesi, eksiksiz, bağımsız ve sayfa içeriğinin geri kalanından ayrı olarak görüntülenebilen içeriği gruplamaya yöneliktir. Ve bölüm öğesi farklı bir anlamsal anlam taşır, başka bir şeyin ayrılmaz bir parçası olan içeriği gruplandırmayı amaçlar.

Ancak bir yazar, bir sayfadaki bazı içeriğin ne olduğunu nasıl bilebilir? Buna bir makale parçası örneği ile bakalım. Snippet, bir makalenin parçasıdır ve bu nedenle içeriğini gruplamak için bir bölüm öğesi kullanılmalıdır. Ama zaten bir yorum olarak bırakılan aynı parça, bütün, tamamlanmış bir şeyi temsil edecektir. Bu nedenle, bu bağlamda, makale öğesi onu gruplandırmak için kullanılabilir. Ancak, elbette, biri akıl yürütebilir ve bunun tersi de olabilir. Bu nedenle, içeriği gruplamak için hangi öğenin kullanılacağı çoğu durumda bir yazar olarak öznel görüşünüze bağlıdır. Ancak bu yaklaşımda en önemli şey seçilen pozisyonu korumaktır. Bu nedenle, yazar yapıyı oluştururken ne kadar tutarlı olursa, ona o kadar çok anlam katabilir.

). 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ı harf, sayı ve alt çizgiden oluşan herhangi bir ad olabilir. döngüler (Bölüm) iç içe olabilir ve iç içe geçmiş adlar (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ün içindeki değişkenleri yazdırırken, bölüm adı köşeli parantez içinde değişken adının yanında belirtilmelidir. (bölüm başka) parametre çalıştırılırsa döngü hiçbir değer içermez.

Özellik adı Bir çeşit Gerekli Varsayılan Açıklama
isim sicim Evet yok Bölüm adı
döngü karışık Evet yok Döngü yinelemelerinin sayısını belirleyen bir değer.
Başlat tam sayı Numara 0 Döngünün başlayacağı konumun indeksi. Değer negatifse, başlangıç ​​konumu dizinin sonundan hesaplanır. Örneğin bir döngü değişkeninde 7 eleman varsa ve başlangıç ​​öznitelik değeri -2 ise başlangıç ​​dizini 5 olur. Geçersiz değerler (dizi dışındaki değerler) otomatik olarak en yakın geçerli değere kısaltılır.
adım tam sayı Numara 1 Diziyi geçmek için kullanılan adım değeri. Örneğin, adım = 2, 0,2,4 ... öğeleri tarafından dizinin bir geçişini gösterir. Adım negatifse, dizi ters yönde geçecektir.
maksimum tam sayı Numara 1 Maksimum döngü yineleme sayısı.
göstermek boole Numara NS Bu bölümün gösterilip gösterilmeyeceğini belirtir

Not

Smarty 1.5.0'dan itibaren, oturum özelliği değişkenlerinin sözdizimi (% bölümadı.varname%) yerine ($ smarty.bölüm.bölümadı.varadı) olarak değiştirilmiştir. Eski sözdizimi hala desteklenmektedir, ancak yalnızca yeni sözdiziminin örneklerini göreceksiniz.

index , sıfırdan (veya belirtilmişse start niteliğinde) başlayan ve bir (veya belirtilmişse step niteliğinin değeri) artan dizinin geçerli indeksini görüntülemek için kullanılır.

Teknik not

Adım ve başlangıç ​​öznitelikleri belirtilmemişse, dizin 1 yerine 0'dan başlaması dışında yineleme bölümü özniteliği ile 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, sıfır benzeri endeksler yerine bir ile başlar. rownum, yineleme özelliğinin eş anlamlısıdır, aynı şekilde çalışırlar.

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

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

Bu örneğin sonucu:

Yineleme = 1 dizin = 5 kimlik = 3005
yineleme = 2 dizin = 7 kimlik = 3007
yineleme = 3 dizin = 9 kimlik = 3009
yineleme = 4 dizin = 11 kimlik = 3011
yineleme = 5 dizin = 13 kimlik = 3013
yineleme = 6 dizin = 15 kimlik = 3015

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

(bölüm adı = ortak döngü = $ kişiler) (eğer $ smarty.section.co.iteration% 5 == 1) (/ Eğer) (/ Bölüm)
Ad>EvHücreE-posta
görüş ($ kişiler.adı) ($ kişiler.ev) ($ kişiler.hücre) ($ kişiler.e-posta)