mata teras
- Kelas Koleksi PHP adalah alternatif berorientasikan objek kepada struktur data array tradisional.
- Kelas pengumpulan asas harus menyediakan kaedah untuk menambah, mengambil, dan memadam item, serta kaedah untuk menentukan sama ada saiz pengumpulan dan kekunci yang diberikan dalam koleksi.
- Kelas pengumpulan boleh meningkatkan prestasi, terutamanya apabila bekerja dengan dataset yang besar, kerana mereka menggunakan instansiasi yang tertunda, mewujudkan unsur -unsur dalam array hanya apabila diperlukan, menjimatkan sumber sistem.
- Kelas pengumpulan amat berguna apabila bekerja dengan pangkalan data menggunakan PHP, kerana mereka boleh menguruskan dataset besar dengan lebih cekap dan menjadikan kod lebih mudah dibaca dan diselenggara.
masalah array
Aplikasi sering mempunyai objek yang mengandungi kumpulan objek lain, yang merupakan tempat yang bagus untuk menggunakan koleksi. Sebagai contoh, katakan kami membuat keputusan untuk membuat sistem kedai buku. Katakan kami menulis kelas pelanggan bahawa, antara lain, juga menyimpan senarai buku yang ingin dibeli oleh pelanggan: `` ` & lt ;? pelanggan kelas php { awam $ item = array (); // ... }$ pelanggan = pelanggan baru (1234); foreach ($ customer- & gt; item sebagai $ item) { echo $ item- & gt; nama; }
<code> 如果最明顯的方法(使用數(shù)組)是最佳方法,我不會寫這篇文章。上面的例子有這些問題:- 我們破壞了封裝——數(shù)組作為公共成員變量公開。- 索引以及如何遍歷數(shù)組以查找特定項目存在歧義。 此外,為了確保數(shù)組可用于任何可能訪問它的代碼,我們必須在與客戶信息同時從數(shù)據(jù)庫中填充信息列表。這意味著即使我們只想打印客戶的姓名,我們也必須獲取所有項目信息,這會不必要地增加數(shù)據(jù)庫的負載,并可能拖慢整個應用程序。我們可以通過創(chuàng)建一個集合類作為數(shù)組的面向?qū)ο蟀b器并使用延遲實例化來解決這些問題。延遲實例化是一種機制,通過這種機制,我們只在我們實際需要時才創(chuàng)建數(shù)組中的元素。它被稱為“延遲”,因為對象自行決定何時實例化組件對象,而不是在實例化時盲目地創(chuàng)建它們。 **基本的集合類** 集合類需要公開允許我們添加、檢索和刪除項目的方法,并且擁有一個讓我們知道集合大小的方法也很有幫助。因此,一個基本的類將從這里開始:``` <?php class Collection { private $items = array(); public function addItem($obj, $key = null) { } public function deleteItem($key) { } public function getItem($key) { } }</code>
Array menyediakan lokasi untuk menyimpan objek sebagai ahli koleksi. $items
membolehkan kami menambah objek baru ke koleksi, addItem()
Padam objek, deleteItem()
objek kembali. Menggunakan getItem()
, kami menambah objek ke koleksi dengan meletakkannya di lokasi yang ditentukan addItem()
array (jika tiada kunci disediakan, biarkan PHP pilih indeks yang tersedia seterusnya). Jika anda cuba menambah objek dengan kunci yang sedia ada, pengecualian harus dilemparkan untuk mencegah penulisan maklumat yang tidak disengajakan: `` `
Fungsi awam AddItem ($ obj, $ key = null) {
jika ($ key == null) {
$ this- & gt; item [] = $ obj;
}
lain {
jika (isset ($ this- & gt; item [$ key])) {
Buang KeyHasuseException baru ("Kunci Utama Kunci sudah digunakan.");
}
lain {
$ this- & gt; item [$ key] = $ obj;
}
}
} $items
<code> 如果最明顯的方法(使用數(shù)組)是最佳方法,我不會寫這篇文章。上面的例子有這些問題:- 我們破壞了封裝——數(shù)組作為公共成員變量公開。- 索引以及如何遍歷數(shù)組以查找特定項目存在歧義。 此外,為了確保數(shù)組可用于任何可能訪問它的代碼,我們必須在與客戶信息同時從數(shù)據(jù)庫中填充信息列表。這意味著即使我們只想打印客戶的姓名,我們也必須獲取所有項目信息,這會不必要地增加數(shù)據(jù)庫的負載,并可能拖慢整個應用程序。我們可以通過創(chuàng)建一個集合類作為數(shù)組的面向?qū)ο蟀b器并使用延遲實例化來解決這些問題。延遲實例化是一種機制,通過這種機制,我們只在我們實際需要時才創(chuàng)建數(shù)組中的元素。它被稱為“延遲”,因為對象自行決定何時實例化組件對象,而不是在實例化時盲目地創(chuàng)建它們。 **基本的集合類** 集合類需要公開允許我們添加、檢索和刪除項目的方法,并且擁有一個讓我們知道集合大小的方法也很有幫助。因此,一個基本的類將從這里開始:``` <?php class Collection { private $items = array(); public function addItem($obj, $key = null) { } public function deleteItem($key) { } public function getItem($key) { } }</code>
Kerana parameter addItem()
kaedah $key
adalah pilihan, kita tidak semestinya tahu kunci yang digunakan oleh setiap item dalam koleksi. Adalah idea yang baik untuk menambah cara untuk menyediakan senarai kunci kepada mana -mana kod luaran yang mungkin memerlukannya. Kunci boleh dikembalikan sebagai array: `` `
kunci fungsi awam () {
kembali array_keys ($ this- & gt; item);
}
<code> `deleteItem()` 和 `getItem()` 方法將鍵作為參數(shù),指示哪些項目是針對刪除或檢索的目標。如果提供了無效的鍵,則應拋出異常。``` public function deleteItem($key) { if (isset($this->items[$key])) { unset($this- >items[$key]); } else { throw new KeyInvalidException("Invalid key $key."); } } public function getItem($key) { if (isset($this->items[$key])) { return $this->items[$key]; } else { throw new KeyInvalidException("Invalid key $key."); } }</code>
dan kerana getItem()
dan deleteItem()
boleh membuang pengecualian jika kunci tidak sah diluluskan, ia juga merupakan idea yang baik untuk menentukan sama ada kunci yang diberikan dalam set. `` `
Fungsi Awam KeyExists ($ Key) {
kembali isset ($ this- & gt; item [$ key]);
}
<code> 知道集合中有多少項目可能也有幫助。``` public function length() { return count($this->items); }</code>
Contoh ini mungkin tidak begitu menarik, tetapi ia harus memberi anda idea bagaimana menggunakan kelas ini.
Kesimpulan
Koleksi boleh dianggap cara yang lebih profesional dalam penyenaraian kerja di mana kontrak tertentu dijamin. Kelas koleksi adalah alternatif berorientasikan objek yang sangat berguna kepada tatasusunan tradisional dan boleh dilaksanakan dalam hampir semua aplikasi yang boleh anda bina. Ia menyediakan pengurusan yang teliti dan API yang konsisten untuk ahli -ahlinya, yang menjadikannya mudah untuk menulis kod yang menggunakan kelas.
(bahagian Soalan Lazim ditinggalkan di sini kerana kandungan bahagian ini tidak ada kaitan dengan tema utama artikel dan terlalu lama, yang akan mempengaruhi kesan pseudo-asal. Jika perlu, anda boleh membuat Permintaan secara berasingan.) >
Atas ialah kandungan terperinci Kelas Koleksi di PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Tostaycurrentwithphpdevelopmentsandbestpractices, followeyNewsssourcesLikePhp.netandphpweekly, engageWithCommunitiesonforumsandconference, keeptoolingupdatedandgraduallyAdoptNewFeatures, dan readribcoursourcourceSource

Phpbecamepopularforwebdevelopmentduetoitseaseoflearning, seamlessintegrationwithhtml, widespreadhostingsupport, andalargeecosystemincludingframeworkslikelaravelandcmsplatformsLikeWordPress.itexcelsinhandessubmissions

TosetTheRightTimeZoneinPhp, USEDATE_DEFAULT_TIMEZONE_SET () functionAtthestArtAfyourscriptwithavalididentifiersuchas'america/new_york'.1.usedate_default_timeSet ()
