Rumah > pembangunan bahagian belakang > tutorial php > Mengapa PHP Melemparkan Ralat 'Ungkapan Malar Mengandungi Operasi Tidak Sah' Semasa Menentukan Sifat Statik?

Mengapa PHP Melemparkan Ralat 'Ungkapan Malar Mengandungi Operasi Tidak Sah' Semasa Menentukan Sifat Statik?

Susan Sarandon
Lepaskan: 2024-12-01 02:12:13
asal
963 orang telah melayarinya

Why Does PHP Throw a

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

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:

  1. Alih keluar atribut statik:
protected $dbname = 'mydb_'.$appdata['id'];
Salin selepas log masuk

Dengan mengalih keluar atribut statik, sifat menjadi sifat dinamik yang dimulakan pada masa jalan apabila pembolehubah $appdata['id'] ditakrifkan.

  1. Gunakan rentetan malar:
private static $dbname = 'mydb_' . 'CONSTANT_STRING';
Salin selepas log masuk

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!

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