Bagian tanpa dosa php. Menyertakan file dalam PHP menggunakan include dan require

Saat membuat situs dengan menulis sendiri (tanpa menggunakan kerangka kerja, CMS, dan hal-hal modis lainnya yang membuat hidup lebih mudah bagi pengembang web), kami dihadapkan pada masalah dalam mengedit situs ketika ada banyak halaman.

Agar kita tidak perlu mengubah bagian situs yang sama di setiap file halaman, kita dapat menggunakan instruksi PHP yang nyaman yang memungkinkan kita untuk memasukkan file dengan kode yang diperlukan di semua halaman dengan satu baris kode. Kemudian, dengan mengubah konten file yang disertakan, kami mengubah kode di semua halaman situs. Nyaman, tidak peduli bagaimana penampilan Anda.

Sekarang mari kita lihat lebih dekat bagaimana menghubungkan file:

Menggunakan termasuk dan membutuhkan

Anda tidak akan dapat menemukan perbedaan mendasar antara kedua instruksi ini dengan semua keinginan Anda, tetapi ada nuansa:

Jika kesalahan terjadi selama eksekusi perintah yang diperlukan, parser akan menerima respons kesalahan fatal dan eksekusi kode halaman akan berhenti, sementara include hanya akan mengeluarkan peringatan dan eksekusi file akan dilanjutkan (file tidak akan terhubung).

Mari kita ambil contoh sederhana untuk pemahaman topik yang lebih baik.

Kami memiliki minisite kami di mana header dan footer sama di semua halaman, dan isi dokumen berubah.

Kami membuat file header.php dan footer.php di mana kami menempatkan kode yang akan sama di semua halaman, dan di file index.php dan newpage.php kami akan menghubungkan bagian statis. Hasilnya, kita mendapatkan:

Konten header.php

< header> < nav> < a href= "newpage1.php" title= "item menu" >item menu < a href= "newpage2.php" title= "item menu" >item menu < a href= "newpage3.php" title= "item menu" >item menu

Konten footer.php

< footer> < p>Dibuat oleh kami

Konten halaman lain dari situs

situs mini

Banyak informasi bermanfaat

Sebagai hasil dari memuat halaman kami, kami mendapatkan gambar berikut:

Seperti yang kita lihat, semuanya bekerja dengan baik.

Saya ingin menarik perhatian Anda pada fakta bahwa kami menjalankan contoh di server Denwer lokal, karena PHP memerlukan server dengan dukungannya agar PHP berfungsi. Jika Anda membuat situs web dalam folder sederhana di PC, tidak ada yang akan berhasil.

Dalam contoh di atas, kami menggunakan header require dan footer include. Apa yang akan digunakan di situs Anda terserah Anda. Seperti yang telah disebutkan, tidak ada banyak perbedaan di antara mereka. Kecuali memerlukan dianggap sebagai pernyataan yang agak ketat.

Bahkan, garis cukup salin seluruh isi file, jalur yang kami tunjukkan, ke dalam dokumen tempat file itu berada.

Menggunakan include _once dan require _once

Saat bekerja di situs, masalah mungkin muncul terkait dengan fakta bahwa potongan kode yang sama disertakan dalam file yang sama berulang kali.

Misalkan ini terjadi karena fakta bahwa beberapa orang bekerja di situs, dan ketika kode digabungkan, insiden seperti itu muncul ...

Pengembang sering menggunakan pernyataan include_once dan require_once untuk menghilangkan kemungkinan masalah seperti itu. Prinsip operasinya persis sama dengan include dengan require, tetapi jika file dalam instruksi tersebut telah terhubung ke kita, maka koneksi ulang tidak akan terjadi.

Kerugian dari metode ini termasuk fakta bahwa ia bekerja lebih lambat dan lebih intensif secara komputasi daripada pendahulunya termasuk dengan require, karena menjadi perlu untuk mengingat semua file yang disertakan dan membandingkannya untuk menghindari duplikasi kode.

Pada catatan

  • Agar lebih mudah membedakan antara file halaman situs dan file fragmennya, yang kami sertakan di dalamnya, file yang biasanya disertakan menambahkan partikel inc ke namanya. Mempertimbangkan pendekatan ini dalam contoh kita, kita akan mendapatkan file header.inc.php dari file header.php dan seterusnya. Pendekatan ini dapat membuat urutan besarnya lebih mudah untuk memahami struktur situs di masa depan.
  • Kode dari file yang kita hubungkan mewarisi cakupan baris di mana ia terhubung. Tobish tepat di dalam halaman itu akan memiliki lingkup global, dan di dalam fungsi itu akan memiliki lingkup lokal.
  • Kita bisa menggunakan include dengan require dimanapun kita mau. Bahkan di dalam skrip.
