All You Need to Know About traits in PHP

Published on Sep 16,2019 1.5K Views

All You Need to Know About traits in PHP

edureka.co

Before we understand traits in PHP. We have learned about inheritnce that means a class can extend other class. Let’s say, class B extends class A and class C is also extending class A which means function defined in class A can be accessed by class B and class C but suppose if class B and class C has overridden function X and let’s say class D is extending both classes.

Although multiple inheritances do not support it by PHP but suppose it would be a case then, Which function does class D will run? Is it from class B or Is it from class C? So this is actually multiple inheritance problem, that’s why PHP does not support it but there are many cases where you want to extend more than one classes for code reusability.

 

When we talk about single inheritance problem, class D extends class C, but what if we want to have some functions of class B in class D. For this we can use traits that are introduced in PHP 5.4. It is simple and easy to create. It is just like a class but only for a group of methods and like abstract classes, you cannot instantiate discretes.

 

 

Traits in PHP

Generally, They can define both static members and static methods which helps developers to reuse methods freely in several independent classes in different class hierarchies. Traits avoid problems associated with multiple inheritances, Mixins and also reduces complexity.

Syntax:

<?php
// syntax for trait in PHP
Trait sample
{
function ReturnType()
{
}
function ReturnDescription()
{
}
}
?>

Traits can be included within other classes in this way.

class Post
{
use Sharable;
}
class Comment
{
use Sharable;
}

As PHP does not allow multiple inheritances, Trait is used to overcome this by allowing us to reuse the same functionality in multiple classes. The below example demonstrates the working of traits in PHP.


<?php
trait Sample
{
public function func()
{
echo "trait";
}
}

class myClass
{
use sample;
public function func()
{
echo "class";
}
}

$obj = new myClass();
$obj->func();
?>

Output:

 

Advantage of Traits

Traits reduce code duplication whilst preventing complicated class inheritance that might not make sense within the context of your application.

This helps to allow define simple Traits that are clear and concise and then mix in that functionality where appropriate.

 

Traits vs Interfaces in PHP

Generally, the main difference between the Interfaces and Traits in PHP is that the Traits basically define the actual implementation of each method within each class, so the same interface is implemented by many classes but having different behavior, while traits are just chunks of code injected in a class in PHP.

<?php
interface SampleInterface
{
// function...
}
?>

With this, we come to an end of these traits in python article. I hope you have learned about Traits, Advantage of Traits and difference between Traits and Interfaces.

If you found this PHP blog relevant, check out the PHP Certification Training by Edureka, a trusted online learning company with a network of more than 250,000 satisfied learners spread across the globe.

Got a question for us? Please mention it in the comments section of ”Traits in PHP” and I will get back to you.

BROWSE COURSES
REGISTER FOR FREE WEBINAR Building Robust Applications with Spring Framework