Inheritance In a PHP Class and Object-Oriented Programming

Let’s talk about inheritance in PHP. First, here’s how you do it:

<?php
class Daddy {
    public function my_method() {
        echo "I'm the parent";
    }
}

class Son extends Daddy {
    
}

$child = new Son;
$child->my_method(); // This outputs "I'm the parent" from the parent class

The child is the class DOING the extending. The parent is the class BEING extended. And, the child inherits any public or protected properties and methods from the parent. This is why “Son” has no methods, but still outputs the results of my_method(). Because it inherited that method from Daddy.

But, private methods and properties are NOT inherited. So, this won’t work:

<?php
class Daddy {
    public function my_method() {
        echo "I'm the parent";
    }
    
    private function you_cant_haz() {
        echo "Only Daddy gets me!";
    }
}

class Son extends Daddy {
    
}

$child = new Son;
$child->you_cant_haz(); // This triggers a fatal error

You can also override inherited methods in the child. Like this:

<?php
class Daddy {
    public $var = "Call me Daddy! ";
    
    public function my_method() {
        echo $this->var;
    }
    
    private function you_cant_haz() {
        echo "Only Daddy gets me!";
    }
}

class Son extends Daddy {
    public $var = "Uh, that's creepy. No!";
    
    public function my_method() {
        echo $this->var;
    }
}

$parent = new Daddy;
$parent->my_method(); // This outputs "Call me Daddy!"

$child = new Son;
$child->my_method(); // This outputs "Uh, that's creepy. No!"

One example use case for this is WordPress widgets. When creating a new widget, your individual widget class extends WP_Widget to access and override its default methods. WordPress then does the “magic” of putting your widget together simply by you overriding the WP_Widget methods in your class.

Another example is the example OOP application shell I show you how to build in my object-oriented programming course. I give you a primer on MVC, which is obviously super popular right now, but is only one among many design patterns. But, I also show you another pattern I learned a few years back that I personally like better… and it involves some strategic inheritance like this. You can learn more about and enroll in my object-oriented programming course here.

Do you want more freelance clients?

I’ll show you what I learned over the last 15 years to grind out (from absolute scratch) a backlog of new clients wanting to hire you. Who your best client prospect are, what services you should be offering them, where to find them and more. Just enter your email address in the box below and let’s get started:

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on reddit
Reddit
Share on pinterest
Pinterest
John Morris

JOHN MORRIS

I’m a 15-year veteran of freelance web development. I’ve worked with bestselling authors and average Joe’s next door. These days, I focus on helping other freelancers build their freelance business and their lifestyles.

You might also like

This Post Has 6 Comments

  1. Hey John
    Thanks for this. This is about the point in the whole “class” discussion where my mind starts to get boggled a bit. I’m not the sharpest canyon in the programming box. It’ll take a little digesting but the more I look & mull it over the better my chance of coming to some kind of actual understanding.

    1. Yeah, it takes just digging into it. If you think of OOP as primarily an approach to application-building, I think it helps. It’s mostly about applications structure more than it is a right or wrong way to code.

  2. Hai john,where do you get this blog template.its simple and clean.can you tell me where do you get this.About your php 101 course its amazing. You are really really good at explaining something.i will buy oop course soon.

    1. Appreciate it! The theme I’m using is LayersWP.

  3. And also can you explain about php folder structure for building application.its makes me struggle.i know you know the best.

    Thanks john.

    1. Well so, folder structure is really determined by application structure, imo. So, depending on the design pattern you’re using or just how you choose to structure your application, that will heavily influence how you want to structure your folders. If you truly are going to get my OOP course soon, I talk about this in there in the autoload lesson. That’s where it really starts to become obvious.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Do you want more freelance clients?

Enter your email below to get started building your system for consistently bringing in new freelance clients:

WHAT OTHERS ARE SAYING

Daniel Mohlendick

On the Freelancing on Upwork course: “This is by far the best course i have watched on Skillshare!! Thank you so much.”

Thabo Motsoahae

John is one of the best instructors I have come across, I learned a lot from his online tutorials.

Ray Edwards

I recommend John every chance I get. If every person I worked with were as committed to excellence, punctuality, value, and unquestionable integrity… the world would be a better place. Highest recommendation.

Lewis Howes

John is amazing at building membership sites. He converted one of my sites over from it’s existing (hardly working) platform over to the clean and simple to use WishList membership platform. I highly recommend using John and WishList for any of your membership site needs.

Sukh Plaha

John is a fantastic and patient tutor, who is not just able to share knowledge and communicate it very effectively – but able to support one in applying it. However, I believe that John has a very rare ability to go further than just imparting knowledge and showing one how to apply it. He is able to innately provoke one’s curiosity when explaining and demonstrating concepts, to the extent that one can explore and unravel their own learning journey. Thanks very much John!

Bob Patterson

Not only is John a very talented programmer and developer, he is also an excellent communicator. He has a talent for taking complex subjects and communicating them in terms that anyone can understand. This is a rare combination. This ability has enabled me to take my skills and knowledge to the next level. Thank you John for for all that you do.

Close Menu