Pengenalan pir: Gunakan pir untuk menulis program php Anda berikutnya
Isi:
Apa itu buah pir
Mengapa menggunakan pir?
Apa manfaat buah pir bagi saya?
Aturan pengkodean pir mulai menggunakan pir
Ringkasan sumber daya yang relevan dan pengenalan penulis
Pan Fan (pelayar malam) ( [email protected] )
Beijing Saidi.com Teknologi Informasi Co., Ltd.
Pada bulan Juni 2001 Anda mungkin sudah menjadi veteran PHP dan telah menulis banyak kode bagus. Namun jika Anda ingin menambahkannya ke proyek Anda saat ini, apakah agak sulit? Teman Anda ingin menggunakan kode Anda sebagai modul dalam proyeknya, tetapi ternyata Anda menggunakan gaya pengkodean yang sangat berbeda. Biarkan dia beradaptasi, atau bahkan menulis ulang!
Silakan ikuti saya dan tulis program PHP Anda menggunakan standar pir. Program Anda akan memiliki vitalitas yang lebih besar. Program dan kode Anda akan mudah diintegrasikan dengan kode pakar lainnya. Pear seperti cpan untuk Like perl, itu akan membuat php menghasilkan kekuatan yang lebih tinggi.
Apa itu pasangan
Pear adalah singkatan dari ekstensi php dan repositori aplikasi. Ini adalah tempat penyimpanan kode untuk ekstensi dan aplikasi PHP. Sederhananya, pir adalah cpan PHP.
Mengapa menggunakan pir?
PHP adalah bahasa scripting yang sangat bagus, ringkas dan efisien. Dengan dirilisnya 4.0, semakin banyak orang yang menggunakannya untuk mengembangkan website dinamis pengembang yang harus mampu mengembangkan aplikasi bisnis kecil dan menengah dengan cepat dan efisien, PHP adalah bahasa pilihan. Namun, dengan meningkatnya jumlah aplikasi PHP, terdapat kurangnya standar terpadu dan manajemen yang efektif untuk aplikasi ini, sehingga sulit bagi komunitas PHP untuk berbagi kode dan aplikasi satu sama lain dengan nyaman seperti halnya orang-orang di komunitas Perl, karena PHP tidak memiliki kemampuan untuk berbagi kode dan aplikasi seperti Cpan. Basis kode terpadu untuk mengklasifikasikan dan mengelola modul kode aplikasi (siapa pun yang akrab dengan Perl tahu bahwa cpan adalah gudang modul ekstensi Perl yang sangat besar. Modul aplikasi tertulis dapat ditempatkan dalam klasifikasi yang sesuai. direktori di bawah cpan, dan orang lain dapat Sangat mudah untuk digunakan kembali, tentunya Anda juga harus mengikuti pedoman saat menulis modul aplikasi).
Oleh karena itu, pir muncul dan mulai dari 4.04 didistribusikan dengan inti PHP.
Apa manfaat buah pir bagi saya?
1. Seperti disebutkan di atas, pir mengelola basis kode aplikasi pir menurut kategori tertentu. Kode pir Anda dapat diatur ke dalam direktori yang sesuai, dan orang lain dapat dengan mudah mengambil dan membagikan hasilnya.
2. Pear bukan hanya tempat penyimpanan kode, tetapi juga merupakan standar. Menggunakan standar ini untuk menulis kode PHP Anda akan meningkatkan keterbacaan dan penggunaan kembali program Anda serta mengurangi kemungkinan kesalahan.
3. Pear membangun kerangka kerja untuk Anda dengan menyediakan 2 kelas untuk mengimplementasikan fungsi seperti destruktor dan penangkap kesalahan. Anda dapat menggunakan fungsi ini melalui pewarisan.
Aturan pengkodean untuk buah pir
Aturan pengkodean Pear mencakup aturan indentasi, struktur kontrol, pemanggilan fungsi, definisi fungsi, komentar, kode yang memuat, tag PHP, blok komentar di header file, tag cvs, sampel URL, dan penamaan konstanta. Berikut ini pengenalan singkatnya:
Aturan indentasi:
Anda perlu menggunakan 4 spasi di pir untuk membuat indentasi kode, dan jangan menggunakan tab. Jika Anda menggunakan vim, letakkan pengaturan berikut di ~/.vimrc Anda:
atur tab perluasan
atur lebar shift=4
set tabstop=4
Jika Anda menggunakan emacs/xemacs, Anda perlu menyetel mode indent-tabs ke nil.
Tetapi jika Anda suka menggunakan (x)emacs untuk mengedit file php seperti saya, saya sangat menyarankan Anda untuk menginstal php-mode, sehingga ketika Anda menulis kode pir, secara otomatis akan menyesuaikan gaya indentasi Anda. Tentu saja, php-mode punya masih banyak lagi fitur yang sangat bagus, Anda dapat mengunduh mode php versi terbaru dari daftar sumber daya.
Struktur kendali:
Struktur kontrol yang disebutkan di sini meliputi: saklar if for while, dll. Untuk struktur kontrol, harus ada spasi setelah kata kunci (seperti if for ..), dan kemudian tanda kurung kontrol, sehingga tidak tertukar dengan pemanggilan fungsi. Selain itu, Anda harus mencoba menggunakan kurung kurawal {} selengkap mungkin. Ini akan mencegah kebingungan logis atau kesalahan ketika Anda perlu menambahkan baris kode baru di masa mendatang. Berikut ini contohnya:
if ((kondisi 1) && (kondisi 2)) {
Pernyataan 1;
}esleif ((Kondisi 3) || (Kondisi 4)) {
Pernyataan 2;
}kalau tidak {
Pernyataan 3;
}
Panggilan fungsi:
Untuk pemanggilan fungsi, tidak boleh ada spasi antara nama fungsi dan tanda kurung buka (()), untuk parameter fungsi, harus ada jarak yang sama antara koma pembatas dan parameter berikutnya, dan tidak boleh ada spasi di antara yang terakhir. parameter dan tanda kurung tutup. Di bawah ini adalah pemanggilan fungsi standar;
$hasil = foo($param1, $param2, $param3);
Tulisan tidak beraturan:
$hasil=foo ($param1,$param2,$param3);
$hasil=foo( $param1,$param2, $param3 );
Selain itu, jika Anda ingin menetapkan hasil pengembalian fungsi, harus ada spasi antara tanda sama dengan dan variabel yang ditetapkan. Pada saat yang sama, jika itu adalah rangkaian pernyataan penugasan terkait, Anda menambahkan spasi yang sesuai untuk menyelaraskan mereka, seperti ini:
$hasil1 = $foo($param1, $param2, $param3);
$var2 = $foo($param3);
$var3 = $foo($param4, $param5);
Definisi fungsi:
Definisi fungsi mengikuti konvensi "satu kurung kurawal sejati":
fungsi terhubung(&$dsn, $persisten = salah)
{
jika (is_array($dsn)) {
$dsninfo = &$dsn;
} kalau tidak {
$dsninfo = db::parsedsn($dsn);
}
if (!$dsninfo || !$dsninfo['phptype']) {
kembalikan $ini->raiseerror();
}
kembali benar;
}
Seperti yang ditunjukkan di atas, parameter opsional harus berada di akhir daftar parameter, dan selalu berusaha mengembalikan nilai fungsi yang bermakna.
Mengenai komentar:
Untuk dokumentasi kelas online, harus dapat dikonversi dengan phpdoc, seperti javadoc. phpdoc juga merupakan aplikasi buah pir. Untuk pengenalan lebih detail, Anda dapat mengunjungi http://www.phpdoc.de/ untuk melihatnya. Selain dokumentasi kelas online, Anda disarankan untuk menggunakan komentar non-dokumentasi untuk menjelaskan kode Anda. Saat Anda melihat sepotong kode, Anda berpikir: Oh, menurut saya Anda tidak perlu mendeskripsikannya dengan cermat di dokumentasi . Maka sebaiknya Anda memberikan komentar sederhana pada kode ini agar Anda tidak lupa cara kerjanya. Untuk bentuk komentar, /* */ c dan // c++ keduanya bagus. Namun, jangan gunakan metode komentar # Perl atau Shell.
Berisi kode:
Kapan pun Anda perlu menyertakan file kelas tanpa syarat, Anda harus menggunakan require_once; ketika Anda perlu menyertakan file kelas secara kondisional, Anda harus menggunakan include_once; ini memastikan bahwa file yang ingin Anda sertakan hanya akan disertakan satu kali, dan 2 pernyataan Kedua ini berbagi daftar file yang sama, jadi Anda tidak perlu khawatir keduanya akan bingung. Setelah require_once menyertakan file, include_once tidak akan menyertakan file yang sama lagi, dan sebaliknya.
markup kode php:
Selalu gunakan <?php ?> untuk mendefinisikan kode PHP Anda daripada hanya menggunakan <? ?>.
Deklarasi komentar di header file:
Untuk semua file kode PHP yang perlu disertakan dalam rilis pear core, Anda harus menambahkan pernyataan komentar berikut di awal file:
/* vim: setel expandtab tabstop=4 shiftwidth=4: */
// +--------------------------------- --- --------+
// |.php versi 4.0 |
// +--------------------------------- --- --------+
// |. hak cipta (c) 1997, 1998, 1999, 2000, 2001 grup php |
// +--------------------------------- --- --------+
// |.file sumber ini tunduk pada lisensi php versi 2.0, |
// |. yang dibundel dengan paket ini dalam lisensi file, dan |
// |.tersedia di melalui world-wide-web di |
// |http://www.php.net/license/2_02.txt |
// |.jika Anda tidak menerima salinan lisensi php dan tidak dapat |
// |. mendapatkannya melalui world-wide-web, silakan kirim catatan ke |
// |[email protected] kami dapat segera mengirimkan salinannya kepada Anda |
// +--------------------------------- --- --------+
// |. penulis: penulis asli |
// |.namamu |
// +--------------------------------- --- --------+
//
// $id$
Untuk file yang tidak ada dalam basis kode inti pir, disarankan agar Anda juga memiliki blok komentar serupa di awal file, yang menunjukkan hak cipta, perjanjian, penulis, dll. Pada saat yang sama, modeline vim juga ditambahkan ke baris pertama, sehingga gaya kode pear dapat dipertahankan di vim.
tag cvs:
Seperti yang ditunjukkan di atas, tambahkan tag ID CVS ke setiap file Jika file yang Anda edit atau modifikasi tidak memiliki tag ini, silakan tambahkan, atau ganti dengan ekspresi serupa di file asli (seperti "terakhir diubah" dll)
contoh url:
Anda dapat merujuk ke RFC 2606 dan menggunakan " http://www.example.com " sebagai semua contoh URL.
Penamaan konstan:
Konstanta harus ditulis dalam huruf besar jika memungkinkan, dan agar lebih mudah dipahami, gunakan garis bawah untuk memisahkan setiap kata. Pada saat yang sama, Anda harus mengawali nama paket atau nama kelas tempat konstanta berada. Misalnya, konstanta di kelas bug harus dimulai dengan bug_. Di atas adalah aturan pengkodean pir. Untuk aturan pengkodean lebih rinci, silakan lihat deskripsi file coding_standard di pir. Untuk lebih memahami aturan pengkodean ini, Anda juga dapat merujuk pada kode modul inti pir yang ada.
Mulailah menggunakan pir
pir
Menggunakan pir itu mudah, Anda hanya perlu mendefinisikan program pir Anda sendiri seperti ini:
require_once "pear.php";
kelas nama_kelas_anda diperluas pir{
Definisi kelas Anda...
}
Tentu saja, Anda harus mematuhi aturan pengkodean pir yang disebutkan sebelumnya, dan kemudian Anda dapat menerapkan apa yang ingin Anda lakukan di dalam kelas Anda. Selanjutnya, mari kita bahas. Faktanya, pear memberi kita 2 kelas yang telah ditentukan sebelumnya:
pir: Ini adalah kelas dasar pir, dan semua ekstensi pir harus mewarisi dan berasal darinya.
pear_error: Kelas dasar penanganan kesalahan pir. Anda dapat memilih untuk mendapatkan kelas penanganan kesalahan Anda sendiri.
Secara umum, Anda tidak boleh membuat turunan dari pir secara langsung, tetapi turunkan sendiri kelas baru dan kemudian buat turunan dari kelas baru ini. Sebagai kelas dasar, pear memberi kita beberapa fungsi yang berguna, yang paling penting adalah destruktor dan destruktor penanganan kesalahan.
PHP mendukung konstruktor, tetapi tidak mendukung destruktor. Namun, PHP menyediakan fungsi register_shutdown_function(), yang dapat memanggil kembali fungsi yang terdaftar sebelum skrip dihentikan. Jika Anda memiliki subkelas pir, yang disebut mypear, maka di kelas mypear, Anda dapat mendefinisikan suatu fungsi. Nama fungsi adalah garis bawah ditambah nama kelas Anda, _mypear(). Namun destruktor ini berbeda dengan destruktor di C++, destruktor ini tidak akan dieksekusi saat objek dihapus, tetapi saat skrip berakhir. Karena register_shutdown_function() digunakan, informasi yang dicetak tidak akan dikembalikan ke browser di destruktor Anda. Selain itu, di konstruktor Anda, Anda perlu memanggil konstruktor kelas induknya, karena PHP tidak akan secara otomatis memanggil konstruktor kelas induk, dan destruktor tersebut perlu didaftarkan di konstruktor pir kode:
<kode>
fungsi pir() {
if (metode_ada($ini, "_".get_class($ini))) {
global $_pear_destructor_object_list;
$_pear_destructor_object_list[] = &$ini;
}
if ($ini->_debug) {
printf("Konstruktor buah pir dipanggil, kelas=%sn",
get_class($ini));
}
.....
fungsi _pear_call_destructors() {
global $_pear_destructor_object_list;
if (is_array($_pear_destructor_object_list) && sizeof($_pear_destructor_object_list)) {
setel ulang($_pear_destructor_object_list);
while (daftar($k, $objref) = masing-masing($_pear_destructor_object_list)) {
$penghancur = "_".get_class($objref);
if (method_exists($objref, $destructor)) {
$objref->$destruktor();
}
}
//Hapus daftar objek yang terdaftar,
//Mencegah panggilan berulang
$_pear_destructor_object_list = array();
}
}
....
register_shutdown_function("_pear_call_destructors");
</kode>
Kode di atas menunjukkan bagaimana pir mengimplementasikan destruktor. Pada fungsi komponen, ia akan memeriksa apakah ada destruktor di kelas saat ini. Jika demikian, maka referensi kelas saat ini akan dimasukkan ke dalam daftar global, di _ Dalam pear_call_destructors. , periksa apakah setiap elemen dalam daftar global memiliki destruktor yang sesuai, jika ya, panggil elemen tersebut, dan terakhir hapus daftar global.
Pada baris kode terakhir di pear.php, panggil register_shutdown_function("_pear_call_destructors") untuk mendaftarkan _pear_call_destructors. Dengan cara ini, ketika skrip dijalankan, PHP akan memanggil kembali fungsi ini. Dengan menggunakan destruktor, Anda dapat melakukan beberapa pekerjaan "perawatan lanjutan" yang diperlukan sebelum keluar setelah memproses permintaan pengguna. Contoh umumnya adalah Anda dapat menutup file yang terbuka, memutuskan sambungan dari database, dan menyimpan data tertentu di disk, dll.
Penanganan kesalahan
Pear memungkinkan Anda menangani kesalahan dengan banyak cara. Anda tidak hanya sekadar mengembalikan kode kesalahan atau informasi kesalahan, namun Anda juga dapat mengembalikan objek pear_error, atau objek kesalahan baru yang berasal dari pear_error.
Objek kesalahan di pir tidak membatasi bentuk keluaran tertentu. Ia hanya dapat menangkap kesalahan tanpa mengembalikan terlalu banyak informasi kepada pengguna, atau dapat memanggil kembali fungsi penanganan kesalahan khusus pada saat yang sama, meskipun ia mengeluarkan informasi kesalahan , bisa juga Anda terpaksa menggunakan format html. Anda dapat menampilkan format xml, csv, atau format lain yang ditentukan sendiri. Anda hanya perlu mendapatkan kelas baru dari pear_error, lalu membuat dan "melempar" kelas baru ini ke waktu yang tepat.
Penanganan kesalahan sederhana:
Pada pear, penanganan error yang paling sederhana adalah dengan "membuang" error tersebut. Anda cukup membuat dan mengembalikan objek pear_error. Berikut ini contoh sederhananya:
<kode>
fungsi koneksi saya($host = "localhost", $port = 1080)
{
$fp = fsockopen($host, $port, $errno, $errstr);
jika (!is_resource($fp)) {
return new pear_error($errstr, $errno);
}
kembalikan $fp;
}
$kaus kaki = koneksi saya();
if (pir::iserror($kaus kaki)) {
cetak "kesalahan koneksi: ".$sock->getmessage()."<br>n"
}
</code>
Seperti yang ditunjukkan pada kode di atas, setelah mengeksekusi sepotong kode yang mungkin menghasilkan kesalahan, Anda perlu menggunakan iserror pir untuk mendeteksi apakah ada kesalahan, dan Anda dapat menggunakan getmessage pear_error untuk mendapatkan pesan kesalahan terbaru. Catatan: Pastikan untuk menggunakan pear::iserror di tempat-tempat utama
Gunakan raiseerror
Setelah php4.0.5, pir memiliki 2 fungsi lagi:
seterrorhandling($mode, $pilihan = null)
raiseerror($message = null, $code = null, $mode = null,$options = null, $userinfo = null)
Yang pertama dapat mengatur mode penanganan kesalahan default pir, dan yang terakhir adalah fungsi pembungkus yang mengembalikan objek pear_error , yang sedikit berbeda dengan membuat dan mengembalikan objek pear_error secara langsung. Jika Anda menghilangkan parameter seperti $mode dan $options, nilai default akan digunakan untuk membuat objek pear_error. Anda dapat menggunakan seterrorhandling() untuk menyesuaikan nilai default ini. .
pir_kesalahan
pear_error adalah kelas dasar dari objek error pear. Tidak seperti pear, secara umum, Anda dapat langsung membuat instance dari pear_error dengan:
$error = new pear_error($message, $code, $mode, $options, $userinfo);
$message adalah pesan kesalahan Anda, $code adalah nomor kesalahan, dan tiga parameter terakhir berkaitan erat:
$mode: adalah mode penanganan kesalahan, yang dapat berupa konstanta berikut:
pear_error_return: hanya mengembalikan objek kesalahan (mode default)
pear_error_print: Cetak pesan kesalahan ini di fungsi build, namun program saat ini akan terus berjalan.
pear_error_trigger: Gunakan trigger_error() PHP untuk memicu kesalahan. Jika Anda telah menyiapkan fungsi penanganan kesalahan, atau Anda menyetel tingkat penanganan kesalahan PHP ke e_user_error, program saat ini akan dihentikan.
pear_error_die: Cetak kesalahan dan keluar, program berakhir.
pear_error_callback: Gunakan fungsi atau metode panggilan balik untuk menangani kesalahan saat ini dan program akan berhenti.
$options: Parameter ini hanya berfungsi jika $mode adalah pear_error_trigger dan pear_error_callback. Jika pear_error_trigger, $options harus berupa salah satu dari tiga konstanta e_user_notice, e_user_warning, atau e_user_error, yang konsisten dengan nilai trigger_error di PHP. Jika $mode adalah pear_error_callback, $options dapat berupa string yang berisi nama fungsi yang akan dipanggil kembali, atau array yang terdiri dari 2 elemen, masing-masing berupa variabel objek dan string (menunjukkan metode yang akan dipanggil).
$userinfo: Menyimpan informasi pengguna tambahan. Anda dapat memasukkan informasi debug yang relevan di sini.
Ada beberapa metode yang umum digunakan di pear_error. Metode ini tidak dijelaskan dalam dokumentasi PHP. Metode tersebut tercantum di sini:
int getmode: Mengembalikan mode penanganan kesalahan saat ini, bilangan bulat.
string getmessage: Mengembalikan pesan kesalahan lengkap saat ini, string.
getcallback campuran: Mengembalikan informasi panggilan balik saat ini, yang mungkin berupa nama fungsi yang dipanggil kembali, atau array (objek, metode).
int getcode: Mengembalikan kode kesalahan bilangan bulat.
string gettype: Mengembalikan tipe yang salah, yaitu nama kelas saat ini, string.
string getuserinfo: Mengembalikan informasi pengguna tambahan, string.
string getdebuginfo: Isinya sama seperti di atas.
string tostring: Mengembalikan deskripsi string terperinci dari objek saat ini, termasuk mode penanganan kesalahan, level, informasi kesalahan, kode kesalahan, fungsi panggilan balik terkait, dll.
Singkatnya, perkenalan dengan buah pir sudah berakhir. Singkatnya, jika Anda ingin membuat aplikasi ekstensi buah pir, Anda perlu melakukan ini:
require_once "pear.php"
Gunakan kelas your_pear_extend extends pear{} untuk mendefinisikan kelas baru Anda.
Di konstruktor kelas Anda, panggil konstruktor kelas induk pir:
fungsi your_pear_extend{
$ini->pir();
...
}
Jika perlu, tentukan destruktor _your_pear_extend
Jika perlu, turunkan kelas penanganan kesalahan Anda sendiri dari pear_error untuk menyetel mode penanganan kesalahan dan memicu kesalahan bila diperlukan.
Setelah mengeksekusi kode yang mungkin menghasilkan kesalahan, gunakan pear::iserror($obj) untuk menangkap kesalahan terkait.
Terapkan fungsionalitas Anda sendiri.
Pada pear core rilis terbaru php4.05 ini sudah terdapat banyak modul aplikasi unggulan seperti: phpdoc, cache, html... Tentu saja dibandingkan dengan cpan, pear masih baru saja dimulai dan membutuhkan orang-orang dari komunitas php. Dengan upaya kita bersama untuk memperbaikinya dan menyempurnakannya, php akan menjadi semakin kuat.
Sumber daya terkait
pirBeranda
beranda php
halaman beranda phpdoc, yang dapat menghasilkan dokumen API yang mirip dengan javadoc dari kode sumber aplikasi pir Anda
mode php untuk xemacs/emacs, menyediakan dukungan sintaksis PHP untuk emacs/xemacs, dan juga dapat mendukung gaya kode pir
halaman beranda vim, editor yang sangat bagus, juga memiliki dukungan yang baik untuk php