Trebuie transmise numai variabilele de standarde stricte, prin referire la modul de remediere

O eroare similară a apărut la trecerea la versiunea PHP 5.3, care interzice un apel de funcții cu un parametru constant, dacă funcția așteaptă o referință la o variabilă în acea locație.







Voi da un exemplu simplu. De exemplu, avem o functie care asteapta o trimitere la variabila $ b:

Dacă numim această funcție, înlocuind o valoare fixă ​​(constantă) pentru al doilea parametru, obținem eroarea Standarde stricte: Numai variabilele ar trebui să fie transmise prin ...:

Pentru a elimina această eroare fără a schimba logica programului, este necesar să înlocuiți parametrul 5 cu o variabilă egală cu această valoare:







În acest caz, totul este corect - funcția va primi o referință la variabila și nu va apărea o încălcare a standardelor.

O altă cauză obișnuită a acestei erori este transferul la intrare a funcțiilor care necesită un indicator la o variabilă, rezultatul executării unei alte funcții. Iată un exemplu:

În acest caz, vom vedea cum rezultatul funcției explode () este trecut direct ca parametru pentru funcția end (). Dar end () funcționează cu un pointer la o matrice, nu o valoare de matrice. Prin urmare, va exista și o eroare.

Soluția este aceeași ca în exemplul anterior:

Aceasta este, mai întâi, transferăm valoarea la o variabilă reală și numai atunci vom trece pointerul la această variabilă până la capăt ().

De fapt, toate erorile de acest fel sunt rezolvate în acest fel. În cazul în care programul dvs. undeva a început să acopere eroarea de mai sus, atunci trebuie doar să creați o variabilă temporară unde constanta este trecută în mod eronat.







Articole similare

Trimiteți-le prietenilor: