How PHP Traits Work & Drawbacks

Things you’re going to learn :

  • Multiple inheritance problem
  • Example of coffee making multiple inheritance example

PHP is a single inheritance language and does not support multiple inheritance which means that you can only extend a single class but there are ways you can achieve something similar to multiple inheritance in PHP using traits or interfaces . 

Let's see what the problem is with the multiple inheritance and why we would care to have an alternative to multiple inheritance in PHP. For instance, we have a coffee maker class that has a method called make Multiple inheritance problem coffee and then also let's say that we get the specialty coffee makers like latte maker and cappuccino maker the thing is these specialty coffee makers can also make regular coffee.

In this case we would leverage the power of inheritance and extend the coffee maker from the latte and cappuccino maker and just add additional methods called make latte and make cappuccino. This is single inheritance and it is well supported and works in PHP.

Now let's say that down the road we got an all-in-one coffee maker which can make regular coffee but it can also make latte and you can make cappuccino in addition to some other additional features in some other languages you could use multiple inheritance and simply extend both latin maker and cappuccino maker in the all-in-one coffee maker class this is not supported in PHP and multiple inheritance does have its own problems. One such problem is called the diamond problem.

As you notice this forms a shape of a diamond right the problem is that if we override the make coffee method within both latte and cappuccino maker classes and we do not override the make coffee method within the all-in-one coffee maker.

The all-in-one coffee maker class would not know which make coffee method to run. This is a problem and some programming languages that support multiple inheritance solve this problem in different ways, however , PHP supports traits that lets you share common functionality from multiple classes.

Terrence Munodeiu

Terrence Munodei

Hi, I am Terrence Munodei, a Technical Consultant, Software Developer, and Solutions Architect. With vast experience in the field, I have honed my expertise in guiding individuals towards providing solutions. My unique approach is dedicated professionalism,and striving to provide you with the most effective, efficient, and elegant answers to your technical dilemmas. My dedication to continuous learning and development ensures I remain at the forefront of knowledge in Software Development, and Infrastructure Design and Implementation. Based on a structured and strategic approach, and proficiency, I provide a safe space for individuals and businesses to assess their technical problems, and unlock their true business and project potential.


Thank you for your interest in my services . If you have any questions or would like to learn more about Software Development, Services Streamlining, ERP Products, Infrastructure Implementation and Development Operations we are here to assist you. Please fill out the contact form below, and my dedicated team will respond to your inquiry promptly. Your privacy and confidentiality are of utmost importance to us. We are committed to providing a safe and supportive environment. We look forward to connecting with you and supporting you in achieving your goals.

My Location

Cape Town, Western Cape, South Africa


+27 61 728 1066

Your message has been sent. Thank you!