⊗ppOpNsAu 105 of 107 menu

Pemuatan Automatik Kelas dalam OOP dalam PHP

Anda sudah tahu bahawa untuk menggunakan sesuatu kelas, kita mesti menyambungkannya melalui require. Apabila projek mempunyai banyak kelas, hasilnya adalah banyak sambungan yang sangat tidak selesa untuk ditulis dan sukar untuk dikawal.

Untuk menyelesaikan masalah sedemikian dalam PHP, telah ditambahkan pemuatan automatik kelas. Pemuatan automatik membolehkan PHP memuatkan fail dengan kelas secara automatik apabila cuba mengakses kelas tersebut dalam kod. Walau bagaimanapun, kelas tidak akan dimuatkan begitu sahaja - mereka mesti diletakkan di dalam folder tapak web dengan cara yang khusus, mengikut beberapa persetujuan tentang nama fail dan folder kelas. Anda boleh menggunakan persetujuan terbina dalam PHP, atau mencipta sendiri dan menggunakannya.

Mari kita mula-mula menganalisis persetujuan standard PHP. Persetujuan ini terletak pada fakta bahawa jika kita mempunyai beberapa fail dengan kelas, maka laluan melalui folder tapak web ke fail ini harus tepat dengan ruang nama fail, dan nama fail mesti sepadan dengan nama kelas yang disimpan di dalamnya. Pada masa yang sama, nama folder dan fail hendaklah dalam huruf kecil.

Mari lihat contoh. Katakan kita mempunyai kelas berikut:

<?php namespace Core\Admin; class PageController { } ?>

Menurut persetujuan, kelas ini mesti terletak dalam folder /core/admin/ dalam fail pagecontroller.php.

Sekarang mari dalam fail index.php kita gunakan kelas kami, tanpa menyambungkannya melalui require, tetapi menggunakan pemuatan automatik. Untuk ini, pada permulaan fail di mana kelas dipanggil, hendaklah dipanggil fungsi spl_autoload_register. Mari lakukan ini:

<?php spl_autoload_register(); // hidupkan pemuatan automatik $obj = new Core\Admin\PageController; // tenang buat objek ?>

Dalam fail index.php hidupkan pemuatan automatik kelas. Mengikut persetujuan tentang nama folder dan fail buat kelas Core\User, kelas Core\Admin\Controller dan kelas Project\User\Data. Dalam fail index.php buat objek kelas-kelas ini.

azituzptbn