Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

9 Fungsi dan Ciri PHP yang Berguna Anda Perlu Tahu

by
Difficulty:IntermediateLength:LongLanguages:

Malay (Melayu) translation by Fariz Alfarizki (you can also view the original English article)

Dua kali sebulan, kami melawati beberapa jawatan kegemaran para pembaca dari seluruh sejarah Nettuts +.

Walaupun selepas menggunakan PHP selama bertahun-tahun, kami tersandung pada fungsi dan ciri yang tidak kami ketahui. Sebahagian daripada ini boleh menjadi sangat berguna, namun kurang digunakan.


1. Fungsi dengan Arbitrase Bilangan Argumen

Anda mungkin sudah tahu bahawa PHP membolehkan anda menentukan fungsi dengan argumen pilihan. Tetapi ada juga satu kaedah untuk membenarkan nombor argumen fungsi yang sewenang-wenangnya.

Pertama, inilah contohnya dengan hujah pilihan:

Sekarang, mari kita lihat bagaimana kita dapat membina fungsi yang menerima sejumlah hujah. Kali ini kita akan menggunakan func_get_args () :


2. Menggunakan Glob () untuk Mencari Fail

Banyak fungsi PHP mempunyai nama yang panjang dan deskriptif. Walau bagaimanapun, sukar untuk mengetahui fungsi apa yang disebut glob ()kecuali anda sudah biasa dengan istilah itu dari tempat lain.

Fikirkan ia seperti versi scandir () yang lebih berkeupayaan. Ia boleh membiarkan anda mencari fail dengan menggunakan corak.

Anda boleh mendapatkan pelbagai jenis fail seperti ini:

Ambil perhatian bahawa fail sebenarnya boleh dikembalikan dengan laluan, bergantung kepada pertanyaan anda:

Sekiranya anda ingin mendapatkan laluan penuh untuk setiap fail, anda boleh memanggil fungsi realpath () pada nilai yang dikembalikan:


3. Maklumat Penggunaan Memori

Dengan memerhati penggunaan memori skrip anda, anda mungkin dapat mengoptimumkan kod anda dengan lebih baik.

PHP mempunyai pengumpul sampah dan pengurus memori yang cukup kompleks. Jumlah ingatan yang digunakan oleh skrip anda. boleh naik dan turun semasa pelaksanaan skrip.  Untuk mendapatkan penggunaan memori semasa, kita boleh menggunakan fungsi memory_get_usage () , dan untuk mendapatkan jumlah memori tertinggi yang digunakan pada bila-bila masa, kami boleh menggunakan fungsi memory_get_peak_usage () .


4. Maklumat Penggunaan CPU

Untuk ini, kami akan menggunakan fungsi getrusage () . Perlu diingat bahawa ini tidak tersedia pada platform Windows.

Itu mungkin kelihatan sedikit samar kecuali anda sudah mempunyai latar belakang pentadbiran sistem. Inilah penjelasan setiap nilai (anda tidak perlu menghafal ini):

  • ru_oublock: operasi output blok
  • ru_inblock: operasi input blok
  • ru_msgsnd: mesej yang dihantar
  • ru_msgrcv: mesej yang diterima
  • ru_maxrss: saiz set pemastautin maksimum
  • ru_ixrss: saiz memori bersama yang disatukan
  • ru_idrss: saiz data yang tidak disatukan
  • ru_minflt: mengklaim halaman
  • ru_majflt: kesalahan laman
  • ru_nsignals: isyarat yang diterima
  • ru_nvcsw: suis konteks sukarela
  • ru_nivcsw: suis konteks sukarela
  • ru_nswap: swap
  • ru_utime.tv_usec: masa pengguna yang digunakan (microseconds)
  • ru_utime.tv_sec: masa pengguna yang digunakan (saat)
  • ru_stime.tv_usec: masa sistem yang digunakan (microseconds)
  • ru_stime.tv_sec: masa sistem yang digunakan (saat)

Untuk melihat berapa kuasa CPU skrip telah dimakan, kita perlu melihat nilai 'waktu pengguna' dan 'masa sistem'. Segmen dan bahagian mikrosekon disediakan secara berasingan secara lalai.   Anda boleh membahagikan nilai mikrosekon sebanyak 1 juta, dan menambahnya kepada nilai detik, untuk mendapatkan jumlah saat sebagai nombor perpuluhan.

Mari lihat contoh:

Walaupun skrip itu mengambil masa kira-kira 3 saat untuk dijalankan, penggunaan CPU sangat rendah. Kerana semasa operasi tidur, skrip sebenarnya tidak menggunakan sumber CPU.  Terdapat banyak tugas lain yang mungkin mengambil masa nyata, tetapi mungkin tidak menggunakan masa CPU, seperti menunggu operasi cakera. Jadi seperti yang anda lihat, penggunaan CPU dan panjang sebenar runtime tidak selalu sama.

Berikut adalah contoh lain:

Itu mengambil masa kira-kira 1.4 saat CPU, hampir semuanya adalah masa pengguna, kerana tidak ada panggilan sistem.

Masa Sistem ialah jumlah masa yang dibelanjakan CPU melaksanakan panggilan sistem untuk kernel pada nama program. Inilah contohnya:

Sekarang kita mempunyai sedikit penggunaan sistem masa. Ini kerana skrip memanggil fungsi microtime () berkali-kali, yang melakukan permintaan melalui sistem operasi untuk mengambil masa.

Anda juga mungkin dapat melihat nombor yang tidak cukup menambah sehingga 3 saat. Ini kerana terdapat kemungkinan proses lain di pelayan juga, dan skrip tidak menggunakan CPU 100% sepanjang tempoh 3 saat.


5. Magic Constants

PHP menyediakan pemalar sihir berguna untuk mengambil nombor baris semasa ( __LINE__ ), laluan fail ( __FILE__ ), laluan direktori ( __DIR__ ), nama fungsi ( __FUNCTION__ ), nama kelas ( __CLASS__ ), nama kaedah (__METHOD__) dan ruang nama ( __NAMESPACE__ ).

Kami tidak akan menutup setiap satu daripada ini dalam artikel ini, tetapi saya akan menunjukkan kepada anda beberapa kes penggunaan.

Apabila memasukkan skrip lain, adalah idea yang baik untuk menggunakan pemalar __FILE__ (atau juga __DIR__ , pada PHP 5.3):

Menggunakan __LINE__ membuat debugging lebih mudah. Anda boleh menjejaki nombor garisan:


6. Menjana ID unik

Mungkin terdapat situasi di mana anda perlu menjana rentetan yang unik. Saya telah melihat ramai orang menggunakan fungsi md5() untuk ini, walaupun ia tidak betul-betul dimaksudkan untuk tujuan ini:

Sebenarnya terdapat fungsi PHP bernama uniqid () yang dimaksudkan untuk digunakan untuk ini.

Anda mungkin dapati bahawa walaupun rentetan adalah unik, mereka kelihatan serupa untuk beberapa aksara pertama. Ini kerana rentetan yang dihasilkan berkaitan dengan masa pelayan. Ini sebenarnya mempunyai kesan sampingan yang bagus, kerana setiap id yang dihasilkan baru datang kemudian dalam susunan abjad, supaya mereka dapat disusun.

Untuk mengurangkan kemungkinan mendapatkan pendua, anda boleh lulus awalan, atau parameter kedua untuk meningkatkan entropi:

Fungsi ini akan menghasilkan rentetan yang lebih pendek daripada md5() , yang juga akan menjimatkan ruang anda.


7. Serialization

Pernahkah anda perlukan untuk menyimpan pembolehubah kompleks dalam pangkalan data atau fail teks? Anda tidak perlu membuat penyelesaian yang mewah untuk menukar array atau objek anda ke dalam rentetan diformat, kerana PHP sudah mempunyai fungsi untuk tujuan ini.

Terdapat dua kaedah popular bagi pembolehubah bersiri. Berikut adalah contoh yang menggunakan serialize () dan unserialize () :

Ini adalah kaedah bersiri PHP asli. Walau bagaimanapun, sejak JSON telah menjadi begitu popular dalam beberapa tahun kebelakangan ini, mereka memutuskan untuk menambah sokongan untuknya dalam PHP 5.2. Sekarang anda boleh menggunakan fungsi json_encode() dan json_decode() juga:

Ia lebih kompak, dan terbaik dari semua, serasi dengan javascript dan banyak bahasa lain. Walau bagaimanapun, untuk objek kompleks, sesetengah maklumat mungkin hilang.


8. Mengetatkan Strings

Apabila bercakap tentang mampatan, kita biasanya berfikir tentang fail, seperti arkib ZIP. Ia adalah mungkin untuk memampatkan rentetan panjang dalam PHP, tanpa melibatkan sebarang fail arkib.

Dalam contoh berikut, kita akan menggunakan fungsi gzcompress () dangzuncompress () :

Kami dapat mencapai pengurangan saiz hampir 50%. Juga fungsi gzencode ()dan gzdecode () menghasilkan hasil yang sama, dengan menggunakan algoritma pemampatan yang berbeza.


9. Mendaftar Fungsi Penutupan

Terdapat fungsi yang disebut register_shutdown_function () , yang akan membolehkan anda melaksanakan beberapa kod sebelum skrip selesai dijalankan.

Bayangkan anda ingin menangkap beberapa statistik penanda aras pada akhir pelaksanaan skrip anda, seperti berapa lama masa yang diperlukan untuk dijalankan:

Pada mulanya ini mungkin kelihatan remeh. Anda hanya menambah kod ke bahagian paling bawah skrip dan ia berjalan sebelum selesai. Walau bagaimanapun, jika anda memanggil fungsi exit () , kod itu tidak akan berjalan. Juga, jika ada ralat yang membawa maut, atau jika skrip ditamatkan oleh pengguna (dengan menekan butang Stop di pelayar), sekali lagi ia tidak dapat dijalankan.

Apabila anda menggunakan register_shutdown_function (), kod anda akan melaksanakan tidak kira mengapa skrip telah berhenti berjalan:


Kesimpulannya

Adakah anda sedar tentang ciri PHP lain yang tidak diketahui secara umum tetapi boleh menjadi sangat berguna? Sila kongsi bersama kami dalam ulasan.Dan terima kasih kerana membaca!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.