Belajar PHP dan MySQL dari NOL – Part VI (Olah File)

Kembali ke Sekolah

Ketika Anda pertama kali mulai membaca seri ini, saya berjanji bahwa Anda akan memiliki banyak hal yang menyenangkan. Jika Anda adalah tipe sinis, Anda mungkin merasa bahwa aku tidak menepati janjiku. Setelah semua, berapa banyak yang telah Anda benar-benar menyenangkan sejauh ini? Semua yang telah dilakukan adalah mempelajari banyak aturan teoritis, ditambahkan dan dikurangi nomor dari satu sama lain, belajar sepanjang primitif pengambilan keputusan dan pergi-putar dalam lingkaran pengulangan (loop). Hmmm, jika ini bukan tutorial PHP, maka akan jadi seperti taman kanak-kanak …

Aku mendengar Anda.

Dalam segmen saga kami yang berkelanjutan, aku akan mengajari Anda bagaimana melakukan sesuatu yang jelas bukan untuk anak-anak. Ini melibatkan semakin ke bawah dan kotor dengan file di disk anda: pertemuan mereka (kejutan!), Membaca isinya (menjerit) dan! (Kengerian kengerian) menulis data ke mereka!. Semua kegiatan menarik akan berlangsung di bawah naungan file manipulasi API PHP sangat keren, yang memungkinkan Anda untuk melihat dan mengubah atribut file, membaca dan isi daftar direktori, mengubah hak akses file, mengambil file isinya ke berbagai struktur data asli, dan mencari file berdasarkan pola tertentu.

Mari kita mulai!

Menangani Dengan Perawatan

Saya akan mulai dengan sesuatu sederhana: membuka file dan membaca isinya. Mari kita berasumsi bahwa di suatu tempat pada disk Anda, tersembunyi di /usr/local/stuff/that/should/be/elsewhere/recipes/, Anda memiliki file teks yang berisi resep untuk omelet Spanyol yang sempurna. Sekarang Anda ingin membaca isi file ini ke dalam script PHP.

Untuk melakukan hal ini, ada tiga langkah yang berbeda yang harus diikuti:
* Buka file tersebut dan menetapkan itu menangani file.
* Berinteraksi dengan file tersebut, melalui gagangnya, dan ekstrak isinya ke dalam variabel PHP.
* Tutup file.
Berikut adalah skrip PHP yang akan melakukan hal tersebut:

Jalankan script ini melalui browser Web Anda, dan PHP harus mengembalikan isi file.

Sekarang mari saya jelaskan masing-masing dari tiga langkah di atas secara rinci:

Buka file tersebut dan menetapkan itu menangani file

PHP menangani kebutuhan file untuk membaca data dari file. Menangani file ini dapat dibuat dengan fopen () fungsi, yang menerima dua argumen: nama dan path ke file tersebut, dan string menunjukkan “modus” di mana file tersebut akan dibuka (‘r’ untuk membaca).

Tiga modus yang berbeda tersedia untuk digunakan dengan fopen () function. Berikut daftar:

‘r’ – membuka file dalam modus baca

‘w’ – membuka file dalam modus menulis, menghancurkan isi file yang ada

‘a’ – membuka file dalam modus menambahkan, melestarikan isi file yang ada

Berinteraksi dengan file melalui gagangnya dan ekstrak isinya ke dalam variabel PHP

Jika fungsi fopen() berhasil, ia mengembalikan file menangani, $fh, yang dapat digunakan untuk interaksi lebih lanjut dengan file tersebut. Menangani file ini digunakan oleh fungsi fread(), yang membaca file dan memasukkan isinya ke dalam variabel.

Argumen kedua fread () adalah jumlah byte untuk dibaca. Anda biasanya dapat memperoleh informasi ini melalui fungsi filesize(), yang – yang pasti akan menebaknya?! – Mengembalikan ukuran file dalam byte.

Tutup file

Langkah terakhir ini tidak sepenuhnya diperlukan, karena PHP secara otomatis menutup file setelah eksekusi script selesai, tapi menggunakan fclose() adalah kebiasaan baik untuk dikembangkan. Secara eksplisit menutup file dengan fclose() memiliki dua manfaat: ia mengikat berakhir longgar di script Anda, dan Anda memenangkan banyak karma yang baik dari komunitas PHP.

Anda mungkin tidak melihat die() fungsi sebelumnya, baik. Fungsi ini banyak digunakan sebagai mekanisme penanganan kesalahan-primitif. Dalam hal kesalahan fatal, seperti path file yang tidak valid atau hak akses file PHP menjadi seperti yang tidak bisa membacanya, die() berakhir dan secara opsional pengolahan script akan menampilkan pesan kesalahan pengguna-ditentukan menunjukkan mengapa bunuh diri.

Berbeda Pukulan

Sebuah metode alternatif untuk membaca data dari sebuah berkas adalah fungsi file() yang sangat keren, yang membaca berkas tersebut ke dalam array (ingat mereka) dengan satu baris kode?. Setiap elemen array kemudian berisi satu baris dari file tersebut. Untuk menampilkan isi file tersebut, cukup iterate selama dalam array foreach() loop dan mencetak setiap elemen.

Contoh berikut menunjukkan:

Dalam contoh ini, perintah file() membuka file tersebut, membacanya ke array dan menutup file – semua dalam satu, tunggal, gerakan elegan. Setiap elemen array saat ini sesuai dengan sebuah baris dari file tersebut. Sangat mudah untuk mencetak isi file sekarang – hanya meraih yang utama pengolahan array, yang foreach() loop.

Tidak ingin data dalam array? Coba fungsi file_get_contents(), baru dalam PHP 4.3.0 dan PHP 5.0, yang berbunyi seluruh file ke dalam string:

Siapa aku bercanda? Saya selalu menggunakan fungsi satu-baris yang disebutkan di atas bukan urutan tiga baris fopen(), fread() dan fclose(). Kemalasan mengalahkan segalanya.

Ketika Kemalasan adalah sebuah Kebajikan

PHP juga menawarkan dua fungsi yang sangat berguna untuk mengimpor file ke dalam script PHP: fungsi include() dan require(). Fungsi ini dapat digunakan untuk menghisap mengunci file eksternal, saham dan barel menjadi script PHP, yang sangat berguna jika, misalnya, Anda memiliki aplikasi modular yang dipecah kodenya di file di lokasi yang terpisah.

Cara terbaik untuk memahami kegunaan ini include() dan require() fungsi ini dengan sebuah contoh. Asumsikan bahwa di situs Web Anda, Anda memiliki menu bar standar di bagian atas setiap halaman, dan pemberitahuan hak cipta standar di bagian bawah. Daripada menyalin dan menyisipkan header dan footer kode pada masing-masing halaman, “PHP guru” cukup buat file terpisah untuk header dan footer, dan impor mereka di bagian atas dan bawah masing-masing script. Hal ini juga membuat perubahan ke desain situs lebih mudah untuk menerapkan: bukan mengedit file secara manual trilyun, Anda cukup mengedit dua, dan perubahan tercermin di seluruh situs Anda secara instan.

Mari kita lihat contoh hidup nyata dalam tindakan ini. Buat header dalam satu file, yang disebut header.php:

Selanjutnya, menciptakan footer dengan pemberitahuan hak cipta dalam file kedua, footer.php:

Akhirnya, membuat skrip untuk menampilkan konten utama situs Anda, dan include() header dan footer pada tempat yang tepat:

Sekarang, ketika Anda menjalankan script di atas, PHP secara otomatis akan membaca di header dan footer file, menggabungkan mereka dengan konten HTML, dan menampilkan halaman lengkap untuk Anda. Sederhana, bukan?

Perhatikan bahwa Anda bahkan dapat menulis kode PHP dalam file yang diimpor. Saat file pertama kali dibaca, parser akan mencari , dan secara otomatis mengeksekusi kode di dalamnya. (Jika Anda akrab dengan JavaScript, Anda dapat menggunakan fitur ini untuk meniru fungsionalitas mirip dengan yang dari onLoad() event handler Halaman dalam JavaScript.)

PHP juga menawarkan fungsi require_once() dan include_once(), yang memastikan bahwa file yang telah dibaca tidak dibaca lagi. Hal ini dapat berguna jika Anda memiliki sebuah situasi di mana Anda ingin menghapus baca beberapa include file yang sama, baik untuk alasan kinerja atau untuk menghindari korupsi dari variabel ruang.

Sebuah catatan singkat tentang perbedaan antara fungsi include() dan require(): fungsi require() mengembalikan sebuah kesalahan fatal jika file bernama tidak dapat ditemukan dan pengolahan menghentikan skrip, sedangkan include() fungsi kembali peringatan tapi memungkinkan script pengolahan untuk melanjutkan.

Menulis data ke sebuah file

Setelah semua yang telah Anda baca, Anda mungkin menyadari bahwa membaca file tidak persis operasi otak. Jadi mari kita lanjutkan untuk sesuatu yang sedikit lebih sulit – menulis ke sebuah file.

Langkah-langkah yang terlibat dalam menulis data ke file hampir sama dengan mereka yang terlibat dalam membacanya: membuka file dan mendapatkan file menangani, menggunakan file pegangan untuk menulis data ke situ, dan menutup file. Ada dua perbedaan: pertama, Anda harus fopen() file dalam modus menulis (‘w’ untuk menulis), dan kedua, yang tadinya menggunakan fungsi fread() untuk membaca dari file pegangan, sekarang gunakan fungsi fwrite() untuk menulis itu. Perhatikan:

Ketika Anda menjalankan script ini, harus membuat file bernama dump.txt di /tmp, dan menulis baris teks untuk itu, dengan data kembali di akhir. Perhatikan bahwa tanda kutip ganda diperlukan untuk mengubah menjadi data kembali.

Fungsi fopen(), fwrite() dan fread() semua biner-aman, yang berarti Anda dapat menggunakannya di file biner tanpa perlu khawatir kerusakan pada isi file. Baca lebih lanjut tentang banyak masalah yang berkaitan dengan manipulasi file biner-aman pada platform yang berbeda di http://www.php.net/manual/en/function.fopen.php

Jika saya sudah dimanjakan Anda dengan menunjukkan Anda cara pintas fungsi satu-line untuk membaca file, biarkan aku lanjutkan Anda lebih lanjut dengan memperkenalkan Anda ke fungsi file_put_contents(), baru di PHP 5.0, yang mengambil seutas tali dan menulis ke file dalam satu baris kode.

Ingatlah bahwa direktori di mana Anda mencoba untuk membuat file harus ada sebelum Anda dapat menulis untuk itu. Lupa langkah penting adalah penyebab umum dari kesalahan skrip.

Informasi adalah Kekuatan

PHP juga dilengkapi dengan sejumlah fungsi yang memungkinkan Anda untuk menguji status file – misalnya untuk mengetahui apakah ada, apakah itu kosong, apakah itu dapat dibaca atau ditulis, dan apakah itu suatu biner atau file teks. Dari jumlah tersebut, operator yang paling sering digunakan adalah file_exists () fungsi, yang digunakan untuk menguji keberadaan file tertentu.

Berikut ini adalah contoh yang meminta pengguna untuk memasukkan path ke file dalam bentuk web, dan kemudian kembali menampilkan pesan atau tidak file ada:

Ada lebih banyak fungsi seperti. Berikut adalah daftar singkat, diikuti dengan contoh yang dibangun di atas satu sebelumnya untuk memberikan informasi lebih lanjut tentang file yang ditentukan oleh pengguna.

* is_dir() – mengembalikan Boolean yang menunjukkan apakah jalan yang ditetapkan adalah sebuah direktori
* is_file() – mengembalikan Boolean yang menunjukkan apakah berkas yang ditentukan adalah file biasa
* is_link() – mengembalikan Boolean yang menunjukkan apakah berkas yang ditentukan adalah symbolic link
* is_executable() – mengembalikan Boolean yang menunjukkan apakah berkas yang ditentukan adalah executable
* is_readable() – mengembalikan Boolean yang menunjukkan apakah berkas yang ditentukan dapat dibaca
* is_writable() – mengembalikan Boolean yang menunjukkan apakah file yang diberikan tidak ditulis
* filesize() – mendapatkan ukuran file
* filemtime() – mendapatkan waktu modifikasi terakhir dari berkas
* filamtime() – mendapatkan waktu akses terakhir dari file
* fileowner() – mendapat pemilik file
* filegroup() – kelompok mendapat file
* fileperms() – mendapatkan hak akses file
* filetype() – mendapatkan jenis file

Script ini meminta nama file sebagai input dan menggunakan fungsi di atas untuk menampilkan kembali informasi tersebut.

Dan inilah yang outputnya mungkin terlihat seperti:
File name: /usr/local/apache/logs/error_log
File size: 53898 bytes
File owner: 0
File group: 0
File permissions: 33188
File type: file
File last accessed on: 2004-05-26
File last modified on: 2004-06-20
File is a regular file
File is readable

Memecahkan Telur

Jadi sekarang Anda tahu cara membaca file, menulis untuk itu, dan menguji statusnya. Mari kita lihat beberapa contoh yang dapat Anda lakukan dengan kekuatan baru-ditemukan.

Mari kita kembali ke resep omelet Spanyol saya. Mari kita mengira aku merasa murah hati, dan aku memutuskan bahwa aku ingin mendengar apa yang orang benar-benar berpikir tentang keterampilan kuliner saya. Sejak saya memiliki banyak resep yang saya ingin berbagi dengan orang, dan karena mereka semua sesuatu yang terlihat seperti ini:

SPANYOL dadar
Bahan:
– 1 bawang
– 1 tomat cincang
– 1 / 2 paprika hijau cincang
– 4 telur kocok
– Garam dan merica secukupnya
METODE:
1. Goreng bawang dalam panci
2. Tuangkan telur kocok dan goreng bawang lebih lembut
3. Tambahkan tomat, paprika hijau, garam dan merica secukupnya
4. Sajikan dengan roti panggang atau roti

Aku butuh cara cepat untuk mengkonversi mereka semua ke dalam HTML agar mereka terlihat rapi di situs Web saya. Kami sudah menetapkan bahwa aku malas, jadi fuggedaboutme menciptakan kembali resep dalam HTML. Sebaliknya, saya akan memiliki PHP melakukan angkat berat bagi saya:

Saya telah menggunakan file () fungsi untuk membaca resep ke array, dan menetapkan garis pertama (judul) ke variabel. judul itu kemudian dicetak di bagian atas halaman. Karena sisa data yang cukup layak seperti, saya hanya dapat mencetak baris ke satu layar setelah yang lain. istirahat Line secara otomatis ditangani bagi saya oleh fungsi nl2br yang sangat keren, yang mengubah linebreaks teks biasa ke setara HTML, tag “br”. Hasil akhir: versi HTML-terwujud dari resep saya bahwa dunia dapat mengagumi. Perhatikan:

Jika keanggunan dan kesederhanaan kreatif resep omelet Spanyol saya telah kiri Anda berkata-kata, aku tidak heran – banyak orang merasa seperti itu. Sampai Anda mendapatkan suara Anda kembali: Ciao … dan pastikan Anda datang kembali melalui Bagian berikutnya, yang membahas tentang membuat fungsi sendiri dapat digunakan kembali.

Sumber: http://devzone.zend.com/node/view/id/636
Diterjemahkan oleh: http://translate.google.com dan disadur oleh jinbatsu (jwd)

Share

You may also like...

2 Responses

  1. wildanr says:

    Wah.. saya jadi agak bingung mas. Fungsi-fungsi file di PHP ternyata banyak ya.. tapi kapan kita sebaiknya make “fopen” ama “fread” dibandingkan “file_get_content()”, dan sebaliknya?

    Atau terserah selera masing-masing aja?

  2. Jawaad says:

    @wildanr, biasanya fungsi fopen dan fread dipakai untuk mengoperasikan file local dalam server, sedangkan file_get_content() biasanya digunakan untuk remote server atau url website diluar server kita, misalkan kita ingin membaca konten isi website BCA.

Leave a Reply

Your email address will not be published. Required fields are marked *