Laravel's secret weapon: macros (watch me code)

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 พ.ย. 2024

ความคิดเห็น • 155

  • @PunterMcGavin
    @PunterMcGavin 6 หลายเดือนก่อน +77

    That macro/constructor stuff is absolutely disgusting. I love it.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +11

      🫡 at your service

  • @DivDax
    @DivDax 6 หลายเดือนก่อน +38

    Please more content like this. So much hidden gems we all can learn from. Keep it up!

  • @yanuar1420
    @yanuar1420 6 หลายเดือนก่อน +23

    hey man, you radiate a positive energy that make me more enthusiastic to code. Your attitude, confidence, enthusiasm, curiousity, adventurous and that "My site, my video" sass is contagious!
    Thank you for sharing that
    Please keep creating videos. You rocks!

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +4

      Thank you so much! I want to be a positive force, so that's encouraging

  • @Leonhart_93
    @Leonhart_93 6 หลายเดือนก่อน +12

    YES, reading Laravel's source files is a game changer. Not only you understand better what is the thing doing exactly, but you can find a lot of other useful functions and snippets in the process.
    And also I have been using DB query builder macros to add new functions to it, like one that automatically selects columns with an alias name, based on a map array loaded at the macro's definition, that maps column names.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +4

      I love to macro the query builder! Super powerful

  • @StefanMalic
    @StefanMalic 6 หลายเดือนก่อน +5

    Ay Ay Ron (sorry, intrusive thoughts won), this is the first time I'm seeing someone actually go beyond the basics in Laravel and talk about approaching Laravel not from a purely consumeristic perspective, but rather from an engineering perspective.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Haha it's ok, not the first time someone has called me that. And probably not the last!

  • @Tuto1902
    @Tuto1902 6 หลายเดือนก่อน +6

    I think I might need to watch this video a couple more times at 0.5 speed to fully grasp what I just saw. It's looks easy but magical at the same time.

  • @neverything
    @neverything 6 หลายเดือนก่อน +6

    This was fun, more of this please. Thank you Aaron!

  • @DevduttaBain
    @DevduttaBain 6 หลายเดือนก่อน +59

    "My site, My video" 😆🤣😆🤣

    • @elmalleable
      @elmalleable 5 หลายเดือนก่อน

      My rules

  • @Nettak012
    @Nettak012 6 หลายเดือนก่อน +1

    You just performed magic upon us with Laravel and PHP, my brother! Super educational and very informative. Thank you so much!

  • @waleedmasoom6326
    @waleedmasoom6326 6 หลายเดือนก่อน +3

    That starting snap and pop of the hands, asmr vibes. I can already tell this will be great!

    • @ihzakarunia2408
      @ihzakarunia2408 6 หลายเดือนก่อน

      ikr, i dont know how he did that with his hand..

  • @tealiedie
    @tealiedie 6 หลายเดือนก่อน +6

    I know it's kinda over-engineered, but damn, thanks for showing this laravel gem!
    more videos please

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +1

      Haha fun, right?

  • @Nittiyh
    @Nittiyh 6 หลายเดือนก่อน +3

    Fun video! It's always interesting to see what's under the hood and all the undocumented ways you can use the framework.
    An approach for this particular problem that I like to use is to have a "url" attribute accessor on my model, and have that be responsible for handing me the proper URL. That way, I don't even need to remember my route name throughout the project.

  • @swancompany_inc
    @swancompany_inc 6 หลายเดือนก่อน +2

    Great video! Really enjoy hearing you think out load when you're trying to figure things out. I think a scripted screencast is very valuable but watching an experienced developer wrestle with things gives a different look. Thanks Aaron! -Mike

  • @DesolatorM
    @DesolatorM 6 หลายเดือนก่อน +1

    I love the vibe of: let's do this no because a book say it's right, but because it sound interesting/fun, great video.

  • @sifrious
    @sifrious 6 หลายเดือนก่อน +1

    Love the format, definite pairing vibes or the most useful parts of a stream. Hope there's more like this

  • @martomystery
    @martomystery 6 หลายเดือนก่อน +1

    I had no idea this is how useful macros are.Am definitely exploring their use now.Awesome video!!!

  • @JT-mr3db
    @JT-mr3db 3 หลายเดือนก่อน

    Doing things like this is a great way to understand laravel’s inner mechanics.

  • @leocello
    @leocello 5 หลายเดือนก่อน

    I love it in Laravel. We extend a bunch of main Laravel code to cover our requirements. Awesome.

  • @lukmauu
    @lukmauu 6 หลายเดือนก่อน +1

    Holly cow, I always saw you around X, but I never thought too much about you. But after watching this my jaw dropped, we must be on Laravel lore forever as one of the greats.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Haha this is funny to me. Glad you're here!

  • @gilney.mathias
    @gilney.mathias 6 หลายเดือนก่อน +1

    This is funny... I watched this video a couple of days ago and today i found out a problem with Laravel+Mongo+Failed Queues and remembered of this video and implemented an 'extend' to 'fix' a laravel base class... 😅 Thanks man!
    (The base class isn't Macroable, tho, but i have access to the needed params from the $app instance 👌)

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Heyo! That rules

  • @TheMokx1
    @TheMokx1 6 หลายเดือนก่อน

    This is a great video about how to think!
    I would personally keep the original route URL and then redirect to the external URL in the show method, so when we add page statistics, trends, etc., that would also work for the external posts as well.

  • @andrewpratt7177
    @andrewpratt7177 6 หลายเดือนก่อน

    I have typed dd('here') and dd('1234') at least 7 million times in the last 10 years! I quite like Spatie's Ray product which essentially does the same thing but feels less blunt 🙃........Very relatable and enjoyable video - keep it up!

  • @lautarolopez5372
    @lautarolopez5372 6 หลายเดือนก่อน

    Your way of conveying knowledge is very pedagogical. You are a great programmer and disseminator of knowledge! I really like your videos. Keep it up!

  • @pindab0ter
    @pindab0ter 6 หลายเดือนก่อน

    This is absolutely great stuff! Just showing a way how to do advanced things in Laravel is great!

    • @pindab0ter
      @pindab0ter 6 หลายเดือนก่อน

      I just want to reiterate how much I appreciate that you made this. There's a LOT of beginner content out there. I really appreciate you making things on intermediate and advanced topics, too. I feel that the way in which you do it (showing the process, rather than just the result) makes it less intimidating. Finally, you're not solving a specific problem, you're using the problem to showcase a method of finding a solution, which is awesome as well!
      You got me gushing over how much I appreciate this video!

  • @ZamirMubashir
    @ZamirMubashir 6 หลายเดือนก่อน

    More videos like these! This was an absolute delight!

  • @arcborn
    @arcborn 6 หลายเดือนก่อน

    I've never messed with macros, but I want to mess with them now! Would love to see more content like this!

  • @n0ta
    @n0ta 6 หลายเดือนก่อน

    Fantastic content! I love to see how other people reasons about this kind of problems.

  • @cyclingcomputer
    @cyclingcomputer 6 หลายเดือนก่อน

    "I'm just going to leave it as it is." That's a Perfect approach. Nowadays, developers spend so much money and time on things that someone may ask to do something with them one day. Let's deal with that later when it is needed!

  • @lasserafn3789
    @lasserafn3789 6 หลายเดือนก่อน

    11:20 love how you didn't cut the video. Honest and funny

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Haha much more fun that way

  • @SaiyanJin85
    @SaiyanJin85 6 หลายเดือนก่อน

    That use of the weakmap was brilliant

  • @kedniko
    @kedniko 6 หลายเดือนก่อน

    Your content is truly unique and valuable!

  • @JustPlayerDE
    @JustPlayerDE 5 หลายเดือนก่อน

    i do really like this kind of video, for me at least it is easier to learn when i watch someone actually coding something ^^

  • @ahmad-murery
    @ahmad-murery 6 หลายเดือนก่อน

    I don't like it, I love it,
    More videos like this are always welcome.
    Thanks Aaron!

  • @SimoneFolador
    @SimoneFolador 6 หลายเดือนก่อน

    Great tutorial. I've never used Macroable before, it sure is a useful tool. Thanks!

  • @something00witty
    @something00witty 6 หลายเดือนก่อน

    Love watching the process!

  • @umairsaeed5925
    @umairsaeed5925 6 หลายเดือนก่อน

    The pause part just hilarious 😅 by the way what a effort need more these types of videos

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Classic Producer Steve adding those funny sound effects

    • @umairsaeed5925
      @umairsaeed5925 6 หลายเดือนก่อน

      @@aarondfrancis hats off for Steve already following him on twitter much appreicated his dedication in work

  • @adammenczykowski
    @adammenczykowski 6 หลายเดือนก่อน

    Been building apps for some time and i just learnt a lot! Thanks!

  • @jondoe79
    @jondoe79 6 หลายเดือนก่อน

    Mind blowing and made me think outside the box. 👍

  • @bphilsochill
    @bphilsochill 6 หลายเดือนก่อน

    Love the process and learned something new! Oh yeah, for your analytics, I came from twitter.

  • @anderskozuch7838
    @anderskozuch7838 6 หลายเดือนก่อน

    You are an inspiration and very much appreciated Aaron! Thanks so much for this video, learned a lot:)

  • @tanzimibthesam5861
    @tanzimibthesam5861 6 หลายเดือนก่อน

    This could have been the best thumbnail for a Mac promotion

  • @antonmykhailovskyi447
    @antonmykhailovskyi447 6 หลายเดือนก่อน

    This looks so terrible and so impressive at the same time. It`s just amazing to know that you can do it even in such pretty weird way.
    Great video Aaron, thank you so much for such high-quality content!

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      > so terrible and so impressive
      🫡

  • @clementmmas
    @clementmmas 6 หลายเดือนก่อน

    I both love it and hate it. That kind of stuff bit me a few times so I've learned to settle for much more boring solutions.
    Very entertaining video though. I'd love to see more advanced content like this.

  • @renzomarl
    @renzomarl 6 หลายเดือนก่อน

    GOLD CONTENT! More power broda!

  • @stevebauman
    @stevebauman 6 หลายเดือนก่อน +1

    Loved this!
    lol imagine if Laravel implemented final classes and prevented you from *gasp!* extending its implementations

  • @dennisadamczyk
    @dennisadamczyk 6 หลายเดือนก่อน

    9:03 I didn't know that people speaking english know the german word "verboten" which means forbidden 🤔
    Apart from this, I really appreciate that you make more videos now. They are so high quality, even the fact that there is close to no cut when you are speaking... wow. In my videos I mispronounce something every other sentence 😅 (German is a difficult language 😂) You are also explaining the things very close to how my thought process is. Hoping to see more of these kinds of videos!

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +2

      Haha sometimes things pop out of my mouth and I'm like... where did that come from!
      Glad you enjoyed it :) I enjoyed making it. I'll do more videos like this one!

  • @eliotalderson2892
    @eliotalderson2892 6 หลายเดือนก่อน

    We need more videos like this

  • @MikkelMalmberg
    @MikkelMalmberg 6 หลายเดือนก่อน

    The new studio is looking suuuper nice

  • @vlkf
    @vlkf 6 หลายเดือนก่อน +1

    You create amazing tutorials. Have you consider to create full laravel course? Thank you

  • @robwatson826
    @robwatson826 6 หลายเดือนก่อน

    Great video, I absolutely hate this with every fibre of my being due to the sheer complexity introduced here 🤣 but it's fascinating nonetheless.
    Would love to see more videos like this! Thanks for sharing

  • @xinotsultan3867
    @xinotsultan3867 6 หลายเดือนก่อน

    Its like hidden gem for me, even i doesnt use it, but still is good knowladge

  • @fuzzyfox0
    @fuzzyfox0 6 หลายเดือนก่อน +1

    This feels like a lot compared to just adding a redirect within your `ArticleController`'s `show` method at the start that does the sniff test for external, and responding with a redirect.
    Cool to see the process you followed for utilizing macro's though 😁

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +1

      Yup! Agreed!

    • @TheMoonWatcher
      @TheMoonWatcher 6 หลายเดือนก่อน

      Not an SEO person, but I imagine that will have some sort of SEO implications. I would imagine linking directly to the external URL is better than having the crawler follow a URL only to find it redirects you to an external site. Also it would be more transparent to the user to be able to see that the URL is external.
      But I do agree that your solution would be easier to implement 😂

  • @BenHolmen
    @BenHolmen 6 หลายเดือนก่อน +1

    Love macros! We use a bunch of carbon and eloquent macros

  • @jonashansen2512
    @jonashansen2512 6 หลายเดือนก่อน

    Like the idea, I would probably pull the macro out into a mixin and stick both the generator & mixin in an Extensions directory to signal it’s extending the framework. :)

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Oh that's a nice idea!

  • @thewizardguy1337
    @thewizardguy1337 6 หลายเดือนก่อน

    man i was with ya until the weakmap generator thing... i stopped comprehending at that point ! 😂

  • @mcr9875
    @mcr9875 13 วันที่ผ่านมา

    It's a great video as a tutorial, but you have to know where and when to use them, but what I don't like about macros is that they don't have autocompletion and Intellisense marks almost everything you do as an error (variables or functions are not defined).
    Also, in your video, if someone wants to do the same as you, I would recommend using "resolveRouteBinding" and "getRouteKey" in the model, because when you cache the routes, it will stop working, since once the routes have been cached, it stops reading web.php, api.php, etc, and therefore, "generateUrlsUsing" would not be called.

  • @isabelphillips451
    @isabelphillips451 6 หลายเดือนก่อน

    I enjoyed the video, I laughed almost all through the video .... the video reminds me or me when coding 😂😂😂😂😂

  • @LenWoodward
    @LenWoodward 6 หลายเดือนก่อน +2

    This is the type of content I love. Bending the framework to our will. This is the stuff that makes you feel like a programming wizard

  • @rudiedirkx
    @rudiedirkx 6 หลายเดือนก่อน

    Routes are cached & serialized, so Closures are probably not great. You should try it with cached routes. Empty weakmap? But it is fun making computers do what you want! Just test it with production config before you go to production :D

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Closures are great for demos like this 🙂 How would you extend differently? Would love to see some code!

  • @leroybakker8774
    @leroybakker8774 6 หลายเดือนก่อน

    Hey Aaron,
    Love your content. Just wondering; would it be possible to request an instance of your custom call using the container aswell?

  • @jackjaguar3837
    @jackjaguar3837 6 หลายเดือนก่อน

    Thanks Aaron!

  • @elikemdaniels7806
    @elikemdaniels7806 6 หลายเดือนก่อน

    Hi, Aaron. I have a question. Not directly related to Macros, but Laravel. 😁 When it comes to choosing a CMS to use with Laravel, which have you used before and which one(s) would you recommend for better editorial experience? Thanks.

  • @HannesVermeire
    @HannesVermeire 6 หลายเดือนก่อน

    Great content Aaron ✌😊✌

  • @TravisNorthcutt
    @TravisNorthcutt 6 หลายเดือนก่อน

    Producer Steve with the brutal crickets edit, ouch 😂

  • @citricguy
    @citricguy 6 หลายเดือนก่อน

    Love it!

  • @ZiPMo85
    @ZiPMo85 6 หลายเดือนก่อน

    Please more of this please

  • @christmex4540
    @christmex4540 3 หลายเดือนก่อน

    hey, what is IDE are you using? and what extension you are using for navigate to function and class? thank you

  • @MauriceKindermann
    @MauriceKindermann 6 หลายเดือนก่อน

    Cool idea and useful to see your way of debugging and unpacking framework code.
    But I was scratching my head the whole time, can't this entire thing be handled by 1, maybe 2 if/elses to returns the correct url? 🤔

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Maybe! But that's no fun

  • @younesessaadani9303
    @younesessaadani9303 6 หลายเดือนก่อน +1

    Is he really want to share macros feature or just piss off "clean code readers"v

  • @flipperiflop
    @flipperiflop 6 หลายเดือนก่อน

    Oh, so that is what the macros are! Also how would you document what you have done so you can understand it in 6 months when you have to work on that feature again?

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      I usually put them all in a single MacroServiceProvider so I know where to look when I come back to a project

  • @MouayedElhak
    @MouayedElhak 6 หลายเดือนก่อน

    very very nice

  • @xiCO2k
    @xiCO2k 6 หลายเดือนก่อน

    SEEEEEEEEEEEEEEEEEEE YAAAAAAAAAAAAAAA, loved that!

  • @JenuelDev
    @JenuelDev 3 หลายเดือนก่อน

    what theme are you using.

  • @ekroon
    @ekroon 6 หลายเดือนก่อน

    This is gold

  • @buddytynes8633
    @buddytynes8633 6 หลายเดือนก่อน +1

    This might be a dumb question, if so my bad... Why not just rebind this CustomUrlGenerator?

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Dunno! Gimme a code sample

    • @buddytynes8633
      @buddytynes8633 6 หลายเดือนก่อน

      ​@@aarondfrancis Something like this in your service provider? I'm just a jr dev don't listen to me lol.
      `public $bindings = [
      'url' => MyCustomUrlGenerator::class,
      ];`

  • @JimishFotariya97
    @JimishFotariya97 6 หลายเดือนก่อน

    I thought of adding Accessor on model itself. But hey my brain, my logic ;)

  • @stephenr85
    @stephenr85 6 หลายเดือนก่อน

    I use a top of the line Macbook Pro, and use Sail instances for dev (with a proxy manager layer to run multiple at the same time). The further into a project I get, the more painful it gets to do a quick dd() or run phpunit tests. Do you have any tips on dev environment setup and speed?

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +1

      I just use Laravel Herd locally!

  • @ltroya
    @ltroya 6 หลายเดือนก่อน

    Why is the use case of that addGenerator function? Cache maybe? If so, doesn't it get destroy after the request has finished?

  • @MattiaMarchiorato
    @MattiaMarchiorato 5 หลายเดือนก่อน

    Ahah, but we liked it Aaron ❤

  • @akhelijmohamed1063
    @akhelijmohamed1063 6 หลายเดือนก่อน

    More videos like that 🙏

  • @BernhardK91
    @BernhardK91 6 หลายเดือนก่อน

    If you meant the German word „verboten“ in 09:06, it means „forbidden“. 😊

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +1

      Yes! That's it!

  • @videolocos413
    @videolocos413 5 หลายเดือนก่อน

    What is your editor's theme?

  • @Betacak3
    @Betacak3 6 หลายเดือนก่อน +1

    9:03 sounds to me like you're saying the word "verboten", in which case it would be German and mean forbidden.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Yes! That's it! Thank you

  • @smirkastart5029
    @smirkastart5029 6 หลายเดือนก่อน

    I like your funny words magic man

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Haha thank you 😂

  • @arturpendrag0n270
    @arturpendrag0n270 6 หลายเดือนก่อน

    Neat trick with the macro stuff. Looks like its called MonkeyPatching in other places.
    I will see if I can add this at work #evil :D

  • @ScottZirkel
    @ScottZirkel 6 หลายเดือนก่อน

    I don't have to like this, but I do.

  • @faizanshakil2775
    @faizanshakil2775 2 หลายเดือนก่อน

    Subscribed!

  • @wagnerfernandes8780
    @wagnerfernandes8780 6 หลายเดือนก่อน

    23 minutes? You figure out things too quickly, I would have wasted a day on that 😅

  • @Meeshalkumar
    @Meeshalkumar 6 หลายเดือนก่อน +1

    Route would always consider your domain.
    You just need to construct your external urls any other way other than route methods.
    It’s a very strange video, creating a problem which doesn’t exists. At least till now 6:26

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Fun though right?

    • @Meeshalkumar
      @Meeshalkumar 6 หลายเดือนก่อน

      Sorry but this is wrong in every sense possible. And not fun at all for me.
      Think of new devs who watch your videos.
      Anyways, you do whatever you want. I am no police.
      Have a great day 👍🏼

  • @bombardo2489
    @bombardo2489 6 หลายเดือนก่อน

    Hey man i heard that laravel is batteries included. is the auth system secure

    • @chrispian
      @chrispian 6 หลายเดือนก่อน +1

      It's very robust. But if you don't like it, remove the batteries and put in your own. I use LDAP at work with Laravel, for example. We also have a few apps that use SSO with custom IDP. On most of my personal projects the built in stuff is perfect.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +1

      Yes, it is indeed secure

    • @bombardo2489
      @bombardo2489 6 หลายเดือนก่อน

      thank you guys.

  • @kwyaza
    @kwyaza 6 หลายเดือนก่อน

    Great video! This is my problem with modern "Laravel" PHP. Antipatterns, the interpreter has to parse all these 3 million layers.
    Unlike Java or C#, which is compiled down, it's fine to have so many layers.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +1

      Nah I think it's probably fine!

  • @adampatterson
    @adampatterson 6 หลายเดือนก่อน

    at 8:30, what shortcut was this?

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      Navigate > go to by reference > file structure

    • @adampatterson
      @adampatterson 6 หลายเดือนก่อน

      @@aarondfrancis Nice, thanks! I sometimes remember to use the navigation bar, but this looks slightly more purpose built.

  • @علیکشتکار-س4ط
    @علیکشتکار-س4ط 6 หลายเดือนก่อน

    Damn fr

  • @emircanerkul
    @emircanerkul 6 หลายเดือนก่อน

    I think no need to add $url = null also

  • @gosnooky
    @gosnooky 5 หลายเดือนก่อน

    Verboten == Forbidden (German)

  • @aibarra11
    @aibarra11 59 นาทีที่ผ่านมา

    dd('here') FTW! xdebug what?

  • @testdeim
    @testdeim 6 หลายเดือนก่อน

    yeah man! this is bullshit. you should extend Laravel url generator and set it as app('url') service.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน

      I'm not sure I'd call it bullshit... But ok! Show me some code, I'm not sure what you mean

  • @DarylLegion
    @DarylLegion 6 หลายเดือนก่อน

    "you don't have to like this"
    me: smashing the dislike button

  • @israeliloba
    @israeliloba 6 หลายเดือนก่อน

    This is higher level thing, didn't understand shit

  • @ivan.jeremic
    @ivan.jeremic 6 หลายเดือนก่อน +2

    Now I understand why JavaScript won and everything will eventually be written in it.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +2

      Huh

    • @thedailycutline278
      @thedailycutline278 6 หลายเดือนก่อน +2

      As a nextjs dev, i think people should move on, life as a dev should not be as tough as laravel makes it to be.

    • @languagelearningexperience6814
      @languagelearningexperience6814 6 หลายเดือนก่อน

      ​@@thedailycutline278 interesting, have you made anything in laravel? I find it refreshingly easy.

    • @aarondfrancis
      @aarondfrancis  6 หลายเดือนก่อน +2

      I appreciate all your comments but you don't have to watch these videos if you don't like them!

    • @Argie02
      @Argie02 6 หลายเดือนก่อน

      ​@@aarondfrancishe just hates php so bad haha