raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP - Aşırı Yükleme

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,441
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 7 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.jpg



C++ veya Java'da, terim bir sınıfın aynı adı taşıyan bir sınıf metodunu birden fazla kez ancak farklı argümanlar ve/veya dönüş türüyle kullanabileceği anlamına gelir. PHP'de, aşırı yükleme terimi farklı bir yoruma sahiptir. Özelliklerin ve yöntemlerin dinamik olarak oluşturulabildiği bir özelliktir. PHP'nin sihirli yöntemleri (çift alt çizgiyle başlayan yöntem adları) dinamik özellikler ve yöntemler kurmak için kullanılır.

Aşırı yükleme amacıyla kullanılan sihirli yöntemler, henüz bildirilmemiş veya geçerli kapsamda görünmeyen özellikler veya yöntemlerle etkileşime girildiğinde çağrılır.

Emlak Aşırı Yüklenmesi

PHP'nin sihirli metotlarına örnek olarak __construct(), __destruct(), __tostring() vb. verilebilir. PHP, özellikleri aşırı yüklemek için aşağıdaki sihirli metotları kullanır.

public __set ( string $name , mixed $value ) : void
public __get ( string $name ) : mixed
public __isset ( string $name ) : bool
public __unset ( string $name ) : void

Burada,

  • __set(), korumalı, özel veya var olmayan erişilemeyen özelliklere veri yazmak için çalıştırılır.
  • __get() erişilemeyen özelliklerden veri okur.
  • __isset() erişilemeyen özelliklerde isset() veya empty()'ı çağırır.
  • __unset() erişilemeyen özellikler üzerinde unset() çağrıldığında çağrılır.

Yukarıda kullanılan $ name argümanı, ayarlanacak veya alınacak özelliğin adıdır. __set() yönteminin $value argümanı, özelliğe atanacak değeri belirtir.

__isset() yöntemi belirli bir özelliğin ayarlanıp ayarlanmadığını kontrol eder. __unset() yöntemi özelliği kaldırır.

Özellik aşırı yüklemesi yalnızca nesne bağlamında çalışır . Herhangi bir statik bağlamda , bu sihirli yöntemler tetiklenmeyecektir. Bu nedenle statik olarak bildirilmemelidirler.

Örnek

Aşağıdaki kodda, sınıfta tanımlanmayan myprop isimli dinamik bir property set ediliyor ve alınıyor.

PHP:
<?php
   class myclass {
      public function __set($name, $value) {
         echo "setting $name property to $value \n";
         $this->$name = $value;
      }

      public function __get($name) {
         echo "value of $name property is ";
         return $this->$name;
      }
   }

   $obj = new myclass();

   # This calls __set() method
   $obj->myproperty="Hello World!";

   # This call __get() method
   echo "Retrieving myproperty: " . $obj->myproperty . PHP_EOL;
?>

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

setting myproperty property to Hello World!
Retrieving myproperty: Hello World!

__set () ve __get() büyülü yöntemleri de private olarak bildirilen bir özelliği ayarlar ve alır. Aşağıdaki ifadeyi myclass'ın içine (fonksiyon tanımlarından önce) ekleyin.


private $myproperty;

Özelliğin olup olmadığını kontrol edebilirsiniz, myclass'ta __isset() metodunu tanımlayın.

public function __isset($name) {
return isset($this->$name);
}

Bu ifadeyle özelliğin ayarlanıp ayarlanmadığını kontrol edin.

var_dump (isset($obj->myproperty));

Bu durumda true değeri döndürülür.

myclass'ta tanımlanan __unset() metoduyla dinamik olarak oluşturulan özelliğin ayarını kaldırmak için:

public function __unset($name) {
unset($this->$name);
}

Aşağıdaki kod false değerini döndürür:

var_dump (isset($obj->myproperty));


Yöntem Aşırı Yükleme

Yöntemleri dinamik olarak ayarlamak için kullanılan iki sihirli yöntem __call() ve __callStatic() ' tir.

public __call (string $name , array $arguments) : mixed
public static __callStatic (string $name , array $arguments) : mixed

__call(), bir nesne bağlamında erişilemeyen (tanımlanmamış veya özel olmayan) yöntemleri çağırırken tetiklenir. Öte yandan, __callStatic(), statik bir bağlamda erişilemeyen yöntemleri çağırırken tetiklenir.

Örnek

Aşağıdaki örnek PHP'de yöntem aşırı yüklemesini göstermektedir.

PHP:
<?php
   class myclass {
      public function __call($name, $args) {
      
         // Value of $name is case sensitive.
         echo "Calling object method $name with " . implode(" ", $args). "\n";
      }
      public static function __callStatic($name, $args) {
         echo "Calling static method $name with " . implode(" ", $args). "\n";
      }
   }
   $obj = new myclass();

   # This invokes __call() magic method
   $obj->mymethod("Hello World!");

   # This invokes __callStatic() method
   myclass::mymethod("Hello World!");
?>

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

Calling object method mymethod with Hello World!
Calling static method mymethod with Hello World!

" -> " operatörünün kullanılmasının, yöntemin bir örnek yöntem olduğu anlamına geldiğini ve "::" operatörünün, yöntemin bir statik yöntem olduğu anlamına geldiğini unutmayın.
 

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

Geri
Üst