Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mencapai Instantiation Kelas Dinamik dalam PHP Tanpa Menggunakan eval()?

Bagaimana untuk Mencapai Instantiation Kelas Dinamik dalam PHP Tanpa Menggunakan eval()?

Mary-Kate Olsen
Lepaskan: 2024-11-14 20:33:02
asal
219 orang telah melayarinya

How to Achieve Dynamic Class Instantiation in PHP Without Using eval()?

Instasiasi Kelas Dinamik dalam PHP

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()');
Salin selepas log masuk

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");
Salin selepas log masuk

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan