oleh longnetpro
Kutipan:
Jalur penyertaan dalam PERL dan PHP selalu menjadi masalah yang sulit, terutama terkait dengan sistem operasi dan server WEB. Tidak mungkin menyelesaikan masalah jalur ini dengan sangat cerdas. Dibandingkan dengan PERL, jalur PHP jauh lebih baik dan lebih mudah dipecahkan, karena jalur relatif PHP dapat digunakan kapan saja dalam program PHP, tidak seperti PERL di mana jalur absolut harus digunakan dalam pernyataan tertentu, yang menyebabkan transplantasi menjadi sangat rumit .
Berdasarkan hal ini, di PHP, saya merancang solusi yang benar-benar solid, seperti dijelaskan di bawah.
pada prinsipnya:
Gunakan jalur relatif, tetapi gunakan jalur absolut dalam jalur relatif (agak berbelit-belit, akan dijelaskan secara rinci nanti). Pertama, dapat memastikan portabilitas. Kedua, dapat dengan mudah dimodifikasi. Ketiga, bersifat formula dan memiliki struktur yang jelas serta mudah untuk memperluas.
Langkah-langkah terperinci:
1. Pertama-tama tentukan direktori root suatu program. Perhatikan bahwa itu berada di bawah sistem file, bukan direktori virtual di bawah server WEB. Namun, umumnya jalur relatif subdirektori di bawah direktori sama dengan subdirektori virtual di bawah URL.
2. Buat settings.php di setiap subdirektori di bawah direktori root program yang ditentukan (sebenarnya tidak harus semuanya, tergantung kebutuhan), dan tentukan variabel atau konstanta di dalamnya (konstanta lebih baik karena cakupannya lebih besar), seperti APPROOT, tetapi APPROOT ini bukanlah jalur absolut, melainkan jalur relatif dari direktori relatif terhadap direktori root program yang Anda tentukan.
3. Tulis require_once('settings.php'); di kalimat pertama dari semua file entri program di direktori ini (yaitu, file pertama yang berisi file lain, atau file yang memungkinkan penelusuran langsung di browser); perhatikan bahwa yang terbaik adalah tidak menambahkan kalimat ini ke semua file yang disertakan - sebenarnya, tidak masalah untuk menambahkannya, karena Anda dapat menulis if(!definisi(APPROOT)) mendefinisikan(APPROOT, '../. .'); Jenis pernyataan ini mencegah redefinisi.
4. Jika Anda ingin memasukkan file lain, baik secara langsung atau tidak langsung, Anda dapat menulis include(APPROOT.$path);, dimana $path adalah path absolut dari file yang disertakan relatif terhadap direktori root program yang Anda tentukan.
prinsip:
Direktori akar program yang ditentukan adalah jalur relatif, tetapi lokasi direktori spesifik adalah jalur absolut yang relatif terhadap direktori akar tersebut. Kombinasi keduanya adalah jalur relatif dari file tertentu yang relatif terhadap direktori akar program. Misalnya, direktori c:wwwrootapp adalah direktori root program yang Anda tentukan, dan kemudian ada dua file c:wwwrootappaindex.php dan c:wwwrootappbinc.php . Untuk subdirektori a, APPROOT adalah '..', dan untuk direktori root program, path absolut inc.php adalah $path='/b/inc.php', dan kombinasi keduanya adalah '../b /inc.php'. Jika Anda ingin memasukkan inc.php ke dalam index.php, Anda harus menulis include('../b/inc.php');, dan bukankah path ini hanya APPROOT.$path yang baru saja digabungkan?
kesimpulannya:
Setelah pemrosesan di atas, setiap jalur benar-benar rapi dan seragam. Satu-satunya hal yang agak rumit adalah APPROOT harus didefinisikan di setiap direktori, tetapi hanya perlu ditentukan satu kali di settings.php direktori ini di setiap direktori. direktori. Jika seluruh program Anda hanya memiliki satu file entri, seperti index.php, dan semua file lainnya secara langsung atau tidak langsung termasuk dalam file entri ini, Anda hanya perlu menambahkan settings.php di direktori tempat index.php berada sekali dan tidak apa-apa. Jika seorang teman telah menyelesaikan proyek Delphi dan mempelajari file proyek, dia akan menemukan bahwa situasi yang saya sebutkan tadi bahwa suatu program hanya memiliki satu file entri utama sangat mirip dengan proyek Delphi, karena Delphi hanya memiliki satu file program utama (dpr file) , sisanya adalah file unit atau file sumber daya, dan tidak dapat dijalankan secara independen. Di PHP, jika situasi ini terjadi, Anda hanya perlu mendefinisikan APPROOT satu kali, dan menulis require_once('settings.php'); di kalimat pertama file program utama, dan semua penyertaan selanjutnya dapat menggunakan include(APPROOT.$ path) ;, dijamin tidak akan ada masalah, kecuali Anda tidak akan menulis ini "termasuk jalur absolut file yang berhubungan dengan direktori root program" $path.
Saya telah menggunakan metode ini lebih dari sekali, dan hasilnya bagus. Selain itu, Anda juga dapat merujuk pada cara jalur ditentukan di WEB-INFO JSP.
Ini adalah rencana yang diformulasikan dan tidak berubah sebagai respons terhadap perubahan yang terus terjadi. Jika ada yang punya rencana yang lebih baik, silakan mendiskusikannya! Jika ada yang belum dipahami, silakan bertanya.