Saya semakin banyak melihat perkara ini, tetapi saya tidak pasti apa yang perlu dilakukan untuk menghentikan amaran ini:
DILARANG: Mencipta sifat dinamik... DILARANG
Ini kelas saya:
class database { public $username = "root"; public $password = "password"; public $port = 3306; public function __construct($params = array()) { foreach ($params as $key => $value) { $this->{$key} = $value; } } }
Beginilah cara saya membuat seketika.
$db = new database(array( 'database' => 'db_name', 'server' => 'database.internal', ));
Ini memberi saya dua mesej:
DILARANG: Cipta pangkalan data sifat dinamik::$database Ditamatkan
DILARANG: Cipta pangkalan data sifat dinamik::$server Ditamatkan
Amaran ini memberitahu anda bahawa harta yang anda cuba tetapkan tidak disenaraikan di bahagian atas kelas.
Apabila anda menjalankan arahan ini:
kira-kira bersamaan dengan ini:
Amarannya ialah tiada baris dalam definisi kelas yang menunjukkan bahawa
$db->database
或$db->server
wujud.Pada masa ini, ia dicipta secara dinamik sebagai harta awam yang tidak ditaip, tetapi pada masa hadapan, anda perlu mengisytiharkannya secara eksplisit:
Dalam beberapa kes yang jarang berlaku, anda sebenarnya ingin mengatakan "sifat kelas ini ialah apa jua sifat yang saya putuskan untuk tambah semasa masa jalan"; dalam kes itu, anda boleh menggunakan atribut
#[AllowDynamicProperties]
seperti ini:Bandar Binzhou, Wilayah Shandong*** gaji sangat tinggi
Jadi amaran datang daripada pembina yang menambah sifat kelas dinamik. Nampaknya anda membuat sesuatu yang mudah terlalu rumit jika anda tidak perlu melepasi medan secara dinamik dan tulen, jadi cuba sesuatu seperti ini.
Adakah ada sebab mengapa anda memerlukan parameter dinamik? Anda juga boleh melakukan ini:
Jika anda menambah parameter lebih awal daripada masa, ia tidak dinamik, anda hanya memberikan nilai kepada sesuatu yang sudah ada.
Ia sepatutnya berfungsi tanpa sebarang amaran.
Afan VS Jabatan Propaganda Sel Kerja sapu dulu VB