Saya mendapatkan kesalahan ini dan saya tidak bisa mengatasinya.
Pesan kesalahan sebenarnya adalah:
Kesalahan fatal: Tidak dapat menggunakan nilai pengembalian fungsi dalam konteks tulis di /home/curricle/public_html/descarga/index.php on line 48
Jalur 48 adalah:
if (isset($_POST('sms_code') == TRUE ) {
Apa yang mungkin terjadi di sini?
Inilah fungsi lengkapnya:
function validate_sms_code() {
$state = NOTHING_SUBMITED;
if (isset($_POST('sms_code') == TRUE ) {
$sms_code = clean_up($_POST('sms_code'));
$return_code = get_sepomo_code($sms_code);
switch($return_code) {
case 1:
//no error
$state = CORRECT_CODE;
break;
case 2:
// code already used
$state = CODE_ALREADY_USED;
break;
case 3:
// wrong code
$state = WRONG_CODE;
break;
case 4:
// generic error
$state = UNKNOWN_SEPOMO_CODE;
break;
default:
// unknown error
$state = UNKNOWN_SEPOMO_CODE;
throw new Exception('Unknown sepomo code: ' . $return_code);
break;
}
} else {
$state = NOTHING_SUBMITED;
}
dispatch_on_state($state);
}
php
fatal-error
cfischer
sumber
sumber
$state
tidak akan dimodifikasi, tidak perlu mengatur ulang keNOTHING_SUBMITED
jika sudah nilai itu.Jawaban:
Maksudmu
meskipun kebetulan Anda benar-benar jahat
sumber
if (isset($_POST['sms_code']) === TRUE ) {
:-)Ini juga terjadi ketika menggunakan kosong pada pengembalian fungsi:
karena kosong bukan fungsi tetapi konstruksi bahasa (tidak yakin), dan hanya membutuhkan variabel:
Baik:
Salah:
Sejak PHP 5.5, mendukung lebih dari variabel. Tetapi jika Anda membutuhkannya sebelum 5.5, gunakan
trim($name) == false
. Dari dokumentasi kosong .sumber
empty()
sebenarnya bukan fungsi; itu adalah konstruksi bahasa, sepertiecho
. Pengurai PHP menangani konstruksi bahasa secara berbeda. Dalam kasus iniempty
, ia melihat parameter sebagai variabel, bukan sesuatu yang harus dievaluasi, jadi jika Anda mencoba untuk melewati suatu fungsi, itu rusak. Setidaknya itulah pemahaman saya tentang hal itu. Info lebih lanjut di sini dan di sini .function mTEE($val){ return empty($val); }
ubah baris ini menjadi
Anda menggunakan tanda kurung () untuk
$_POST
tetapi Anda ingin tanda kurung siku []:)
ATAU
sumber
untuk WORDPRESS :
dari pada:
seharusnya:
sumber
Sintaks yang benar (pada akhirnya Anda memiliki tanda kurung yang hilang):
ps Anda tidak perlu
== TRUE
bagian, karena BOOLEAN (benar / salah) sudah dikembalikan.sumber
Ini dapat terjadi di lebih dari satu skenario, di bawah ini adalah daftar skenario terkenal:
// menggunakan tanda kurung untuk mengakses elemen array, tanda kurung digunakan untuk memanggil fungsi
Ini juga dapat dipicu ketika kami mencoba meningkatkan hasil fungsi seperti di bawah ini:
sumber
if(i++)
, mungkin terlihat lebih pendek daripada menambah penghitung dan kemudian mengevaluasi nilainya, tetapi itu akan menyebabkan Anda sakit kepala jika itu pernah keluar bug. Sunting: Saya tidak menyiratkan bahwa Anda melakukannya, hanya menunjukkan kepada pemrogram baru membaca jawaban dan berpikir ini adalah hal yang rapi, untuk menambah nilai sambil menghitung atau mengevaluasi apa yang sedang bertambah.=
daripada==
dalam pernyataan if.Masalahnya adalah
()
Anda harus pergi[]
oleh
sumber
Saya juga punya masalah serupa dengan Anda. Masalahnya adalah Anda menggunakan versi php lama. Saya telah meningkatkan ke PHP 5.6 dan masalahnya tidak ada lagi.
sumber
Skenario lain di mana kesalahan ini dipicu karena kesalahan sintaksis:
sumber
ucwords
mengembalikan string dan konteks panggilan salah, jika Anda mencoba misalnya dengan$Test = ''; ${ucwords('test')} = 'String new !'; echo $Test;
, maka menunjukkan kepada Anda nilai baru yang diberikan.saya juga mengalami masalah ini karena kesalahan sintaksis. Menggunakan "(" bukannya "[" dalam indeks array:
sumber
Kesalahan ini cukup benar dan menyoroti masalah sintaksis kontekstual. Dapat direproduksi dengan melakukan sintaksis "tidak dapat dialihkan" apa pun. Misalnya:
function Syntax ($ hello) {.... lalu coba panggil fungsi seolah-olah sebagai properti dan tetapkan nilai .... $ this-> Syntax ('Hello') = 'World';
Kesalahan di atas akan dilempar karena secara sintaksis pernyataan itu salah. Penugasan yang tepat untuk 'Dunia' tidak dapat ditulis dalam konteks yang Anda gunakan (mis. Secara sintaksis tidak benar untuk konteks ini). 'Tidak dapat menggunakan nilai pengembalian fungsi' atau bisa membaca 'Tidak dapat menetapkan nilai kanan ke fungsi karena hanya baca'
Kesalahan spesifik dalam kode OP seperti yang disorot, menggunakan tanda kurung bukan tanda kurung.
sumber
Dapat disebabkan oleh operator yang salah, =, padahal seharusnya ==
Kode ini melempar kesalahan ini
Perhatikan bahwa = adalah operator penugasan dan bukan operator pembanding. Perbaiki adalah mengubah = ke ==.
sumber