PHP OOP trait nedir?
Merhaba, bu yazımda PHP traitlere değineceğim, öncelikle traitlere neden ihtiyaç duyulmuştur kısmını açıklayarak başlamak istiyorum, PHP’de bir alt sınıfın yalnızca bir adet üst sınıfı olabilmekte, örnek ile açıklamak gerekirse;
class Admin
{
public function manageUser(int $userId)
{
// Logic for managing user
}
}
class SuperUser
{
public function showUser(int $userId)
{
// Logic for showing user
}
}
class SuperAdminUser extends Admin, SuperUser
{
public function manage()
{
$this->manageUser();
}
public function show()
{
$this->showUser();
}
}
Yukarıda görebileceğimiz gibi 2 farklı üst sınıftan kalıtım alma gibi bir durum PHP için söz konusu değil, bu durumda manageUser
ve showUser
fonksiyonlarını traitler yardımı ile ortaklayabiliyoruz, diğer bir değişle traitleri birden fazla sınıfta ortak olarak kullanılacak methodların tanımlanması için kullanabilmekteyiz;
trait ManagesUser {
private function manageUser(int $userId)
{
// Logic for managing user
}
}
trait ShowsUser {
private function showUser(int $userId)
{
// Logic for showing user
}
}
class SuperAdminUser
{
use ManagesUser, ShowsUser;
public function manage(int $userId)
{
$this->manageUser($userId);
}
public function show(int $userId)
{
$this->showUser($userId);
}
}
$superAdminUser = new SuperAdminUser();$superAdminUser->manage(1); // will work
$superAdminUser->show(1); // will work$superAdminUser->manageUser(1); // will not work because it's a private method
$superAdminUser->showUser(1); // will not work because it's a private method
Yukarıda ki örnekte de görebileceğimiz üzere ManagesUser
ve ShowsUser
traitlerini tanımlayıp bu traitleri istediğimiz tüm classlara tanımlayabildik, böylelikle bu traitleri tanımladığımız classlardan istediğimiz fonksiyonlara erişim sağlayabilmekteyiz.