romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP – Yapıcı ve Yıkıcı

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,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!

create-rest-api-in-php.jpg


Nesne yönelimli dillerin çoğunda olduğu gibi, PHP'de de bir sınıfta bir kurucu fonksiyon tanımlayabilirsiniz. Yeni operatörle bir nesne bildirdiğinizde, üye değişkenlerine herhangi bir değer atanmaz. Kurucu fonksiyon, her yeni nesneyi bildirim anında başlatmak için kullanılır. PHP ayrıca, artık herhangi bir referansı olmadığı için nesneyi bellekten yok eden bir yıkıcı fonksiyona sahip olmayı destekler.

__construct() Fonksiyonu

PHP, bir nesneyi başlatan __construct() fonksiyonunu sağlar.

__construct(mixed ...$values = ""): void

Bir sınıfın içindeki oluşturucu yöntemi, yeni oluşturulan her nesnede otomatik olarak çağrılır. Bir oluşturucu tanımlamanın zorunlu olmadığını unutmayın. Ancak, mevcutsa, nesnenin kullanılmadan önce ihtiyaç duyabileceği herhangi bir başlatma için uygundur.

Oluşturucu fonksiyonuna istediğiniz kadar argüman geçirebilirsiniz. __construct() fonksiyonunun herhangi bir dönüş değeri yoktur.

Önceki bölümde kullanılan Book sınıfında bir constructor tanımlayalım.

PHP:
<?php
   class Book {
 
      /* Member variables */
      var $price;
      var $title;

      /*Constructor*/
      function __construct(){
         $this->title = "PHP Fundamentals";
         $this->price = 275;
      }
     
      /* Member functions */
      function getPrice() {
         echo "Price: $this->price \n";
      }

      function getTitle(){
         echo "Title: $this->title \n";
      }  
   }

   $b1 = new Book;
   $b1->getTitle();
   $b1->getPrice();
?>

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

Title: PHP Fundamentals
Price: 275

Parametreli Oluşturucu

$b1'in üye değişkenleri setTitle() ve setPrice() yöntemlerini çağırmaya gerek kalmadan başlatıldı, çünkü oluşturucu nesne bildirilir bildirilmez çağrıldı. Ancak, bu oluşturucu her nesne için çağrılacak ve dolayısıyla her nesnenin title ve price özelliklerinin aynı değerleri olacak.

Her nesneyi farklı değerlerle başlatmak için __construct() fonksiyonunu parametrelerle tanımlayın.

__construct() fonksiyonunun tanımını aşağıdaki şekilde değiştirin:


function __construct($param1, $param2) {
$this->title = $param1;
$this->price = $param2;
}

Nesneyi başlatmak için, bildirimdeki parantez içindeki parametrelere değerler geçirin.

$b1 = new Book("PHP Fundamentals", 375);

Örnek

Artık her nesneye üye değişkenlerine farklı değerler atayabilirsiniz.

PHP:
<?php
   class Book {
 
      /* Member variables */
      var $price;
      var $title;

      /*Constructor*/
      function __construct($param1, $param2) {
         $this->title = $param1;
         $this->price = $param2;
      }

      /* Member functions */
      function getPrice(){
         echo "Price: $this->price \n";
      }

      function getTitle(){
         echo "Title: $this->title \n";
      }
   }

   $b1 = new Book("PHP Fundamentals", 375);
   $b2 = new Book("PHP Programming", 450);

   $b1->getTitle();
   $b1->getPrice();
   $b2->getTitle();
   $b2->getPrice();
?>

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

Title: PHP Fundamentals
Price: 375
Title: PHP Programming
Price: 450

Yapıcı Aşırı Yükleme

Metot aşırı yüklemesi, bir sınıfın her biri farklı sayıda argümana sahip birden fazla oluşturucu tanımına sahip olabileceği nesne yönelimli programlamada önemli bir kavramdır. Ancak PHP, metot aşırı yüklemesini desteklemez. Bu sınırlama, oluşturucu işlevinde varsayılan değerlere sahip argümanlar kullanılarak aşılabilir.

__construct() fonksiyonunu aşağıdaki şekilde değiştirin:

function __construct($param1="PHP Basics", $param2=380) {
$this->title = $param1;
$this->price = $param2;
}

Şimdi, parametre geçirmeden bir nesne ve parametreli bir nesne bildirin. Parametresiz olanlardan biri varsayılan argümanlarla, diğeri geçirilen değerlerle başlatılacak.

$b1 = new Book();
$b2 = new Book("PHP Programming", 450);

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

Title: PHP Basics
Price: 380
Title: PHP Programming
Price: 450


Yapıcıda Tür Bildirimi

PHP (7.0 sürümünden itibaren) fonksiyon argümanları için skaler tip bildirimlerine izin verdiğinden, __construct() fonksiyonu şu şekilde tanımlanabilir:

function __construct(string $param1="PHP Basics", int $param2=380) {
$this->title = $param1;
$this->price = $param2;
}

PHP'nin önceki sürümlerinde, bir kurucu fonksiyonu tanımlamak için sınıf adının kullanılmasına izin veriliyordu, ancak PHP sürümü 8.0'dan itibaren bu özellik kullanımdan kaldırıldı.

__destruct() Fonksiyonu

PHP'nin ayrıca bir __destructor() fonksiyonu vardır. C++'daki gibi diğer nesne yönelimli dillerdekine benzer bir yıkıcı kavramını uygular. Yıkıcı yöntemi, belirli bir nesneye başka referans olmadığı anda çağrılacaktır.

__destruct(): void

__destruct() fonksiyonunun herhangi bir parametresi yoktur, ayrıca herhangi bir dönüş değeri de yoktur. __destruct() fonksiyonunun herhangi bir nesne kapsam dışına çıktığında otomatik olarak çağrılması, fonksiyon içine var_dump($this) koyarak doğrulanabilir.

Yukarıda belirtildiği gibi, $this çağıran nesneye referansı taşır, döküm üye değişkenlerinin NULL olarak ayarlandığını gösterir.

Yıkıcı işlevi Book sınıfına aşağıdaki gibi ekleyin.

function __destruct() {
var_dump($this);
echo "object destroyed";
}

Programdan çıkıldığında aşağıdaki çıktı görüntülenecektir:

object(Book)#1 (2) {
["price"]=>
NULL
["title"]=>
NULL
}
object destroyed
 

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

Geri
Üst