Daftar isi dokumen

1. fungsi config_load

Sintaksis:
(file config_load = "nama file")

Fungsi ini digunakan untuk memuat variabel dari file konfigurasi ke dalam template. Selain nama file yang dimuat, fungsi ini dapat memiliki beberapa parameter tambahan. Misalnya, parameter bagian, yang menentukan nama bagian yang akan dimuat. Informasi lebih lanjut tentang ini dan parameter lainnya dapat diperoleh dari dokumentasi Smarty.

Contoh:
(file config_load = "task.conf")

2. Fungsi tangkap

Sintaksis:

(capture name = "block_name"
tetapkan = "nama_variabel") ...
(/ menangkap)

Fungsi ini dirancang untuk mengumpulkan output template ke dalam variabel alih-alih menampilkannya di layar.

Apa pun antara (capture name = "varname") dan (/ capture) akan ditulis ke variabel bernama varname. Konten yang ditangkap dengan cara ini dapat digunakan dalam template menggunakan variabel khusus $ smarty.capture.varname, di mana varname adalah nilai yang diteruskan ke atribut name dari fungsi capture. Jika tidak ada nama variabel yang ditentukan, nama default akan digunakan.

Penetapan parameter kedua menentukan nama variabel yang akan diberikan nilai keluaran yang ditangkap. Parameter ini, seperti nama, adalah opsional.

3. Fungsi bagian

Sintaksis:

(nama bagian = "nama_bagian"
loop = "variable_for_out_number_iterations"
[, mulai = "start_position_index"]
[, langkah = "langkah"] [, maks = "maksimum_iterasi"]
[, tampilkan = "tampilkan_atau_bagian"]) ...
(/ bagian)

Bagian Bagian adalah loop untuk melintasi elemen array. Parameter yang dibutuhkan adalah name, yang digunakan untuk mengatur nama bagian, dan loop, yang merupakan variabel yang menentukan jumlah iterasi loop.

Sebagai aturan, loop adalah variabel tipe array, dan jumlah iterasi bagian sama dengan jumlah elemen array ini. Untuk menampilkan variabel di dalam satu lingkaran, Anda perlu menunjukkan nama bagian dalam tanda kurung siku setelah nama variabel.

(nama bagian = lingkaran seni = $ judul)

Judul: ($judul)

(/ bagian)

Contoh 15.8. Loop untuk mengulangi elemen array

4. Fungsi foreach

Sintaksis:

(foreach dari = "array_name"
item = "nama_item_saat ini")
... (/ untuk setiap)

Selain itu, Anda dapat menggunakan kunci atribut tambahan - nama kunci untuk elemen larik saat ini dan nama - nama loop, yang dengannya Anda dapat mengakses propertinya. Atribut from dan item wajib diisi.

Loop foreach adalah alternatif untuk loop bagian. Fungsi foreach sangat mirip dengan loop foreach PHP.
(foreach from = $ artikel item = seni)
Judul: ($ seni)

(/ untuk setiap)

Contoh 15.9. Lingkaran depan

Loop foreach memiliki propertinya sendiri. Anda dapat mengaksesnya dengan cara ini: ($ smarty.foreach.foreachname.varname), di mana foreachname adalah nama loop yang ditentukan oleh parameter name-nya dan varname adalah nama properti.

5. Operator if, elseif, else

Sintaksis:

(jika ekspresi) action_block
(ekspresi lain1) action_block1
(lain) action_block2
(/ jika)

Tindakan operator ini hampir sama dengan PHP if…elseif…else operator.

Operator perbandingan berikut dapat digunakan dalam ekspresi: eq, ne, neq, gt, lt, lte, le, gte, ge, genap, ganjil, tidak genap, tidak ganjil, tidak, mod, div oleh, genap oleh, ganjil oleh, ==,! =,>,<, <=, >=. Masing-masing harus dipisahkan dari nilai-nilai di sekitarnya dengan spasi. Anda dapat menggunakan tanda kurung dalam ekspresi dan memanggil fungsi php.

