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 – Özellikler

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-nin-en-guncel-10-ozelligi.jpg


PHP'de bir sınıf yalnızca bir üst sınıftan miras alabilir, PHP'de çoklu miras tanımlanmamıştır. Bu sınırlamayı aşmak için PHP'de nitelikler tanıtılmıştır. Bir nitelikte bir veya daha fazla yöntem tanımlayabilirsiniz, bu çeşitli bağımsız sınıflarda özgürce yeniden kullanılabilir.

Sözdizimi

"Trait" anahtar kelimesi aşağıdaki sözdizimine göre kullanılır:

trait mytrait {
function method1() {
/*function body*/
}

function method2() {
/*function body*/
}
}

Bir özellikteki metotları çağırabilmek için, use anahtar sözcüğü ile başka bir sınıfa sunulması gerekir.


Örnek

Bir Trait, bir sınıfa benzer, ancak yalnızca işlevselliği ince taneli ve tutarlı bir şekilde gruplandırmak için tasarlanmıştır. Bir Trait'i kendi başına örneklendirmek mümkün değildir.

PHP:
<?php
   trait mytrait {
      public function hello() {
         echo "Hello World from " . __TRAIT__ . "";
      }
   }
   class myclass {
      use mytrait;
   }
   $obj = new myclass();
   $obj->hello();
?>

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

Hello World from mytrait

Örnek

Bir özellik birden fazla sınıfta kullanılabilir. Aşağıdaki örnekte avg() fonksiyonu int it olan bir mytrait vardır. Bir marks sınıfının içinde kullanılır. percentage() metodu dahili olarak özellikten avg() fonksiyonunu çağırır.

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

PHP:
<?php
   trait mytrait {
      function avg($x, $y) {
         return ($x+$y)/2;
      }
   }
   class marks {
      use mytrait;
      private int $m1, $m2;
      function __construct($x, $y) {
         $this->m1 = $x;
         $this->m2 = $y;
      }
      function percent():float {
         return $this->avg($this->m1, $this->m2);
      }
   }
   $obj = new marks(50, 60);
   echo "percentage: " . $obj->percent();
?>

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

percentage: 55


Birden Fazla Özellik Kullanma

Bir sınıf birden fazla özellik kullanabilir. Burada her biri iki sayının toplama ve çarpmasını gerçekleştiren bir işleve sahip iki özelliğimiz var. Her ikisi de üçüncü bir sınıfın içinde kullanılır.

PHP:
<?php
   trait addition {
      function add($x, $y) {
         return $x+$y;
      }
   }

   trait multiplication {
      function multiply($x, $y) {
         return $x*$y;
      }
   }

   class numbers {
      use addition, multiplication;
      private int $m1, $m2;
      function __construct($x, $y) {
         $this->m1 = $x;
         $this->m2 = $y;
      }
      function calculate():array {
         $arr = [$this->add($this->m1, $this->m2), $this->multiply($this->m1, $this->m2)];
         return $arr;
      }
   }

   $obj = new numbers(50, 60);
   $res = $obj->calculate();
   echo "Addition: " . $res[0] . PHP_EOL;
   echo "Multiplication: " . $res[1] . PHP_EOL;
?>

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

Addition: 110
Multiplication: 3000

Özellik İşlevini Geçersiz Kılma

Bir sınıf belirli bir özelliği kullandığında, onun işlevi tıpkı bir çocuk sınıfın ebeveyn yöntemlerini miras alması gibi ona açıktır. Özellik işlevi ayrıca geçersiz kılınabilir.

PHP:
<?php
   trait mytrait {
      public function sayHello() {
         echo 'Hello World!';
      }
   }

   class myclass {
      use mytrait;
      public function sayHello() {
         echo 'Hello PHP!';
      }
   }

   $o = new myclass();
   $o->sayHello();
?>

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



"Bunun yerine" Anahtar Kelimesi

Bazen, iki özellikten daha fazlası aynı fonksiyon adına sahip olabilir. Bu nedenle, bunları bir sınıfta kullanmak belirsiz bir durum yaratır. PHP, ayrıştırıcı fonksiyona hangi özelliği kullanmayı düşündüğünüzü söylemek için Insteadof anahtar sözcüğünü sağlar.

PHP:
<?php
   trait mytrait {
      public function sayHello() {
         echo 'Hello World!';
      }
   }

   trait newtrait {
      public function sayHello() {
         echo 'Hello PHP!';
      }
   }

   class myclass {
      use mytrait, newtrait{
         newtrait::sayHello insteadof mytrait;
      }
   }

   $o = new myclass();
   $o->sayHello();
?>

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


Bir Özellik Fonksiyonunun Takma Adlandırılması

Aynı isimli fonksiyona sahip olsalar bile her iki özellikten de fonksiyonları çağırabilmek istiyorsanız, bir çözüm yolu olarak bunlardan birine takma ad belirtebilirsiniz.

Örnek

Aşağıdaki örnekte sayHello()'yu mytrait'ten hello() olarak çağıracağız.

PHP:
<?php
   trait mytrait {
      public function sayHello() {
         echo 'Hello World!' . PHP_EOL;
      }
   }

   trait newtrait {
      public function sayHello() {
         echo 'Hello PHP!' . PHP_EOL;
      }
   }

   class myclass {
      use mytrait, newtrait{
         mytrait::sayHello as hello;
         newtrait::sayHello insteadof mytrait;
      }
   }

   $o = new myclass();
   $o->hello();
   $o->sayHello();
?>

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

Hello World!
Hello PHP!
 

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

Geri
Üst