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.

class Sınıfım{ function fonksiyonum(){ } }

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

Sınıfım::fonksiyonum();

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

(new Sınıfım)->fonksiyonum();

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
class sinif{
	public static function OrnekAl(){
		return null;
	}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>

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
class sinif{
	public static function OrnekAl(){
		return new static;
	}
}
class test extends sinif{}
echo get_class(test::OrnekAl());
?>

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

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

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

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

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

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

 

cSQLi – Mysqli Veritabanı Sınıfı

<?php
header('Content-Type: text/html; charset=utf-8');
class cSQLi {
	public $oci;
	public $rs;
	public function __construct($server, $user, $pass, $db) {
		$this->oci = new mysqli($server, $user, $pass, $db);
		if (mysqli_connect_errno()) {
				printf("Bağlantı Hatası: %s\n", mysqli_connect_error());
   			exit();
		}
		if (!$this->oci->set_charset("utf8")) {
				printf("Utf8 Karakter Seçim Hatası: %s\n", $this->oci->error);
				exit();
		}
  }
	public function affRows() {
		return $this->oci->affected_rows;
	}
	public function closeOCI() {
		$this->oci->close();
	}
	public function closeRS() {
		$this->rs->close();
	}
	public function escape($string) {
		return $this->oci->real_escape_string($string);
	}
	public function killThread($tid) {
		$this->oci->kill($tid);
	}
	public function lastID() {
		return $this->oci->insert_id;
	}
	public function numRows() {
		return $this->rs->num_rows;
	}
	public function query($query) {
		return $this->rs = $this->oci->query($query);
	}
	public function fetch($query) {
		while ( $row = $query->fetch_assoc() ) {
			$results[] = $row;
		}
		return $results;
	}
}
$db = new cSQLi('localhost','root', '', 'php');
$query=$db->query('SELECT * FROM php WHERE id = 1');
print_r($db->fetch($query));
print_r($db->numRows());
print_r($db->affRows());
print_r($db->lastID());
print_r($db->escape("merhaba'lar"));
print_r($db->killThread(1));
print_r($db->closeRS());
print_r($db->oci);
print_r($db->closeOCI());

Çıktısı

Array([0] => Array([id] => 1))
1
1
0
merhaba\'lar
0
0
mysqli Object ( [affected_rows] => 1 [client_info] => mysqlnd 5.0.10 - 20111026 - $Id: xxxxx $ [client_version] => 50010 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 1 [host_info] => localhost via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.6.15-log [server_version] => 50615 [stat] => Uptime: 200502 Threads: 1 Questions: 579 Slow queries: 0 Opens: 95 Flush tables: 1 Open tables: 64 Queries per second avg: 0.002 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 95 [warning_count] => 0 )
mysqli_result Object ( [current_field] => 0 [field_count] => 6 [lengths] => [num_rows] => 1 [type] => 0 )

Zamana ve Eklere Göre Rastgele Şifre Üretme Sınıfı

<?php
class sifreUret{
  var $gecici;
  function sifreUret($uzunluk=6, $ek="kelime"){
    $sifre=$ek.date("s:H:m:i:s");
    $this->gecici=substr(md5($sifre), 2, $uzunluk);
  }
  function get_sifre(){
    return $this->gecici;
  }
}

$p=new sifreUret();
$p->sifreUret(8);           
print $p->get_sifre();
echo "<br>";
$p->sifreUret(8, "benimkelimem");           
print $p->get_sifre();
?>

Çıktısı

7fe03153
c65ebee1

 

En iyi Xml veya HTML Belgesi Oluşturma Sınıfı

<?php
Class Etiket{
  var $etiketler;
  function Etiket($ac,$icerik = null,$kapat = null){
    $this->ac = $ac;
    $this->icerik = $icerik;
    $this->kapat = $kapat;
  }
  function ekle($ac, $icerik, $kapat){
    $yeni_etiket = new Etiket( $ac, $icerik, $kapat );
    if( $this->kapat == null )
    {
      die("invalid ML object");
    }
    $this->etiketler[] = $yeni_etiket;
    return $yeni_etiket;
  }
  function derle( $derinlik = 0, $paragraf = "\t", $satirbasi = "\n" ){
		$metin=null;
    $centik = str_pad( "", $derinlik, $paragraf );
    $metin .= $centik . $this->ac . $satirbasi;
    if( $this->kapat == null )
      return $metin;
    if( $this->icerik != null)
      $metin .= $centik . $paragraf . $this->icerik . $satirbasi;
    if (is_array($this->etiketler)){
      $anahtarlar = array_keys($this->etiketler);
      foreach($anahtarlar as $anahtar){
        $metin .= $this->etiketler[$anahtar]->derle( $derinlik + 1, $paragraf );
      }
    }
    $metin .= $centik . $this->kapat . $satirbasi;
    return $metin;
  }
}

$ml=new Etiket("<html>","","</html>");
$ml->ekle("<h1>","Merhaba","</h1>");
$ml->ekle("<div>","Ulusan Yazılım","</div>");
echo $ml->derle();

?>

Çıktısı

<html>
	<h1>
		Merhaba
	</h1>
	<div>
		Ulusan Yazılım
	</div>
</html>