Rumah >pembangunan bahagian belakang >tutorial php >Mengapa PHP Melemparkan Ralat 'Ungkapan Malar Mengandungi Operasi Tidak Sah' Semasa Menentukan Sifat Statik?
Ralat PHP: Ungkapan Malar Mengandungi Operasi Tidak Sah
Isu biasa yang dihadapi dalam pembangunan PHP ialah "Ralat maut: Ungkapan berterusan mengandungi operasi tidak sah " ralat, yang berlaku apabila anda cuba menggunakan operasi yang tidak sah dalam ungkapan malar. Ini biasanya berlaku apabila mentakrifkan sifat kelas atau parameter fungsi sebagai pemalar.
Masalah
Khususnya, dalam contoh yang diberikan, ralat ditemui pada baris 214 konfigurasi. php:
protected static $dbname = 'mydb_'.$appdata['id'];
Barisan ini cuba untuk menentukan sifat statik bernama $dbname, memulakannya dengan gabungan rentetan 'mydb_' dan nilai pembolehubah $appdata['id']. Walau bagaimanapun, permulaan ini tidak sah kerana $appdata['id'] bukan ungkapan tetap.
Penyelesaian
Penyelesaian kepada ralat ini adalah untuk memastikan bahawa semua statik pengisytiharan sifat atau parameter dimulakan dengan nilai literal atau malar yang boleh dinilai pada masa penyusunan. Dalam kes ini, $appdata['id'] bukan nilai malar, jadi ia tidak boleh digunakan dalam ungkapan malar.
Terdapat dua cara yang mungkin untuk menyelesaikan perkara ini:
protected $dbname = 'mydb_'.$appdata['id'];
Dengan mengalih keluar atribut statik, sifat menjadi sifat dinamik yang dimulakan pada masa jalan apabila pembolehubah $appdata['id'] ditakrifkan.
private static $dbname = 'mydb_' . 'CONSTANT_STRING';
Dengan menggunakan rentetan malar, pemulaan menjadi ungkapan malar yang boleh dinilai semasa menyusun masa.
Maklumat Tambahan
Adalah penting untuk memahami bahawa pengisytiharan statik diselesaikan semasa penyusunan. Ini bermakna bahawa nilai pembolehubah dan ungkapan dinamik lain tidak boleh digunakan dalam pengisytiharan berterusan.
Atas ialah kandungan terperinci Mengapa PHP Melemparkan Ralat 'Ungkapan Malar Mengandungi Operasi Tidak Sah' Semasa Menentukan Sifat Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!