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:
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
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
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
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