Masalah:
Anda cuba memasukkan kaedah daripada kaedah yang berasingan fail ke dalam definisi kelas PHP anda. Khususnya, anda ingin mencipta fail Myclass.php dengan hanya pengisytiharan kelas dan pembolehubah contoh, sambil menyimpan semua kaedah dalam fail Myclass_methods.php.
Kebolehlaksanaan dan Kebimbangan:
Memasukkan fail dalam badan kelas tidak disokong dalam PHP. Had ini berpunca daripada reka bentuk seni bina bahasa PHP.
Pendekatan Alternatif:
Daripada memasukkan keseluruhan fail Myclass_methods.php, anda boleh mengimport fungsi dan pembolehubah tertentu ke dalam badan kaedah atau di luar definisi kelas. Contohnya:
class MyClass { protected $_prop; public function __construct() { require_once 'some-functions.php'; foo($b); // echoes 'a'; } }
Pendekatan ini memuatkan fungsi dan pembolehubah ke dalam skop setempat kaedah, bukan skop kelas.
Walaupun mungkin untuk memasukkan skrip menggunakan fungsi include() dalam kaedah, ini adalah amalan yang tidak digalakkan dan boleh membawa kepada tingkah laku objek yang tidak tulen. Selain itu, pendekatan dinamik sedemikian tidak serasi dengan prinsip pengaturcaraan berorientasikan objek dan memperkenalkan potensi kelemahan keselamatan.
Untuk menukar gelagat kelas secara dinamik tanpa menggunakan tampalan langsung, pertimbangkan untuk menggunakan Corak Reka Bentuk Strategi. Ini melibatkan mencipta antara muka yang mentakrifkan satu set tingkah laku dan melaksanakan strategi konkrit yang mematuhi antara muka tersebut. Dengan memberikan strategi yang berbeza kepada kelas, anda boleh menukar gelagatnya tanpa mengubah suai kelas itu sendiri.
interface Meowing { public function meow(); } class RegularMeow implements Meowing { public function meow() { return 'meow'; } } class Cat { protected $_meowing; public function setMeowing(Meowing $meowing) { $this->_meowing = $meowing; } public function meow() { $this->_meowing->meow(); } }
Pendekatan ini fleksibel dan membolehkan penukaran gelagat mudah tanpa melanggar prinsip OOP.
Pertimbangan Prestasi:
Jika fail Myclass.php disertakan sekali sahaja semasa permintaan, fail Myclass_methods.php juga harus disertakan sekali sahaja, tidak kira berapa banyak kejadian kelas itu dicipta. Mekanisme pengoptimuman termasuk automatik PHP memastikan gelagat ini.
Kesimpulan:
Memasukkan kod terus ke dalam badan kelas PHP tidak boleh dilakukan kerana pengehadan bahasa. Sebaliknya, pertimbangkan untuk menggunakan kaedah import atau Corak Reka Bentuk Strategi untuk mencapai kefungsian yang diingini sambil mematuhi prinsip OOP dan mengekalkan kecekapan prestasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Kaedah Luaran ke dalam Definisi Kelas PHP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!