(jika $nama eq "Vasya")
Selamat datang, Vasya.
(elseif $ nama eq "Petya")
Selamat datang, Petya.
(lain)
Selamat datang. Siapa kamu?
(/ jika)

Contoh 15.10. Jika, elseif, pernyataan lain

(* contoh ini tidak akan berfungsi karena tidak ada spasi di sekitar operator pembanding *)
(jika $nama == "Vasya" || $nama == "Petya")
...
(/ jika)
Contoh 15.11. Contoh rusak

Sebuah artikel yang mengeksplorasi elemen bagian HTML dari kategori sectioning.

Tujuan dari elemen bagian

Elemen bagian digunakan untuk membuat bagian dalam dokumen yang mengelompokkan beberapa konten subjek bersama-sama. Untuk setiap bagian dalam dokumen, nama (topik) harus ditunjukkan. Ini biasanya dilakukan dengan header (elemen h1-h6).

Judul bagian

Konten bagian ...

Elemen bagian biasanya digunakan dalam situasi berikut:

  • untuk menandai bagian dalam bagian. Misalnya, untuk menandai bab dalam artikel, tab dalam kotak dialog, bagian dalam disertasi, dll.
  • mengelompokkan beberapa bagian menjadi satu kelompok tematik. Misalnya, untuk mengelompokkan berita terbaru di situs, komentar pada sebuah artikel, dll.

Dengan demikian, elemen bagian hanya boleh digunakan untuk beberapa konten jika memiliki judul dan merupakan bagian dari sesuatu yang lain.

Menggunakan elemen bagian

Misalnya, pertimbangkan potongan kode halaman yang berisi artikel dengan komentar. Setiap komentar yang diposting oleh pengguna di halaman berisi beberapa konten lengkap dan oleh karena itu dapat dianggap sebagai elemen artikel. Tetapi, pada saat yang sama, semua komentar mewakili kelompok tematik tertentu, dan oleh karena itu mereka dapat ditempatkan di elemen bagian, yaitu. elemen ini akan mengelompokkan semua komentar ini di halaman bersama-sama.

Judul artikel

Komentar (1)

Judul komentar

teks komentar...

Judul komentar

teks komentar...

Judul Artikel Komentar Judul Komentar Judul Komentar

Misalnya, pertimbangkan untuk menggunakan elemen bagian untuk membuat bagian dalam elemen artikel:

Judul buku

Bagian pertama

Bagian dua

Bab Tiga

Lampiran A

Lampiran B

Contoh di atas akan memiliki garis besar sebagai berikut:

Judul Buku Bab Satu Bab Dua Bab Tiga Lampiran A Lampiran B

Batasan saat menggunakan elemen bagian

Elemen bagian dalam HTML 5 bukanlah elemen umum untuk mengelompokkan konten, mis. itu tidak boleh digunakan untuk membungkus konten apa pun yang Anda suka. Tujuan utamanya adalah untuk menambahkan semantik ke dokumen dan membuat garis besarnya.

Ketika seorang penulis perlu mengelompokkan konten hanya untuk menata atau memanipulasinya dalam JavaScript, tempat terbaik adalah mereka menggunakan elemen div. Elemen div, tidak seperti elemen bagian, tidak menambahkan semantik ke dokumen dan tidak berpartisipasi dalam membuat garis besarnya (garis besar).

Perbedaan antara elemen bagian dan artikel

Bagian dan elemen artikel, meskipun sekilas tampak sangat mirip, memiliki arti semantik yang berbeda. Elemen artikel dimaksudkan untuk mengelompokkan konten yang lengkap, mandiri, dan dapat dilihat secara terpisah dari konten halaman lainnya. Dan elemen bagian membawa makna semantik yang berbeda, ini dimaksudkan untuk mengelompokkan konten yang merupakan bagian integral dari sesuatu yang lain.

