Jadual Kandungan
komposer
Pendekatan yang dipilih
Kesimpulan
Soalan Lazim mengenai PSR-0 dan PSR-4 Autoloading

Bolehkah saya menggunakan PSR-4 dalam versi PHP yang lebih lama? Sekiranya anda menggunakan versi PHP yang lebih lama, anda perlu menaik taraf untuk menggunakan PSR-4. PHP mungkin terus berkembang, dengan piawaian dan amalan baru yang diperkenalkan sebagai bahasa dan ekosistemnya berkembang. Walau bagaimanapun, untuk masa hadapan, PSR-4 adalah standard yang disyorkan untuk autoloading dalam php.

Rumah pembangunan bahagian belakang tutorial php Pertempuran Autoloaders: PSR-0 vs PSR-4

Pertempuran Autoloaders: PSR-0 vs PSR-4

Feb 23, 2025 am 08:45 AM

3

Takeaways Key Battle of the Autoloaders: PSR-0 vs. PSR-4

PSR-0 dan PSR-4 adalah piawaian autoloading dalam PHP, dengan laluan yang menentukan PSR-0 berdasarkan ruang nama kelas dan membolehkan garis bawah dalam nama kelas, manakala PSR-4 bertujuan untuk memudahkan struktur folder dan mengeluarkan sisa-sisa PSR- 0. Pertempuran Autoloaders: PSR-0 vs PSR-4

PSR-4, yang dirujuk sebagai autoloading berorientasikan pakej, membolehkan pakej bersih tetapi lebih rumit untuk dilaksanakan. Ia juga memastikan bahawa autoloader tidak boleh membuang pengecualian atau menimbulkan kesilapan, mengekalkan keserasian dengan pelbagai Autoloaders.

kedua-dua PSR-0 dan PSR-4 mempunyai kebaikan dan keburukan mereka: PSR-4 membolehkan struktur folder yang lebih mudah tetapi tidak menunjukkan laluan tepat kelas dari nama yang berkelayakan sepenuhnya, sementara PSR-0 boleh menjadi huru-hara tetapi Menyokong pemaju menggunakan konvensyen penamaan dan bantuan yang lebih tua dalam mencari kelas dari namanya.
  • Jika anda telah melepasi peringkat pemula dalam latihan PHP anda, anda telah mendengar PSR-0-standard autoloading yang mentakrifkan cara untuk memasukkan kelas PHP secara automatik dalam kod anda tanpa perlu menggunakan kenyataan seperti yang diperlukan dan termasuk.
  • psr-0
  • PSR-0 melihat ruang nama kelas dan membezakan lokasinya pada cakera keras dari sedikit maklumat itu. Sebagai contoh, kelas ZendmailMessage akan membawa kepada /path/to/project/lib/vendor/zend/mail/message.php.

PSR-0 juga menyokong garis bawah dalam nama kelas sebagai alternatif, untuk membuat peralihan dari 5.2 dan lebih awal lebih mudah. Zend_mail_message juga akan membawa kepada /path/to/project/lib/vendor/zend/mail/message.php.

komposer

Apabila komposer muncul dan mengambil dunia pengurusan pakej PHP dengan ribut, perkara berubah. Oleh kerana beberapa peraturannya, folder sering diduplikasi dan menjadi terlalu mendalam apabila melihat pemasangan kelas PSR-0 melalui komposer. Sebagai contoh, beberapa struktur folder berakhir seperti ini:

ini huru -hara yang terbaik, kerana:

direktori "SRC" dan "Ujian" perlu memasukkan nama direktori vendor dan pakej. Ini adalah artifak pematuhan PSR-0.

vendor/
    vendor_name/
        package_name/
            src/
                Vendor_Name/
                    Package_Name/
                        ClassName.php       # Vendor_Name\Package_Name\ClassName
            tests/
                Vendor_Name/
                    Package_Name/
                        ClassNameTest.php   # Vendor_Name\Package_Name\ClassNameTest
Salin selepas log masuk
Salin selepas log masuk
Oleh itu, beberapa php devs yang berkelayakan berkumpul dan mengumpulkan cadangan untuk standard baru: PSR-4.

psr-4

PSR-4 bertujuan untuk melengkapkan dan bekerjasama dengan PSR-0 jika perlu, tidak menggantikannya sepenuhnya. Ia boleh, tetapi tidak perlu. Matlamat utama PSR-4 adalah untuk menghapuskan sisa-sisa PSR-0 dan pra-5.3 hari sepenuhnya, dan membolehkan struktur folder yang lebih ringkas. Dengan PSR-4, pokok folder di atas akan kelihatan seperti ini:

Menaik taraf PSR-0 bukan pilihan

kerana PSR-0 tidak membenarkan laluan syaitan antara mana-mana bahagian nama kelas

Ini sangat penting-ini bermakna bahawa melaksanakan PSR-4, sambil membenarkan pakej yang lebih bersih, akan jauh lebih rumit untuk dilaksanakan. Kami memanggil autoloading berorientasikan pakej PSR-4, kerana ia memihak kepada kebersihan pakej sebelum kesederhanaan.

Pendekatan yang dipilih

Matlamat yang dicadangkan adalah seperti berikut: Pastikan peraturan PSR-0 bahawa semua pakej mesti mengandungi sekurang-kurangnya dua tahap ruang nama (vendor dan pakej), pastikan kombo pakej vendor boleh memetakan ke mana-mana folder, dan membolehkan infix folder antara kombo pakej vendor dan seluruh nama kelas yang berkelayakan.

Ini bermakna kita akan dapat meletakkan kelas kita di mana -mana dalam kod pakej di mana ia masuk akal kepada kita sebagai manusia, dan masih menggunakannya dengan lancar dalam PHP tanpa menulis teknik pemuatan alternatif atau menggunakan pemuatan manual.

Selain itu, draf secara eksplisit menyatakan bahawa autoloader PSR-4 tidak boleh membuang pengecualian atau menimbulkan kesilapan semata-mata kerana autoloader berbilang boleh didaftarkan, dan jika seseorang gagal memuat kelas, yang lain harus diberi peluang untuk berbuat demikian-membuangnya- Kesalahan dan menghentikan aliran memecah keserasian ini. Sekiranya maklumat tambahan mengenai kegagalan diperlukan, seseorang harus menggunakan logger serasi PSR-3 atau cara sewenang-wenangnya.

seperti yang digambarkan dalam fail contoh, menggunakan autoloader PSR-4 untuk memuat kelas dari struktur berikut:

vendor/
    vendor_name/
        package_name/
            src/
                Vendor_Name/
                    Package_Name/
                        ClassName.php       # Vendor_Name\Package_Name\ClassName
            tests/
                Vendor_Name/
                    Package_Name/
                        ClassNameTest.php   # Vendor_Name\Package_Name\ClassNameTest
Salin selepas log masuk
Salin selepas log masuk

akan kelihatan seperti ini:

vendor/
    vendor_name/
        package_name/
            src/
                ClassName.php       # Vendor_Name\Package_Name\ClassName
            tests/
                ClassNameTest.php   # Vendor_Name\Package_Name\ClassNameTest
Salin selepas log masuk

di mana memanggil Foobarquxquux baru; akan cuba memuatkan dari direktori berdaftar pertama, sementara Foobarquxquuxtest baru; akan cuba memuatkan dari yang kedua.

Contoh ini juga menggambarkan penggunaan pelbagai folder setiap ruang nama tunggal.

Kesimpulan

Tidak ada peluru perak dalam autoloading. Setiap pendekatan membawa dengan sendirinya beberapa kebaikan dan keburukan-PSR-4 akan membolehkan struktur folder yang lebih mudah, tetapi akan menghalang kita daripada mengetahui jalan yang tepat dari kelas hanya dengan melihat nama yang berkelayakan sepenuhnya. Sebaliknya, PSR-0 adalah huru-hara pada cakera keras, tetapi menyokong pemaju yang terjebak pada masa lalu (pengguna underscore-in-class-name) dan membantu kita membezakan lokasi kelas hanya dengan melihat namanya.

Bagaimana perasaan anda tentang PSR-4? Marilah kita tahu dalam komen di bawah, atau nyatakan pendapat anda dalam salah satu daripada banyak perdebatan.

Sama ada cara-tidak ada keraguan autoloading berorientasikan pakej di sini untuk kekal. Jika tidak diterima secara rasmi sebagai standard, maka adat yang dilaksanakan oleh orang yang memerlukannya. Terserah kepada kami untuk menyertai perbincangan dan memperbaiki tanggapan yang cukup untuk mencapai keadaan formal ini.

Soalan Lazim mengenai PSR-0 dan PSR-4 Autoloading

Apakah perbezaan utama antara PSR-0 dan PSR-4? PSR-0 memerlukan korelasi langsung antara ruang nama dan struktur direktori, yang bermaksud bahawa setiap garis bawah di ruang nama sepadan dengan pemisah direktori. Sebaliknya, PSR-4 membolehkan pendekatan yang lebih fleksibel, di mana sebahagian ruang nama boleh dipetakan ke mana-mana direktori, dan seluruh ruang nama boleh dipetakan ke struktur subdirektori. PSR-4 diperkenalkan apabila PSR-0 sudah ada? Hubungan ketat PSR-0 antara ruang nama dan struktur direktori membawa kepada direktori yang sangat bersarang, yang tidak selalu praktikal atau cekap. PSR-4 memberikan pendekatan yang lebih fleksibel, membolehkan pemaju memetakan ruang nama ke mana-mana direktori, mengurangkan keperluan untuk bersarang direktori yang mendalam. > Ya, mungkin menggunakan PSR-0 dan PSR-4 dalam projek yang sama. Walau bagaimanapun, penting untuk diperhatikan bahawa mereka tidak boleh digunakan untuk mengendalikan kelas yang sama. Menggunakan kedua-dua piawaian boleh bermanfaat dalam projek besar di mana beberapa kod warisan mengikuti piawaian PSR-0, manakala kod yang lebih baru mengikuti piawaian PSR-4.

PSR-4 bertambah baik pada PSR-0 dengan memberikan pendekatan yang lebih fleksibel untuk autoloading. Ia membolehkan pemaju memetakan sebahagian ruang nama ke mana -mana direktori, mengurangkan keperluan untuk bersarang direktori yang mendalam. Ini menjadikannya lebih mudah untuk mengurus dan menavigasi struktur direktori projek.

Adakah PSR-0 ditutup? Ini bermakna bahawa walaupun ia masih berfungsi, tidak disyorkan untuk digunakan dalam projek baru. PSR-4 adalah standard yang disyorkan untuk autoloading dalam php.

Bagaimana autoloading berfungsi dalam psr-4?

. Selebihnya ruang nama kemudian dipetakan ke struktur subdirektori. Ini membolehkan pendekatan yang lebih fleksibel dan cekap untuk autoload. Perlu bersarang direktori yang mendalam, dan kecekapan yang lebih baik. Ia juga merupakan standard yang disyorkan untuk autoloading di PHP, menjadikannya pilihan yang baik untuk projek baru. Kepada PSR-4 melibatkan perubahan ruang nama dan direktori yang dipetakan. Dalam PSR-4, sebahagian daripada ruang nama boleh dipetakan ke mana-mana direktori, dan seluruh ruang nama boleh dipetakan ke struktur subdirektori. Ini mungkin memerlukan penstrukturan semula struktur direktori projek anda.

Bolehkah saya menggunakan PSR-4 dalam versi PHP yang lebih lama? Sekiranya anda menggunakan versi PHP yang lebih lama, anda perlu menaik taraf untuk menggunakan PSR-4. PHP mungkin terus berkembang, dengan piawaian dan amalan baru yang diperkenalkan sebagai bahasa dan ekosistemnya berkembang. Walau bagaimanapun, untuk masa hadapan, PSR-4 adalah standard yang disyorkan untuk autoloading dalam php.

Atas ialah kandungan terperinci Pertempuran Autoloaders: PSR-0 vs PSR-4. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1668
14
Tutorial PHP
1273
29
Tutorial C#
1256
24
Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Apr 17, 2025 am 12:06 AM

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP dalam Tindakan: Contoh dan aplikasi dunia nyata PHP dalam Tindakan: Contoh dan aplikasi dunia nyata Apr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Apr 17, 2025 am 12:25 AM

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

Relevannya PHP: Adakah ia masih hidup? Relevannya PHP: Adakah ia masih hidup? Apr 14, 2025 am 12:12 AM

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

PHP vs Bahasa Lain: Perbandingan PHP vs Bahasa Lain: Perbandingan Apr 13, 2025 am 12:19 AM

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

See all articles