Deprecated Non-static method should not be called statically (Php 5’ten 7’ye)

Php sürüm 5 te sınıf içerisinde kullandığınız statik fonksiyonları php sürrüm 7 ve 8 de çalıştırmak istediğiniz de böyle bir hata ile karşılaşabilirsiniz.

PHP
1 lines
class Sınıfım{ function fonksiyonum(){ } }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PHP 5 için çalışan şekli aşağıdaki gibidir.

PHP
1 lines
Sınıfım::fonksiyonum();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PHP7+ için bu şekilde düzeltebilirsiniz.

PHP
1 lines
(new Sınıfım)->fonksiyonum();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Böylelikle hatanızdan kurtulup çalışan bir statik fonksiyonunuz olacaktır.

Warning: get_class() called without object from outside a class in Hatası Çözüm

Hata Örneği

PHP
9 lines
<?php
class sinif{
public static function OrnekAl(){
return null;
}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

get_class ile bir sınıf ismi döndürmek istedik. Fakat dönen test::OrnekAl() sonucu bir fonksiyon içindeki null‘dü. Düzeltmek için aşağıdaki yöntemler kullanılabilir.

1.Ana ismi almak için fonksiyon sonucunu static sınıfa çevirmek

PHP
9 lines
<?php
class sinif{
public static function OrnekAl(){
return new static;
}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

2.Ana ismi almak için fonksiyon ismini kaldırmak

PHP
9 lines
<?php
class sinif{
public static function OrnekAl(){
return null;
}
}
class test extends sinif{}
echo get_class(new test);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

3.Alt ismi almak için sınıfı döndürmek

Markdown
9 lines
<?php
class sinif{
public static function OrnekAl(){
return new sinif;
}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

4.Alt ismi almak için direk sınıfı çağırmak

PHP
9 lines
<?php
class sinif{
public static function OrnekAl(){
return null;
}
}
class test extends sinif{}
echo get_class(new sinif);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX