Server’da PHP sürümümü 5.3.x’ten 5.5.x’e yükseltmemden sonra sitelerimde aldığım hatalardan biri de “strict standards – only variables should be passed by reference error” hatasıydı. Bu hata, değişken göndermeniz gereken yere başka birşey göndermenizden kaynaklanmakta.
PHP 5.5 sürümünden önce kullanıdığım kod şu şekildeydi;
$ilk_kelime = current(explode("/", $metin));
Fakat PHP’nin yeni sürümünde bu kod hata vermekte, çünkü explode işlemi bir array dizi döndürüyor. Fakat kendisi bir değişken değil. Aynı şekilde kodumuz, current(array("bir","iki","üç"));
şeklinde olsaydı da aynı hatayı alacaktık. current, end gibi fonksiyonlar, bir değişken ile işlem yapabiliyor. Dolayısıyla bu gibi fonksiyonların içerisine bir değişken göndermemiz gerekli.
Sonuç olaraqk kodumuzu aşağıdaki gibi düzenleyebiliriz.
$metin_array = explode("/", $metin);
$ilk_kelime = current($metin_array);
Yukarıdaki kodda, explode işleminin sonucunu bir değişkene atıp, current fonksiyonu içerisinde bu değişkeni kullanarak sorunu çözmüş olduk.
Yazı Ne Hakkında : code, coding, current, developer, end, error, hata, PHP, strict standards, web dersleri
ben bu hatayı kullanıcı girişinde alıyorum. yerelde çalışan giriş server a attığım zaman bu şekilde hata veriyor ve kullanıcı girişi yapmıyor. kullanıcı adında / karakteri olmadığı için de explode boş döndürüyor o şekilde de hata veriyor. yardımcı olabilir misiniz acaba?
kullanıcı adını bi değişkene ata, explode işleminden hemen önce if sorgusuyla kullanıcı adı değişkenini kontrol et sonra explode işlemi uygula. ozaman sorunun çözülmüş olur diye düşünüyorum.
gibi kullanabilirsin
$this->_selfLink = array_shift( explode( ‘?’, $_SERVER[‘REQUEST_URI’] ) ) . ‘?page=’ . $this->_page;
aynı hatayı bu satırda alıyorum. nasıl bir düzeltme yapılması gerekir.
Aynı şekilde explode fonksiyonundan dönen değeri bir değişkene atıp kullanman gerekli.
Bu şekilde kullandığında hata vermemesi lazım..