When to use Traits, Interfaces, and Abstract Classes in PHP

Поделиться
HTML-код
  • Опубликовано: 14 июн 2024
  • If you've been working in PHP for at least a little while, chances are you've come across a Trait, Interface, or Abstract Class. What are they? How can I use them effectively?
    Let's dive in and discover a couple of use cases for each of them, and I'll explain some of their differences (and similarities).
    - 0:00 TL;DR
    - 0:47 Intro
    - 1:25 Traits
    - 5:48 Interfaces
    - 10:27 Abstract Classes
    - 14:49 All Done
    Send me new video ideas and vote on what's coming next: suggest.gg/aschmelyun
    Follow me on Twitter! / aschmelyun
    Join my newsletter, where I send out new information about twice a month in the PHP, JavaScript, and Docker realms: aschmelyun.substack.com
  • НаукаНаука

Комментарии • 52

  • @this.channel
    @this.channel 9 месяцев назад +4

    This is by far my favourite channel for learning SOLID and design patterns. I've struggled with this subject for so long.

    • @aschmelyun
      @aschmelyun  9 месяцев назад +1

      You're not the only one, I've also struggled with them a lot! I'm glad you liked the video.

  • @Tuto1902
    @Tuto1902 9 месяцев назад +10

    Always a good idea to refresh the basics. Thank you 👍

  • @DallinHitchcock
    @DallinHitchcock 25 дней назад

    Man, this is so clearly explained. What a great refresher. Thanks Andrew!

  • @Dekedence
    @Dekedence 2 месяца назад

    Really appreciate the real-life example of play/concert/movie to illustrate when best to use trait and interface.

  • @siphosethudlomo
    @siphosethudlomo 9 месяцев назад +1

    Straight to the point.
    I'll be watching this video a lot in the coming months, thank you.

  • @bsky1998
    @bsky1998 9 месяцев назад +1

    Awesome explanation! I found your channel through our mutual buddy Salazar, and you explained these concepts a bit better than Jeffrey Way did when I first saw his PHP OOP series on Laracasts years ago. Keep em coming!!

    • @aschmelyun
      @aschmelyun  9 месяцев назад

      That's awesome! And wow, that's a massive compliment, thanks! I'm glad you liked the video, and I'll definitely have to continue making videos like this.

  • @VitorJustin
    @VitorJustin 9 месяцев назад +2

    Such a clear explanation! Thank you, Andrew!

    • @aschmelyun
      @aschmelyun  9 месяцев назад +1

      I'm glad to hear it! Clear is what I aim for

  • @Staeufer
    @Staeufer 9 месяцев назад +1

    Thanks for the explanation and the examples. After reading the docs, I wasn't quite sure why all 3 exist and when to use them. Now with all 3 in context together, it makes perfect sense.

    • @aschmelyun
      @aschmelyun  9 месяцев назад

      This is one of the biggest reasons why I made this video: context. It's how I learn best, I need to see examples of certain concepts in order for them to really click. Glad you liked the video!

  • @fayetan1959
    @fayetan1959 Месяц назад

    thank you, explanation is easy to understand and follow

  • @KHALEDMORSHED
    @KHALEDMORSHED 9 месяцев назад +2

    Such a helpful tutorial, it boosted my basics. Thank you ❤

    • @aschmelyun
      @aschmelyun  9 месяцев назад

      Glad you liked it, thanks for watching!

  • @hammedmujeeb5145
    @hammedmujeeb5145 Месяц назад

    You just got yourself a new subscriber!!! Thanks Andrew.

  • @anaisabel19886
    @anaisabel19886 3 месяца назад

    Wonderful explanation! Thank you ❤

  • @andrewmusholt9327
    @andrewmusholt9327 Месяц назад

    I knew Interfaces, I knew Traits, I literally have never thought of Abstract classes as a combination of those two things - thanks!!

    • @aschmelyun
      @aschmelyun  Месяц назад

      Of course, glad you liked the video!

  • @raissa1826
    @raissa1826 Месяц назад

    Great Explanation!!!

  • @rcnhsuailsnyfiue2
    @rcnhsuailsnyfiue2 9 месяцев назад +6

    Traits are one of my favorite PHP features, they’re so helpful. I have a tenanted B2B application which runs in both the “user context” and the “business context” interchangeably. With a shared trait on both my User and Business models, I can access and interact with the current user (or their business) on either model, or even on any of their Eloquent relations too. Makes for great DX in a complex application like this one.

    • @lajeeshk
      @lajeeshk 9 месяцев назад

      A demo or github link is highly appreciated

    • @pwcodigo
      @pwcodigo 9 месяцев назад

      Very cool. I also have application tenanted B2B with laravel.

    • @maxymajzr
      @maxymajzr 9 месяцев назад

      What does trait have to do with tenancy? It's language assisted copy paste, you get to have same code without inheritance. Why is it so helpful in context of tenanted Eloquent models? I'm sorry if I sound like "that" guy but without context it's unclear what exactly helped you and what the problem you solved even was and why was using a trait the way to go.

  • @librasulus
    @librasulus 9 месяцев назад

    Great refresher, thanks!!

  • @peteremad5228
    @peteremad5228 9 месяцев назад

    very good explanation, thanks

  • @abdelmallem3478
    @abdelmallem3478 5 месяцев назад

    Oh merci d’avoir abordé ce sujet

  • @daria.butterflycookies
    @daria.butterflycookies 7 месяцев назад

    you explain everything very well, i could make very useful notes out of your video. thank you for the demonstration!

    • @aschmelyun
      @aschmelyun  7 месяцев назад

      Thank you for the kind words!

  • @zunnur1
    @zunnur1 9 месяцев назад

    Thank you Andrew.

  • @dfordemo981
    @dfordemo981 6 месяцев назад

    awesome and super clear demo 😊✅✅

    • @aschmelyun
      @aschmelyun  6 месяцев назад

      Thanks, I'm glad you appreciate it!

  • @nahuelfernandez2352
    @nahuelfernandez2352 9 месяцев назад

    Excelent video.

  • @joebashour
    @joebashour 8 месяцев назад

    Great example and as usual a very clear explanation. Thanks, Andrew!
    I have followed your vids for a while, but I just noticed I never subscribed. I did that today ;)

    • @aschmelyun
      @aschmelyun  8 месяцев назад

      Hey, thanks! That means a lot, appreciate the subscribe!

  • @roywastaken
    @roywastaken 4 месяца назад

    amazing video

    • @aschmelyun
      @aschmelyun  4 месяца назад +1

      Thanks, I'm glad you liked it!

  • @nelwhix
    @nelwhix 9 месяцев назад

    So helpful

  • @leilamalekhoseiny5888
    @leilamalekhoseiny5888 2 месяца назад

    thanks

  • @Yousef_3mr
    @Yousef_3mr 9 месяцев назад

    Thanks man ❤❤

  • @kirayamato6128
    @kirayamato6128 9 месяцев назад +2

    what ide and extension do you use to see that beautiful error box/message when hovering? thanks

    • @aschmelyun
      @aschmelyun  9 месяцев назад

      It’s just the default behavior from PHPStorm

  • @kurshadqaya1684
    @kurshadqaya1684 9 месяцев назад +1

    Very well explained.

  • @jayeshpatidar8928
    @jayeshpatidar8928 9 месяцев назад

    Which vs code extension can help to easily comment php documents in code?

  • @user-xu7fb2ug4t
    @user-xu7fb2ug4t 9 месяцев назад

    👍

  • @lajeeshk
    @lajeeshk 9 месяцев назад

    Which editor is this , php storm ?

  • @pwcodigo
    @pwcodigo 9 месяцев назад

    how managed to execute the object without composer or namespace ?
    when I try to execute, php index.php, an error message appears. Fatal error: Uncaught Error: Class "movie" not found in C:\laragon\www\index.php:17

    • @pwcodigo
      @pwcodigo 9 месяцев назад

      I had to put require_once.