Sobes.tech
Junior

Sınıfın hangi sihirli metodlarını biliyorsunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

PHP'de "sihirli" olarak adlandırılan bir dizi özel yöntem vardır. Bunlar, sınıf nesneleriyle belirli işlemler sırasında otomatik olarak çağrılır. İşte bazıları:

  • __construct(): Yeni bir sınıf örneği oluşturulduğunda çağrılır. Nesnenin başlatılması için kullanılır.
  • __destruct(): Nesne yok edildiğinde çağrılır (örneğin, betik çalışması sona erdiğinde veya açıkça unset() çağrıldığında). Kaynakları serbest bırakmak için kullanılır.
  • __call($name, $arguments): Erişilemeyen (mevcut bağlamda görünmeyen) bir yöntemi çağırmaya çalışırken çağrılır. $name çağrılan yöntemin adı, $arguments ise onun argümanlarının dizisidir.
  • __callStatic($name, $arguments): __call() ile benzerdir, ancak erişilemeyen statik bir yöntemi çağırmaya çalışırken çağrılır.
  • __get($name): Erişilemeyen bir özelliği okumaya çalışırken çağrılır. $name özelliğin adıdır.
  • __set($name, $value): Erişilemeyen bir özelliğe yazmaya çalışırken çağrılır. $name özelliğin adı, $value ise atanan değerdir.
  • __isset($name): isset() veya empty() kullanılarak erişilemeyen bir özelliğin varlığı kontrol edilirken çağrılır. $name özelliğin adıdır.
  • __unset($name): Erişilemeyen bir özelliği unset() ile silmeye çalışırken çağrılır. $name özelliğin adıdır.
  • __sleep(): Nesne serialize() ile serileştirilmeden önce çağrılır. Serileştirilecek özelliklerin isimlerini içeren bir dizi döndürmelidir.
  • __wakeup(): Nesne unserialize() ile deserialize edildikten hemen sonra çağrılır. Bağlantıları veya kaynakları geri yüklemek için kullanılabilir.
  • __toString(): Nesneyi dizeye dönüştürmeye çalışırken çağrılır (örneğin, echo ile çıktı alınırken). Nesnenin dize temsili döndürmelidir.
  • __invoke(...$args): Nesne bir fonksiyon gibi kullanılırken çağrılır.
  • __set_state(array $properties): var_export() ile nesne geri yüklenirken çağrılır. var_export() tarafından dışa aktarılan özelliklerin dizisini alır.
  • __clone(): clone kullanılarak nesne klonlandığında çağrılır. Derin kopyalar yapmak için kullanılır (örneğin, nesne içindeki nesneler).

Bu yöntemleri dikkatli kullanmak önemlidir, çünkü yanlış kullanım kodun tahmin edilemeyen davranışlara yol açmasına neden olabilir.