⊗ppOpTrInr 77 of 107 menu

PHP'de OOP'de Trait'ler

Bildiğiniz gibi, PHP'de aynı anda birden fazla sınıftan miras alınamaz, sadece bir tane. Bu sorunu çözmek için daha önce bir yöntem görmüştük: miras alma yerine, bazı sınıfların nesnelerini diğerlerinin içinde kullanmak.

PHP'nin başka bir yolu daha var. Bu yol trait'lerin kullanılmasıdır. Bir trait, başka bir sınıfa dahil edilebilen özellik ve metotların bir koleksiyonunu temsil eder. Bu durumda trait'in özellikleri ve metotları, sınıf tarafından kendi özellikleri ve metotları gibi algılanacaktır.

Trait'in sözdizimi, trait adının trait anahtar kelimesi kullanılarak bildirilmesi dışında, sınıf ile aynıdır.

Bir trait örneği oluşturulamaz - trait'ler sadece diğer sınıflara bağlanmak içindir. Bağlanma işlemi, use komutu ile yapılır, bu komuttan sonra bir boşluk bırakılarak bağlanacak trait'in adı belirtilir. Bu komut sınıfın başında yazılır.

Trait'lerin pratik bir örnek üzerinde uygulanmasına bakalım. Diyelim ki bize name ve age özel özelliklerini ve onların alıcı (getter) metotlarını içeren Helper adında bir trait verilmiş olsun:

<?php trait Helper { private $name; private $age; public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Diyelim ki ayrıca, yapıcı metodunda (constructor) name ve age özelliklerinin ayarlandığı User adında bir sınıfımız var:

<?php class User { public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Şimdi User sınıfımızın özellikleri için alıcı metotlar (getter) ekleyelim. Ancak bu metotları sınıfın kendi içine yazmak yerine, bu metotların zaten uygulandığı Helper trait'ini bağlayalım:

<?php class User { use Helper; // trait'i bağla public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Trait bağlandıktan sonra, sınıfımızda bu trait'in metotları ve özellikleri ortaya çıkacaktır. Ayrıca, onlara sınıfın kendi metotları ve özellikleri gibi erişeceğiz:

<?php $user = new User('john', 30); echo $user->getName(); // 'john' yazdıracak echo $user->getAge(); // 30 yazdıracak ?>

name, age, population özellikleri ve bu özellikler için alıcı metotlara (getter) sahip City sınıfını uygulayın. Sınıfımız, kodunu kısaltmak için zaten oluşturduğumuz Helper trait'ini kullansın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet