PHP – Statik Yöntemler

Carissa

Administrator
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,439
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 6 Gün
Başarım Puanı
1,051
MmoLira
695,092
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!



PHP'deki "static" anahtar sözcüğü, bir PHP sınıfında statik özellikleri ve statik yöntemleri tanımlamak için kullanılır. Statik anahtar sözcüğünün ayrıca statik değişkenleri ve statik anonim işlevleri tanımlamak için de kullanıldığına dikkat edilebilir. Bu bölüm, bir PHP sınıfındaki statik yöntemleri ele almaktadır.

Bir sınıf tanımında, statik niteleyici ile bildirilen bir fonksiyon, onun statik metodu haline gelir.

PHP:
class myclass {
   public static function myStaticMethod() {
      // ...
}

Statik yöntemini çağırmak için sınıfın örneğini oluşturmanız gerekmez. Statik yöntem, kapsam çözümleme operatörü aracılığıyla sınıf adı tarafından çağrılır. Statik yöntem çağrısının sözdizimi şudur:

myclass::myStaticMethod();

Statik yöntemler sınıfın bir örneğini oluşturmadan çağrılabilir olduğundan, sözde değişken $this statik yöntemlerin içinde kullanılamaz. Statik bir yöntemin bir nesne tarafından çağrılmasına izin verilir, ancak bir örnek yöntemini statik bir yöntem olarak çağırmak hataya neden olur.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   class myclass {
  
      /* Member variables */
      static int $var1 = 0;
      public static function mystaticmethod() {
         echo "This is a static method".  PHP_EOL;
      }
      public function myinstancemethod() {
         echo "This is an instance method".  PHP_EOL;
      }
   }

   myclass::mystaticmethod();
   $obj = new myclass;
   $obj->myinstancemethod();
   $obj->mystaticmethod();
   myclass::myinstancemethod();
?>

Aşağıdaki çıktıyı üretecektir:

This is a static method
This is an instance method
This is a static method
PHP Fatal error: Uncaught Error: Non-static method
myclass::myinstancemethod() cannot be called statically


Statik Yöntemde "self" Anahtar Sözcüğü

Aynı sınıfta tanımlanmış bir örnek yönteminin içinden statik bir yöntemi çağırmanız gerekiyorsa, sınıfın adını belirten self anahtar sözcüğünü ve ardından kapsam çözümleme operatörünü (self::mystaticmethod gibi) kullanmalısınız.

PHP:
<?php
   class myclass {
  
      /* Member variables */
      static int $var1 = 0;
      public static function mystaticmethod() {
         echo "This is a static method".  PHP_EOL;
      }
      public function myinstancemethod() {
         echo "This is an instance method".  PHP_EOL; 
         echo "calling static method from instance method" . PHP_EOL;
         self::mystaticmethod();
      }
   }

   $obj = new myclass;
   $obj->myinstancemethod();
?>

Aşağıdaki çıktıyı üretecektir:

This is an instance method
calling static method from instance method
This is a static method

"Üst" Anahtar Sözcüğünü Kullanma

Miras durumunda, bir temel sınıfta tanımlanan statik bir metot, türetilmiş sınıfın bir nesnesi tarafından veya türetilmiş sınıfın bir örnek metodunun içinden, "parent" anahtar sözcüğüyle başvurularak çağrılabilir.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   class myclass {
  
      /* Member variables */
      static int $var1 = 0;
      public static function mystaticmethod() {
         echo "This is a static method".  PHP_EOL;
      }
      public function myinstancemethod() {
         echo "This is an instance method".  PHP_EOL;
         echo "calling static method from instance method" . PHP_EOL;
         self::mystaticmethod();
      }
   }

   class mynewclass extends myclass {
      public function myfunction() {
         echo "This an instance method of the derived class" . PHP_EOL;
         echo "Calling static method of the parent class" . PHP_EOL;
         parent::mystaticmethod();
      }
   }
   $obj = new mynewclass;
   mynewclass::mystaticmethod();
   $obj->myfunction();
?>

Aşağıdaki çıktıyı üretecektir:

This is a static method
This an instance method of the derived class
Calling static method of the parent class
This is a static method


Başka Bir Sınıfın İçinde Statik Yöntem

Statik metodu bir sınıftan diğerine çağırmak tamamen mümkündür. Adını sınıf adıyla nitelemeniz ve ardından kapsam çözümleme operatörünü kullanmanız gerekir.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   class myclass {
  
      /* Member variables */
      static int $var1 = 0;
      public static function mystaticmethod() {
         echo "This is a static method".  PHP_EOL;
      }
   }
  
   #this is not a derived class
   class mynewclass {
      public function myfunction() {
         echo "This an instance method" . PHP_EOL;
         echo "Calling static method of the another class" . PHP_EOL;
         myclass::mystaticmethod();
      }
   }
   $obj = new mynewclass;
   $obj->myfunction();
?>

Aşağıdaki çıktıyı üretecektir:

This an instance method
Calling static method of another class
This is a static method

$this sözde değişkeni statik bir yöntem için mevcut olmadığından, bir nesnenin örnek değişkenlerine statik bir yöntem içinde erişilemez. Yalnızca sınıfın statik özelliklerini işleyebilir.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   class myclass {
  
      /* Member variables */
      static int $var1 = 0;
      function __construct() {
         self::$var1++;
         echo "object number ". self::$var1 . PHP_EOL;     
      }
      public static function mystaticmethod() {
         echo "Number of objects available: " . self::$var1 . PHP_EOL;
      }
   }

   for ($i=1; $i<=3; $i++) {
      $obj = new myclass;
   }
   myclass::mystaticmethod();
?>

Aşağıdaki çıktıyı üretecektir:

object number 1
object number 2
object number 3
Number of objects available: 3
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)