Tetapi bagaimana seorang penulis dapat mengetahui apa isi suatu halaman? Mari kita lihat ini dengan contoh potongan artikel. Cuplikan adalah bagian dari artikel, dan oleh karena itu elemen bagian harus digunakan untuk mengelompokkan kontennya. Tetapi fragmen yang sama, yang sudah ditinggalkan sebagai komentar, akan mewakili sesuatu yang utuh, lengkap. Oleh karena itu, dalam konteks ini, elemen artikel dapat digunakan untuk mengelompokkannya. Tapi, tentu saja, seseorang bisa bernalar, dan sebaliknya. Oleh karena itu, elemen mana yang digunakan untuk mengelompokkan konten dalam banyak kasus bergantung pada opini subjektif Anda sebagai penulis. Namun hal terpenting dalam pendekatan ini adalah mempertahankan posisi yang dipilih. Oleh karena itu, semakin konsisten penulis dalam menciptakan struktur, semakin banyak makna yang dapat ia masukkan ke dalamnya.

). Setiap tag (bagian) harus punya pasangan (/ bagian)... Parameter yang diperlukan adalah nama dan lingkaran... Nama loop (bagian) dapat berupa nama apa saja yang terdiri dari huruf, angka, dan garis bawah. Siklus (bagian) dapat bersarang dan nama bersarang (bagian) harus unik di antara mereka sendiri. Variabel lingkaran(biasanya array nilai) menentukan jumlah iterasi loop. Saat mencetak variabel di dalam bagian, nama bagian harus ditunjukkan di sebelah nama variabel di dalam tanda kurung siku. (bagian lain) dijalankan jika parameter lingkaran tidak mengandung nilai.

Nama atribut Jenis Yg dibutuhkan Bawaan Keterangan
nama rangkaian Ya t / a Nama bagian
lingkaran Campuran Ya t / a Nilai yang menentukan jumlah iterasi loop.
Mulailah bilangan bulat Tidak 0 Indeks posisi di mana loop akan dimulai. Jika nilainya negatif, maka posisi awal dihitung dari akhir array. Misalnya, jika ada 7 elemen dalam variabel loop dan nilai atribut awal adalah -2, maka indeks awal akan menjadi 5. Nilai tidak valid (nilai di luar array) secara otomatis terpotong ke nilai valid terdekat.
melangkah bilangan bulat Tidak 1 Nilai langkah yang digunakan untuk melintasi larik. Misalnya, langkah = 2 menunjukkan traversal array dengan elemen 0,2,4 ... Jika langkahnya negatif, maka array akan dilalui dalam arah yang berlawanan.
maksimal bilangan bulat Tidak 1 Jumlah maksimum pengulangan perulangan.
menunjukkan boolean Tidak benar Menunjukkan apakah bagian ini akan ditampilkan atau tidak

Catatan

Dimulai dengan Smarty 1.5.0, sintaks variabel properti sesi telah diubah dari (% sectionname.varname%) menjadi ($ smarty.section.sectionname.varname). Sintaks lama masih didukung, tetapi Anda hanya akan melihat contoh sintaks baru.

index digunakan untuk menampilkan indeks array saat ini, mulai dari nol (atau pada atribut awal, jika ditentukan) dan meningkat satu (atau dengan nilai atribut langkah, jika ditentukan).

Catatan Teknis

Jika atribut langkah dan awal tidak ditentukan, maka indeks sama dengan atribut bagian iterasi, kecuali bahwa itu dimulai pada 0, bukan 1.

iterasi digunakan untuk menampilkan nomor iterasi saat ini dari loop.

Catatan

Nilai ini tidak tergantung pada properti awal, langkah, dan maks, tidak seperti properti indeks. Juga, iterasi mulai dari satu, bukan dari nol seperti indeks. rownum adalah sinonim untuk properti iterasi, mereka bekerja dengan cara yang sama.

Contoh 7.38. properti (bagian) iterasi

assign("custid", $id); ?> (nama bagian = cu loop = $ custid start = 5 langkah = 2) iterasi = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ bagian)

Hasil dari contoh ini:

Iterasi = 1 indeks = 5 id = 3005
iterasi = 2 indeks = 7 id = 3007
iterasi = 3 indeks = 9 id = 3009
iterasi = 4 indeks = 11 id = 3011
iterasi = 5 indeks = 13 id = 3013
iterasi = 6 indeks = 15 id = 3015

Contoh ini menggunakan properti iterasi untuk mencetak judul tabel setiap lima baris (menggunakan (jika) dengan operator mod).

(nama bagian = co loop = $ kontak) (jika $ smarty.section.co.iteration% 5 == 1) (/ jika) (/ bagian)
Nama>RumahSelSurel
melihat ($ kontak.nama) ($ kontak. rumah) ($ kontak.sel) ($ kontak. email)