Dalam PHP, keupayaan untuk membuat instantiate kelas daripada pembolehubah boleh berguna dalam pelbagai senario. Seseorang boleh mencapai fungsi ini dengan pendekatan di luar kaedah eval() yang kontroversi.
Masalah:
Pertimbangkan kod berikut:
$var = 'bar'; $bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');
Ini kod bertujuan untuk menjadikan kelas menggunakan pembolehubah sebagai nama kelas. Walau bagaimanapun, sintaksnya tidak betul.
Penyelesaian:
Untuk mencapai instantiasi kelas dinamik tanpa eval(), seseorang boleh menyimpan nama kelas dalam pembolehubah terlebih dahulu:
$classname = $var.'Class'; $bar = new $classname("xyz");
Dalam pendekatan ini, nama kelas diberikan kepada pembolehubah ($classname), dan kemudian contoh baharu kelas itu dicipta menggunakan pembolehubah $classname.
Penggunaan :
Teknik ini biasanya digunakan dalam corak Kilang, yang membolehkan penciptaan objek tanpa menyatakan nama kelas yang tepat. Ia juga menemui aplikasi dalam rangka kerja suntikan kebergantungan, di mana nama kelas boleh dijana atau dikonfigurasikan secara dinamik pada masa jalan.
Untuk pemahaman lanjut, rujuk dokumentasi tentang Ruang Nama dan ciri bahasa dinamik dalam PHP.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Instantiation Kelas Dinamik dalam PHP Tanpa Menggunakan eval()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!