PHP doesnt suck (anymore)

September 15, 2023

The kind folks at Log Rocket interviewed me about my "PHP doesn't suck anymore" video.

Transcript

Paul
00:00:11 – 00:00:33
Hi there, and welcome to PodRocket, a web development podcast brought to you by LogRocket. LogRocket helps software teams improve user experience with session replay, error tracking, and product analytics. Try it for free at logrocket.com today. My name is Paul, and joined with us is Aaron Francis. He's a content creator as well as a developer educator over at Planet Skill.
Paul
00:00:34 – 00:00:45
Today, we're talking about probably a hot button topic that a lot of folks are gonna be interested in. We're gonna be talking about why PHP doesn't suck anymore. Boy, were you excited to get into this one? Welcome to the show, Aaron.
Aaron
00:00:46 – 00:00:51
Hey. Thanks for having me. I am here to preach the good news of PHP. So I'm excited to be here.
Paul
00:00:51 – 00:01:24
So just a little background, Aaron, gives quite the video repertoire on various topics and you are a PHP lover yourself and you you talk about how great the language is. And one of the videos that you put out recently is quite literally titled PHP doesn't suck anymore. And you go over a bit of options about well, not I don't wanna call them options, but features that haven't been available. So before we get into the nitty gritty and, like, maybe talk about some of these great new things such as enums, very exciting. When did you start in PHP, and why did it grab your attention?
Aaron
00:01:25 – 00:01:49
So I'm one of those kids that started when I was, like, 13, and I think the first book I picked up was, like, asp.net unleashed. That was my first programming book. And I did asp.net as a kid for a little bit, but then I'm quickly moved on to PHP because it was just easier to deploy. You could every shared web host had PHP, and I was like, alright. I guess I'll use this language.
Aaron
00:01:50 – 00:02:05
And that's 20 years ago now. And I just stuck with it. It wasn't really a very well considered choice back then. I was like, oh, this is easy and I can make cool stuff. And, honestly, it's kinda been the same ever since.
Aaron
00:02:05 – 00:02:09
This is easy and I can make cool stuff. And so now here I am 20 years later.
Paul
00:02:10 – 00:02:22
What was one of the most fun projects, I guess, that you embarked on that really made you go, Hey, I could do this for real, this development thing. Because you didn't start out as a developer. Right?
Aaron
00:02:22 – 00:02:35
No. No. No. I, actually did it for fun as a kid, and then I went to college and got my degree in accounting. And while that sounds, like, totally insane, accounting is basically programming.
Aaron
00:02:35 – 00:02:57
It's just problem solving and puzzles and stuff, but with numbers. And then I got into the accounting world and was like, oh, man. Being an accountant is terrible. So I went to work at I went to work at a big four firm, which was a good firm, but I was like, this is an awful job. And so then I just bailed and went back to programming, and that was the first time I did it, like, professionally.
Aaron
00:02:57 – 00:03:20
And I think what made me think that I could actually do it for real was I just kept, it just kept my attention. And so I wanted to continually return to programming, and it was one of those things where it was like, well, you could play you you could maybe play a video game or you could program. And I was like, I kinda wanna program. I just wanna build stuff. I wanna make stuff.
Aaron
00:03:20 – 00:03:28
And I I think that's what was like, if I'm this interested in it, I could probably make a career out of it. And it worked, fortunately.
Paul
00:03:30 – 00:03:51
For well, fortunately for everybody, because now you're here to help educate others on this stuff as well. So if you see people learning PHP from your point of view, why do you think so many people get turned off by it initially? And before we get into any of the specifics of the language and the tools, like, just from bird's eye point of view.
Aaron
00:03:52 – 00:04:09
Yeah. From bird's eye point of view, I think there's a lot I think PHP has a lot of baggage. Right? So when I picked it up, it was, I I don't know, PHP 5.0 or whatever. And, like, I the reason that I picked it up is because it was easy, and that's the reason almost everyone picked it up.
Aaron
00:04:10 – 00:04:34
And so there is there's just a huge amount of really bad PHP that exists in the world. Both legacy and beginners. And so one of the great things about PHP is it's very beginner friendly. One of the bad things about PHP is it's very beginner friendly. And so you have this huge you have this huge population of beginners writing PHP.
Aaron
00:04:34 – 00:04:59
And I think that means that by volume, there's a lot of really bad PHP code. And that that perception has kinda lingered on, and the language itself is full of, we'll say, lovable quirks. You could call them flaws, but we'll we'll say lovable quirks. And I think that has gotten bad rap. And one of the reasons I made the videos is because I think people haven't looked at PHP in 10 years.
Aaron
00:04:59 – 00:05:06
But honestly, there's a lot of legacy and there's a lot of bad PHP out there, but that's just a that's just a volume problem.
Paul
00:05:07 – 00:05:39
Because I was gonna say, like, we have people on this web development centric podcast that are JavaScript's star of the show every day, and there's no beating around the bush to say that JavaScript doesn't have baggage. Oh my gosh. There's so much baggage of JavaScript. So there it's interesting to look at what bag like, what baggage is different and why it caught on a little bit more than PHP in the modern day and age. In the video in your YouTube video where you talk about PHP doesn't talk anymore, you noted 5.4, like the, Paramount turning point.
Paul
00:05:40 – 00:05:49
Do you think that offered in a new, like, cultural shift into how the language is used to maybe not make these beginner friendly mistakes? Is it trending in that direction?
Aaron
00:05:49 – 00:06:41
I think it's still really easy to bet to write bad PHP, but I think it's still really easy to write bad anything, frankly. So the reason I picked 5.4 is because that was maybe, I think, 11 years ago that 5.4 came out. And in 5.4, they started to, like the the velocity of changes and the velocity of improvements really started to pick up. And I think one of the meta points that I was trying to make in that video is, y'all, the the PHP core team is working really hard and they're, like, continuing to adapt to this changing environment and this changing world. And my guess is that I don't remember exactly when base camp and rails and Ruby started to take off, But I think that was around, like, 2007 maybe?
Aaron
00:06:41 – 00:07:08
2006, 7, 8, something like that. And I think PHP lost a lot of people to the Rails world, the rails ecosystem back then. And so I think a lot of people in their minds have PHP pegged back in the the early 20 tens, late 2000s. Right? And so one of the reasons I picked that era to go back to is it's long enough to go back to that most of these senior programmers in other languages, they remember.
Aaron
00:07:08 – 00:07:21
Like, they remember PHP. Everyone has gone through a PHP phase, and they remember it. And so I kinda wanted to, like, call back to be like, hey. I bet you stopped using it back then. Well, look at all the neat stuff we have now.
Paul
00:07:22 – 00:07:41
Awesome. And of these if we're at this bird's eye viewpoint right now, of the things that you think PHP does uniquely or PHP does really correct that kind of fosters ideas in either you or you've seen in other people in the way to develop? What might some of those be that bring you to back to the language continually?
Aaron
00:07:42 – 00:08:05
Yeah. Honestly, the things that bring me back to the language are are have very little to do with the language itself, which is weird to say. The community and the culture of PHP is very much like a like a builder hacker maker culture, and that is that's deep in my bones. I want to, like, I wanna build things. Like, I really enjoy the craft of programming.
Aaron
00:08:05 – 00:08:28
I actually do. But at the end of the day, I wanna use that skill to, I don't know, build something. Like, I wanna make a SaaS app or a tool or a cool open source package or something. Like, I want to accomplish a thing. And I think that's always been one of the great strengths of the PHP community is that we're really trying to use it as a means to an end to build something.
Aaron
00:08:28 – 00:09:01
And so this community is very very resourceful and productivity focused and building focused, and that that manifests itself in a few ways. We don't get into a whole lot of arguments internally in the community about things that may be minute or may not super matter because, like, our community is like, I don't know. Just do whatever you want. And that could be seen as a negative where it's, well, you're not respecting the craft of software development. And those we we have those conversations, but, honestly, it's like, hey.
Aaron
00:09:01 – 00:09:03
What are you building? Oh, cool. What are you working on? Oh, cool. That's great.
Aaron
00:09:03 – 00:09:15
You building a, you know, a side business, a SaaS, or you're working on something? And that's what keeps bringing me back is, like, the language is totally good enough, but the community, in my opinion, is just simply unbeatable.
Paul
00:09:17 – 00:09:33
Something about is definitely to be said about opinions and the opinions that can be formed in a, community. Are those opinions productive or not? That's another question. I mean, there there are a lot of opinions in the JavaScript ecosystem. Like, we we know about that.
Paul
00:09:33 – 00:09:43
Well, you could have a whole podcast just on the opinions about React. Is it a library or, or is it a framework? I could start a TV show. Yes.
Aaron
00:09:44 – 00:09:52
You would have that's an infinite content glitch. If anyone out there's like, oh, I don't know what to write about Just, react opinions and you'll be set for years.
Paul
00:09:52 – 00:10:29
Yeah. If any of our listeners out there are making your stacks out in JavaScript, if you're making any big full stack apps, I just wanna remind our listeners that the podcast that we're listening to right here is brought to you by LogRocket. And LogRocket is a framework that is aimed at helping you solve bugs faster and spend less time digging through your console, digging through your developer tools. So you can spend more time building and more of your focus and energy building. So you can use some of the new features that are coming out such as AI to look over your errors, surface different trends faster, and all sorts of other cool things like heat map.
Paul
00:10:29 – 00:10:53
So head over to logrocket.com to try it for free today. Now, Aaron, I would love to take the next section of the podcast and kinda dive into the specifics that you were mentioning in the video. Because I, for 1, as somebody who doesn't spend a lot of time in PHP and seeing and only having worked with old PHP code in the back, like, when I made my Raspberry Pi front end for my LED app.
Aaron
00:10:53 – 00:10:58
There you go. See? You're a PHP hacker maker at your core. I knew it was in there.
Paul
00:10:58 – 00:11:07
There you go. Yeah. It actually came out in a hacker context. So, yeah, peep folks were using PHP just to get it done. Just get the damn thing done.
Paul
00:11:07 – 00:11:25
So but there are a lot of things that you mentioned that I just had no idea or, like, could be a thing in PHP or there are things that I'm like, wait, PHP didn't have that and now it has it? Okay. That's that sounds really good. And one of the number one things I hinted at the beginning of the podcast was enums. So we didn't have enums before.
Paul
00:11:25 – 00:11:26
Was that in 5.4?
Aaron
00:11:28 – 00:11:58
Or gosh. Now if you're gonna ask me which version they came in, I'm gonna fail. But I know they weren't in 5.4 because I know that they were quite a bit later, surprisingly. So it used to be, like, in PHP, what we used to have to do is you would create a class that was like, we'll call it blog post statuses or something or just statuses. And then in your statuses class, you would have a bunch of class constants that was, like, archived, published, draft, in review.
Paul
00:11:58 – 00:11:59
Within a class.
Aaron
00:11:59 – 00:12:33
Within the class. And so you hacked your way around the fact that first party enums weren't available, and it was okay. But now we've got, like, 1st party enums, and what that allows us to do is that allows us to, like, you can have an enum that's, like, archived, and if you wanna put a backing value behind archived. So, like, in your code base, you want it to be nice and readable, archived, published, whatever. In your database, you want it to be compact and efficient and small, so you'd maybe do 0, 1, 2, 3, or whatever.
Aaron
00:12:33 – 00:12:48
So now PHP in there and with backed enums, you can have both of those things. And you can use a string as a backed enums. So you can, like, say, I actually wanna store the word archived in the database. That's totally fine. So that's, like, very basic level.
Aaron
00:12:48 – 00:13:31
But then beyond that, now that enums are a first party citizen, it's like a first class object in PHP, you can have stuff like so you have your enum class, which is like blog statuses. You've got your 4 enums at the top, but then your enum class can be filled with methods. And so you can have a method that's to friendly display or whatever, and it receives whatever that enum is and you can return a human readable string. So now your enums have become a little bit stronger where it used to just be, you know, the enum had a word and a value associated with it. Now it's this rich set of features where you can encapsulate, I need to show this in the mobile app or I need to show this in the front end or I'm gonna do my translations here.
Aaron
00:13:31 – 00:13:39
You can wrap all that up in a class. And then finally, everybody loves types. Right? JavaScript community, they're like, oh, man. I've gotta have my types.
Aaron
00:13:39 – 00:13:45
Gotta have type safety. If you don't have type safety, you're failing. Right? Okay. Well, whatever.
Aaron
00:13:45 – 00:14:32
Anyway, you can now type hint. You can type hint an enum, and what that means is if you have a method that it is expecting an enum, and that enum is, you know, archived, or published, or whatever, you can, on the method signature, say that this incoming argument must be an enum of blog status type. And what that means is it's not like checking to see if it's value 123, it's checking to see that you actually passed the enum value in, like the enum itself and not, like, the backed value of 123. And so now all those people that love type safety, of which I am barely one of, like, I don't super care about it. But now you can type in your enums and be like, this expects a proper enum, and I'm gonna give you a proper enum.
Aaron
00:14:32 – 00:14:41
And so that's the deal on enem. It's like we used to, like, with everything else, we would hack our way around it, and now we can, you know, we can do it the proper way.
Paul
00:14:42 – 00:15:03
Another feature that really caught my eye that felt super special to me as somebody that I I mean, I'm sure this exists. Apologies to other language lovers if this is in your language, and I'm saying that but it just felt special to me, the sensitive attribute. Like, this is something that I can just throw around in my code and make sure the logger doesn't spit it out to the console. Right?
Aaron
00:15:03 – 00:15:36
Yeah. Yeah. So I think, I should've looked at I should've written all these point releases down. But, like, in 8.0 or 8.1, something like that, we got the concept of attributes or, like, annotations to where you can mark you can mark a method as something, and you can, like, add these little kinda like decorators to methods or attributes or whatever. And one of the ones that is built in is these this sensitive parameter or sensitive argument, whatever it's called, annotation.
Aaron
00:15:36 – 00:15:57
And what that does is that tells the language, like, hey. I'm about to log for example, I'm about to log a user in. I'm gonna pass in username and password to this to this function, and then I want you to do the bcrypt and compare the whatever whatever. Right? It is possible because the user has submitted their password.
Aaron
00:15:57 – 00:16:13
It is possible that password could end up in your logs, and you really don't want that. Right? And so now at a language level, you can tell PHP, hey. This is a sensitive parameter. I need you to redact this from every log stack trace, whatever.
Aaron
00:16:14 – 00:16:48
And so that at a language level protect protects you from accidentally logging PII as long as you're annotating these attributes with sensitive parameter. And it's just that's the kind of thing where that's the kind of thing where I look at it and I'm like, somebody that was building an application in the real world looked at that and was like, we should add that to the language level. And that's the kind of stuff that I'm just super here for because that totally solves an actual problem that application developers have, and I love that.
Paul
00:16:49 – 00:17:06
It feels like a a melting pot for really good ideas that you get from the PHP ecosystem. I mean, going down the list of things that you threw into the YouTube video, it's like, I saw that in that language, and I saw this one in that language, and, like, this one had a lot of support over there, and it's just all here now.
Aaron
00:17:06 – 00:17:22
I know. A lot of a lot of the comments were like, oh, so it's just becoming JavaScript. Oh, so it's just becoming TypeScript. Oh, so it's just becoming c sharp. And I tried to reply to most of them and my response was like, isn't it wonderful how languages can learn from each other?
Aaron
00:17:23 – 00:17:37
Like, I I think they thought they were dunking on me, which it's YouTube. I don't I don't really care. I don't take any of it personally. I think they were they thought they were being clever, and my response is always trying to be good natured, and I was, like, sure. Yeah.
Aaron
00:17:37 – 00:17:41
Like, totally. That's awesome. Isn't it great? We should be happy that's the case.
Paul
00:17:42 – 00:18:02
Some of those, JavaScript TypeScript sort of things that really hail home to those, language lovers out there. They feel like a great natural progression because there are some things that maybe were in classic PHP, like short erase syntax. Right? We can use brackets now. That's one of the things you just started the video off and it's, wow, that really makes sense.
Paul
00:18:02 – 00:18:12
It could definitely alert in a whole new crowd of spectators who are on the fence about it. They're not showing like, oh, wait. I this is more comfortable for me. I can just immediately get it. I I know what it's saying.
Paul
00:18:12 – 00:18:18
What are some of the TypeScript, JavaScript y sort of features if you just wanna give those a quick advert?
Aaron
00:18:19 – 00:18:33
Yeah. For sure. So we, as PHP, have started adding types basically everywhere. And so PHP obviously has first first party classes, and we've got enums. And so you can type hint all of that.
Aaron
00:18:33 – 00:19:05
So you can say on your method signature that, like, you must pass a user class to this function or to this method. And so that's one place where you can start type hinting. And so I find that really useful, honestly. If I'm passing around models of a a lot of times, we use an active record style implementation in Laravel, the framework, which we should talk about. But if I'm passing around models, I like to know that the incoming argument is of type user or is of type blog post or whatever.
Aaron
00:19:05 – 00:19:38
So that would be type hinting on, like, a function or a method signature. You can also type hint like just scalar just normal types like int, float, string, that sort of thing. You can do return types, and so you can say this method must return a, int, float, user, whatever. On your classes, you can also type hint and say that, like, this attribute this attribute on the class level must be, a boolean or an integer or whatever. And so those are a lot of the places you can start to add types.
Aaron
00:19:38 – 00:20:05
One of the things we cannot do natively is generics. And and listen, I am not I'm not much of a type head. Like, I don't super care, but I understand that a lot of people do. And so we can't, at a language level, add generics yet, and so you could have some stuff that you can't really do in PHP, that you could do in TypeScript. But we also have world class tooling that allows you to add that on top.
Aaron
00:20:06 – 00:20:42
So I would say that if if we were to compare JavaScript to PHP, PHP has way more types than JavaScript. Right? But if we were to compare JavaScript to TypeScript, TypeScript has more, but TypeScript is like a whole other language topper on top of JavaScript. And for our purposes, we've got tools like PHP Stan and Psalm, p s a l m, Psalm. And those are static analysis tools and those add even more type support, including generics and static analysis and runtime analysis and all kinds of stuff like that.
Aaron
00:20:42 – 00:20:48
So we do have additional tooling, but I was really focused on just the language level in that video.
Paul
00:20:49 – 00:20:56
Gotcha. And let's, I mean, let's talk about it, Aaron. Why should we talk about Lyraville? Oh my gosh.
Aaron
00:20:56 – 00:21:17
What a great question. You set me up perfectly. So we talked about the reasons I keep coming back to PHP and the community is a big one. The productivity of Laravel, in my opinion, is unmatched by any modern web application stack. So let's let's break that apart a little bit.
Aaron
00:21:18 – 00:21:30
If you're building a modern web application, you need a lot of things these days. Right? You need you need a database layer. You need authentication. You need queue jobs.
Aaron
00:21:30 – 00:21:41
You need scheduled jobs. You need background jobs. You need to be able to send emails. You need all kinds of stuff to to basically end up at the starting line. Right?
Aaron
00:21:41 – 00:22:07
It used to be you could throw up a website and you get rich immediately. Nowadays, it's, oh, we gotta build something. You gotta build the real deal. And so Laravel is a it is a it's a framework that is written in PHP, and it brings you an unbelievable number of first party solutions. And I feel like I say, I'll I'll go and preach the Laravel gospel and people will be like, JavaScript has that.
Aaron
00:22:07 – 00:22:18
JavaScript has authentication. You could use Clerk or NextAuth or something. JavaScript has, queues. You would just use I don't even know. You just use this package.
Aaron
00:22:19 – 00:23:07
And I think the big differentiator is with Laravel. All of that stuff is built in to Laravel itself. And so what happens is if it's not built in, you end up spending a lot of time inventing the connective tissue between, let's say, 5 or 10 different packages, because you need your ORM to interact with your background job package, and you need your ORM to interact with your email package. And so, what you do is you pull off these all of these single packages, and not only do you not only do you write all the connective tissue yourself, then you also have to deal with independent upgrades yourself. Right?
Aaron
00:23:07 – 00:23:41
So let's say your ORM moves to version 4 on Tuesday and then your email provider moves to version 3 on Wednesday, and you're like, every day there's a new opportunity for one of these major components of your application to be upgraded independently of every other. And so then you're scouring blog posts online of, like, how do I get how do I get Prisma to work with next off? Oh, what version of Prisma? Well, I gotta go so you're doing all of this work so that you have the air quote freedom of building your own framework. And I'm like, listen.
Aaron
00:23:41 – 00:24:17
I don't wanna do any of that. I don't I don't wanna do any of that. I want some individual single entity to have thought about what is required to build a SaaS application, and I want that to be thought through from local development all the way to production and with millions of requests. Like, I want somebody to think through that whole life cycle, and then I'll come in on top and write the business logic that I need. And I feel like that's where Laravel has really succeeded is they've got several full time salaried developers simply working on open source.
Aaron
00:24:18 – 00:24:45
And so it's probably most analogous to Rails, except Rails doesn't have the the Rails team has Basecamp, and they have other things going on. The Laravel team is just focused on Laravel and making the lives of Lara Laravel developers easier. And that's that whole, I just can't I can't move any faster. Like, I can't pick any other stack and move faster. And then for, like, the JavaScript friends, you can use Vue or React on your front end.
Aaron
00:24:45 – 00:25:20
Like, there there are first party solutions to, like, how do we use how do we use Laravel with React? So one of the other things I like is Laravel hasn't invented, like, a JavaScript framework that's Laravel specific. It it concerns itself with what is the best back end solution in the world and how do we integrate with the best front end solutions in the world. And so we've got Vue, React, and then we have a Hotwire, something that's similar to Hotwire called Livewire, which is basically, an HTML over the wire thing, which would be similar to HTMLX, if any of your listeners are familiar with that. So that's my pitch.
Aaron
00:25:21 – 00:25:23
That is what I believe, and I'm sticking to it.
Paul
00:25:23 – 00:25:38
That sort of thing becomes increasingly pertinent. As you you said, like, the amount of services become more and more. A typical developer needs to learn way more to boot up a web app today than they did 10 years ago.
Aaron
00:25:38 – 00:26:04
So it's like the I forget what the math term is, but it's like for every node you add to the network, the it increases in complexity a certain amount, and that's how it is when you build your own framework out of off the shelf packages. It's like everything interacts with everything else. And so once you have 20 core packages interacting with 20 other 19 other core packages, it's like, oh, that complexity is through the roof.
Paul
00:26:04 – 00:26:26
If somebody like my let's say, like, myself has played with PHP, They've written a few functions, and they're like, okay. I wanna give this a modern and earnest try. What would you say is a great way to get started? Is it making a hello world web app? Do you suggest making a data processing thing just for the back end to run through a file?
Aaron
00:26:26 – 00:27:06
I'll give you a couple of answers. There is 1st, if you just wanna learn, there's a site called laracasts.com, and it's a great video tutorial website and there's a whole free series on modern PHP and on, like, up and running with Laravel 10, which is the latest version. So if you just wanna kinda, like, idly look and see what's going on, those would be good series to watch. It might surprise you how, like, neat some of it is. If you wanna build something, I would maybe if you wanna build a SaaS, I would pull down one of the Laravel starter kits that gives you gives you, like, a Sass skeleton all built out already, and you can start to poke around with that.
Aaron
00:27:06 – 00:27:47
And that's neat because that will show you like, that comes set up with, team support and sending emails and a lot of stuff that's like, oh, so that's how I would do this in PHP. If you wanted to build if you wanted to build, like, a fun CLI tool that took a CSV from your bank and, like, actually made it useful or something like that, which I feel like is a lot of what these weekend hack projects are. It's like, I'm gonna take some set of data that is terrible, and I'm gonna make it useful. You could pull down you could pull down just regular Laravel for that, or you could pull down something called Laravel 0, which is really focused on CLI tools. And that would be depending on what you wanna do, those would be some options.
Paul
00:27:48 – 00:28:13
Awesome. Well, those are two great ways for people to get started if they wanna look into the PHP ecosystem a little bit more. Aaron, if there is one of your favorite niche features, I don't wanna I don't want to say what's like the the best feature because that's arguable and everybody has different use cases. But, like, the one that wowed you the most, like, I I thought the the sensitive attribute was pretty cool. What would you say that is for you right now in modern PHP?
Aaron
00:28:14 – 00:28:31
Let's see. I think the I'll I'll give you I'll give you 2 answers just in case one is terrible. I think the one that I enjoy the most is the ability to type hand arguments because that's about the level of typing that I wanna do. That's a that's perfect for me. That is the sweet spot.
Aaron
00:28:31 – 00:28:43
I wanna know that this incoming user is a user class. Feel super great about that. 1 of that's so that's my first answer. If you hate that, here's my second answer. 1 of this is more philosophical.
Aaron
00:28:43 – 00:28:59
One of the things I put in that video was trailing commas in function calls. And a lot of people were like, dude, this is stupid. And it was a little bit it was a little bit of, hey, we can have some fun as a treat. You know? Like, hey, we're we're, like, this is YouTube.
Aaron
00:28:59 – 00:29:23
It's I'm, you know, I'm trying to be a little bit entertaining here. I think, philosophically, trailing commas and function calls, I look at that and I'm like, yeah. Like, way to go PHP team for just continuing to do the freaking work. Like, what a dumb stupid little thing. But, like, that makes developers' lives a little bit easier because we have trailing commas everywhere else except in function calls, and y'all fixed it.
Aaron
00:29:23 – 00:29:40
Way to go. And so, philosophically, that makes me think, hey. PHP core team, doing a lot of work without a lot of thanks. Even if I don't care about trailing commas at all, what it's indicative of is somebody behind the scenes is just working, and I really appreciate that.
Paul
00:29:41 – 00:29:46
Do you feel like it's signifying that there's still strong investment and momentum in the language?
Aaron
00:29:47 – 00:29:55
Yes. I think so. Yep. I think there are there's like a there's like a PHP Foundation. JetBrains has contributed a lot of money.
Aaron
00:29:55 – 00:30:26
Laravel itself has contributed a lot of money. A lot of other companies and individuals have contributed money to keep to keep PHP the language going, and I just I really like to see that. There's a whole there's a whole group. I think this may be really interesting about PHP. There's a whole framework interoperability group, and that's where this like, the heads of these frameworks, Taylor Otwell for Laravel and a bunch of other I think Fabian from Symphony and a bunch of other prominent members of the community have come together and decided, like, okay, y'all.
Aaron
00:30:26 – 00:30:58
We need to come up with this set of guidelines or this set of, generally accepted principles that defines, like, how our frameworks are going to, work together so that people can write packages that work with most frameworks. And so they'll come together and decide on, okay. How should class auto loading work? How should what's the interface for writing a cache driver? And so now people can write packages and be like, this package adheres to PSR 4.
Aaron
00:30:58 – 00:31:10
And that's, oh, okay. Within the PHP ecosystem, there's this, you know, very public cabal of leaders that's like, hey, y'all. We're all maybe competitors. We're all maybe friends. We're maybe enemies.
Aaron
00:31:10 – 00:31:42
But for the sake of PHP, let's vote on some rules about, like, how these interfaces should look, how the date, time, immutable, what like, all of these things, and that pushes everyone together. And, honestly, that's one thing I think JavaScript could do is have, you know, the heads of all of these these big libraries or packages, whatever you wanna call them, come together and decide on, okay, we've gotta we gotta start setting some standards because it is it's kinda chaos out here. So that may separate the PHP community a little bit.
Paul
00:31:42 – 00:31:55
Aaron, it's been a pleasure talking to you, reigniting the hype about PHP. We are running up on time. So I would love to broadcast to listeners where they can find more from you. We already mentioned your YouTube. Right?
Paul
00:31:55 – 00:32:00
You have a lot of prominent content on there. Do you blog? Do you write and do you post anywhere else?
Aaron
00:32:01 – 00:32:13
Yeah. I do. So I have a personal site at aaronfrancis.com. It needs a little love. Most of my energy these days is spent on video on my personal YouTube and video on the planet scale YouTube.
Aaron
00:32:13 – 00:32:32
So on the on the planet scale YouTube account, I talk about MySQL. So I'm like, I'm firmly Guy from the early 2000. PHP and MySQL, baby. And so on on the PlanetScale channel, I talk about modern MySQL. And And then on the PlanetScale blog is where I do a lot of my writing about MySQL tips and tricks.
Aaron
00:32:32 – 00:32:41
And I did a full, like, 8 hour course on everything and, you know, need to know about MySQL for PlanetScale. So that's most of where my content lives.
Paul
00:32:41 – 00:32:45
Awesome. Well, Aaron, it was a pleasure, like I said, and thanks for your time coming on.
Aaron
00:32:45 – 00:32:46
Yeah. Thanks, Paul.
Me

Thanks for reading! My name is Aaron and I write, make videos , and generally try really hard .

If you ever have any questions or want to chat, I'm always on Twitter.

You can find me on YouTube on my personal channel or the Try Hard Studios channel.

If you love podcasts, I got you covered. You can listen to me on Mostly Technical .