Maduro’s proposal for a transpiler is a necessary rebellion against PHP's bureaucratic stagnation, offering a pragmatic path to modern features like generics. However, this shift risks sacrificing the language's core simplicity for a fragmented ecosystem of non-standard syntax.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
php needs a transpiler
Added:Not going to happen, Nuno. It's not going to happen. Having that on the core will be literally impossible. The way PHP is governed, it cannot facilitate the process that's needed for these kinds of big changes.
>> of these things that I'm like, why isn't this in the language?
>> Like 10 years ago, right? We are here to have the third episode of urgent PHP, a podcast about PHP drama, and we have as a host me and Brent Rose from JetBrains.
And yeah, today on the pipe we have true sync, functional autoloading, structs on PHP, talking a little bit about the dev setup we should use as PHP developers in 2026, getting started with PHP, which is apparently something Brent is starting and I want to know everything about that, Laracon US, which we have a bunch of news about this, and also PHP version stats, which is something Brent runs every single year. Drama what drama?
Dude, there is drama all over the place.
Let's start with true sync. Brent, have you tried true sync before?
>> I'm not yet.
>> I've tried I mean I followed along with the the six or seven or eight iterations that the RFC went through. Yes.
>> Mhm.
>> Uh it's an interesting topic, right?
Uh I To be honest, it's this it's not going to happen, Nuno.
It's not going to happen. Same for generics, it's not going to happen. And and I know why. I know why. But yeah, it is what it is.
Uh what are your thoughts about it?
>> Yeah, my thoughts So, I think there is multiple thoughts I have, okay? Uh first thought number one. By the way, for those who are not familiar with this, true async is a project from a community member and it brings literally async await to PHP. Now, this is the first async await implementation that I see on the PHP world that actually is good.
Meaning that I have worked with previous async await implementations with ReactPHP, with um how is it called?
AmpPHP, I think.
>> AmpPHP, yeah.
>> Yeah, yeah. And all of them were like, oh, you have async await in PHP, but you have to use our API, you know?" So, you would have to use their own file function implementation. You would have to use their own web sockets implementation, which kind of sucks a little bit in the sense that I want to use a sync await in Laravel. I want to use a sync await in fast PHP. I want to use like the sync await on my all existing code and I couldn't.
Now, this project called it true async actually allows you to keep using Laravel, keep using the APIs you love, but still you can do it in an asynchronous way, which is my opinion the makes this the best implementation of a sync await I have ever seen. Now, on the other hand, on the other hand, the way this got proposed to the core, to the PHP internals, meaning that again, this is a project that you can try it out individually, is a project that end up being also an RFC, meaning a proposal to be on the PHP language itself, but the way it got proposed to the internals, I knew instantly that wouldn't be accepted just because how big it is. And we know by experience that every single time an RFC is big, means no, cuz there is a bunch of stuff to discuss, a bunch of opinions, and end ups being like rejected. So, I think it's awesome as a project. I think like having that on the core will be literally impossible. That maybe that was your opinion as well. What do you think?
>> Uh yeah, no, yeah, I agree. Like from the moment I saw it on the list, maybe the the very first iteration there was a little bit of hope, but then things devolved. And and I've been talking a little bit with with admin who's behind the RFC as well, um especially after I I wrote this um uh a little bit of of commentary on how PHP is managed uh these days by the committee, you know, design by the committee. And and I was in touch with him as well talking about it. And yeah, this is like the way PHP is governed just isn't like cannot lead to these kinds of It cannot facilitate the process that's needed for these kinds of big changes to the language.
>> Big changes, yes.
>> And that's unfortunate. Same for generics. That Maybe generics are still coming like the wrong version in my opinion, but yeah.
>> Right.
>> It's just like it years and years and years and years, you know. And this is actually we we really need to think about this more carefully because in this day and age PHP really needs some momentum. It could really use some >> Right.
>> good positive momentum.
Um and and interns are doing some good good things, good changes to the language, but like things that really matter, I would say ah.
That being said, that being said, PHP already is a great language. Like we get by without native async await. If you really need async await in PHP, there are the solutions out there that that they they work. They are battle-tested.
They are used in large production deployments. Um so it's not like the end of the world not having generics is not the end of the world. Um not having structs small teaser for for for what's coming next not the end of the world. But it's just like at this point I'll I'll I'll love to write PHP. There are some things I would like to see improved and >> Right.
>> it's likely not happening. So, that's kind of my feeling about it. Yeah.
>> I feel like again that it has pros and cons about the way changes are being introduced in the PHP language. I think like undeniably things cannot be just introduced it like crazy, right? Cuz we have everyone doing PHP all over the place. So, it's just difficult to have you know, like these big changes being introduced in the language. And in some way I kind of appreciate the PHP core to go slow.
At the same time, I also want generics and I also want async eight and I also want all those features. So, I So, I saw like an issue on the true sync project that the maintainer was actually thinking about giving up on the idea, right? Did you saw that one?
>> No.
>> Yeah, I saw like the maintainer saying that you know, I've been dedicating a lot of time into this, but now I just lost my job or I want to move jobs. So, for that reason I'm going to do go for living and blah blah blah blah. So, this project will likely to be just, you know, >> dial a little bit.
>> Um and I feel like, you know, just like the type PHP project, I feel like the solution for all this story for having all this stuff, it needs to be some sort of type script for PHP. Meaning that it's kind of a new language that is backwards compatible with PHP. So, works just like PHP would uh behind the scenes, but uh yeah, like all everyone everyone new can start you working on this new language, but uh every existing legacy stuff will continue to work with the old PHP. I think honestly it's the most sensible and best idea we can have of all of this story.
>> Yeah, it it is still kind of a compromise, but it might work. The problem with something like type script, you know, is that um well, behind type script is a huge company, Microsoft. And they started working on a super set called type script and they worked on it for one or two years before releasing it to the world. PHP doesn't have that. There was Facebook with Hack, but then they kind of went another way and and that then didn't work out. Um so, yeah, I I would love it I would love it if if there's a company with lots of money. I don't know, maybe you know such a company that says like, "Hey."
>> [laughter] >> But but maybe not.
>> are messaging a message right now.
[laughter] >> Like um but >> [sighs and gasps] >> yeah, it could be a really viable option. That being said, if we're specifically talking about async await, there is no easy way to transpile whatever kind of syntax you come up with through native PHP that just runs everywhere. Like a a single weight is a really low-level feature that you cannot just add in a super set and then magically work.
>> Mhm.
>> You would you would have to maybe include Swoole or Amp in your uh compiled version. That that might work, but >> That might work, yeah.
>> It it's already getting pretty complex, right?
>> Right.
>> It's not impossible. I actually made a video of I think 4 years ago where I talked about this exact idea of, "Hey, maybe we should just transpile PHP." But then you come to the question of, "Okay, who's going to make it? Who's going to maintain it? Who's going to pour in probably millions to make it into a success story?" And yeah, I don't I see that happening either. So, yeah, we're we're we're stuck.
>> No, [laughter and clears throat] no, no.
We need to be you know, um I feel like um I think we're making progress. Like this year, just in 1 year, we have seen True Async, we have seen Type PHP from the Swoole team. Like those seems good initiatives. With True Async, >> Yeah.
>> which in my opinion not going anywhere due to the fact that >> Yeah.
>> the maintainer want to bail out a little bit.
>> Mhm.
>> But Type PHP maybe maybe goes somewhere, you know, with the Swoole team behind it. Maybe. There is the barrier, the language barrier that we talked about.
Uh but maybe it might be might be going elsewhere. Um Moving a little bit of topics here, we have function auto loading that might be coming to PHP. As a person who loves functions on past PHP, but also I love functional APIs in general.
>> Yeah.
>> I feel like, you know, Termwind have a functional API. Many of my projects have actually functions just as an API.
Instead of giving a class with a static method, I just give you functions that you can use.
>> And originally the problem with functions is that um they cannot be auto loaded. Meaning that if you were to do something like use function XYZ, the function needs to be required from the get-go, regardless of what if you use it or if you don't use it. So, what function autoloading is introducing is the same mechanism as class autoloading, which is what composer uses behind the scenes.
And I I don't know the status of this RFC, do you?
>> No, it's being discussed, right?
>> Discussed, meaning that we don't know yet if this can potentially reach a language.
>> Yeah. Would be a really good addition, to be honest. Uh it's one of these things that I'm like, why isn't this in the language >> Already, yeah. Like 10 years ago, right?
>> But but it has been discussed before and I think there were some details that people didn't agree on. Again, circling back to uh maybe the committee is standing in the way here.
>> Right.
>> I I as a framework author, library author, um I I will be fine with whatever internals decide on. Just pick something. Like even if there are some small nitpicks, if if function autoloading works, then it's fine. I don't really care if it's one way or another because this is such a low-level feature that will be handled by composer's autoloader anyway.
Right. Just just do it. Um >> They might as well include the composer guy on it, right? Like >> They are involved, right? Aren't they? I think so.
>> I hope I hope he is cuz he'll be the one using this. Like nobody else will use this thing.
Uh like this is not the userland feature, right? So Interesting fact, the creator I'm just looking at the RFC right now. It's on draft moment a draft as you said, so it's being discussed. And the author is Anthony Ferrara, which is um one of >> [snorts] >> very experimental dudes on PHP. Like he does he does a lot of experiments, which is awesome.
>> Function Was it actually Are you looking at the right one? Let me double-check.
>> Function autoloading being proposed I'm not using it the right one. Yes, yes.
That This is not the right one.
>> Robert Landers, who's also working on a on a new generics runtime generics, by the way. So >> Oh, really?
>> Yeah.
>> Okay.
>> We'll see.
>> Okay, now I'm I'm now I'm looking at the correct one. Proposed by Paul M. Jones and P.M. Jones, which is the same person. Okay.
>> discarded. No, no. No.
>> No, under discussion is what I see.
Under discussion as we speak. Yeah.
>> I don't know. I'm confused.
>> And the API for this is SPL_autoload_register_function_loader.
Which is a very good name for a function.
>> [laughter] >> But yeah, yeah, yeah. This is what we have. Yes, yes, yes, yes.
>> Structs in PHP. Dude, what is this, man?
I haven't read it, but I know that you have been into it. So, let me know what it is. What >> Yeah, no, there are no structs in PHP.
There are no structs coming to PHP. But there was another RFC that that was um it's interesting. It's interesting we we we start from classes in PHP uh seven, right where type properties were introduced. And and we got more and more syntax to get rid of all the boilerplate. So, um we got property promotion to move properties to the constructor definition so that you don't have to declare them three times instead of one. And then um property hooks and async visibility and read-only. All of these things help uh you write less code to still be able to deal with data in a typed way, which is really nice. And so now um there's a new proposal to just get rid of the constructor altogether and to move all those properties just to the class definition.
Um it's So, so yeah, less code to write.
Not bad. But at the same time, I'm like, maybe we should stop and think for a second whether this is really the way to go.
Um but but now I am introducing another opinion to the committee already. So, I I'm I'm not I'm making the problem worse. But but my opinion is that look, we we see a need for for having something to represent data in a typed way in many PHP projects. And and um I think that's a really good pattern especially combined with actions, you know, right where you push in DTOs and and you know, static analysis on top of that really great.
But trying to shove everything into classes and and then having promoted properties and then this new without constructor syntax, maybe it's better to to just have something entirely separate from classes. I call them structs, I think based on go and and rust, but in in C# I believe they are called records, but just something that has no methods, just data that you can you can create new instances of based on some kind of blueprint that's been defined. Um, where data is represented as an object that it's type checked, you know, like just class classes with public properties without all the syntax overheads. That's basically what um, what I'm saying. So, that was a thought experiment of mine. I've talked about this before a number of times where um, I mentioned structs before. So, yeah, just something that came came up with this new RFC. I'm like, ah, can we just get structs, please?
>> Yeah, yeah, [clears throat] yeah. So, basically you want to some you want some sort of typed arrays basically, right?
>> Yeah, yeah.
>> Almost typed arrays because you also want to So, yeah, yeah, yeah. I feel I feel this.
>> So, you basically want a way because today on PHP like people think that they need classes for everything.
>> Yeah.
>> So, it goes in the same, you know, in the same mental model of for example, I use functions for some stuff and people think that behavior should always be in classes. Like not everything needs to be a class in PHP.
>> Yeah.
>> Um, in in their opinion, like especially with the action pattern for example, um, we see these arguments being passed and you know, like we have arrays of course, but then at some point it's just too much for an array, but also like you probably shouldn't be a class either cuz you don't you don't want to have public visibilities and, you know, all these method all these definitions that belong to a class to just represent data. And for that reason you want a struct.
>> Yeah.
>> It's true.
>> way, interesting on on Twitch here, code shredder says struct seems just like a semantic thingy, which indeed it is.
>> Indeed it is, yeah.
>> That that's kind of what programming is about, right? Like building syntax on top of syntax on top of syntax just to make it more convenient for us to interact with zeros and ones. So, that's kind of my vision on that. I think it would be useful. You you call it typed arrays. I would array in PHP is such a a big thing. It's it's it's everything basically. So, I I would I would try not to use the word array because people will get like a an idea of what we mean with it. I would just say a data type. Like we have enums, like we have classes, just struct to represent, yeah, data in in a structured and typed way. Yeah.
>> Mhm. I'm wondering if on Go structs can also have like methods on it, you know? Cuz on Rust they can.
>> Yeah, I know that.
>> You know what I mean?
>> But Rust is Rust is beautiful when it comes to Anyway, yeah. Uh >> With that With With it comes with everything. I know, dude.
>> [laughter] >> I know.
Uh >> Yeah, I don't think on struct I don't Yeah, on Go you cannot. Apparently it's just literally functions in structs and that's it. Um and they are two different things. So, which is okay, you know? Um But yeah, I feel you I feel you I agree with you. I think like uh we definitely overuse classes. We definitely overuse arrays and some I'm even I'm even in the middle basically >> Yeah.
>> that would be able to represent typed data would be absolutely awesome.
>> I feel like when I'm doing PHP, I'm going to be honest, like I feel like every single time I create a class for a DTO, I feel like I am doing I'm over I'm overdoing it.
Like almost feels too much to have a separate file, a separate class just for representing data in a more typed way.
Um >> True.
>> And you also end up with a thousand if you are using if you have a project with the action pattern, um you have if you if you start using a class for every single DTO, you end up with a thousand DTOs, which is just too much.
Um >> Yeah, but I I still like that approach over not having it typed anyway because with a class and and I agree it's not optimal, but at least you get proper insights into what kind of data you're dealing with from static analysis from within your IDE, so >> I I go through them the motions to actually do it, not because it's the best like the most convenient, but it's it's still I I get a lot of benefit from it.
>> Mhm. Mhm.
>> By the way, um Lakushmi sharing chat asking whether uh you like it's it's inconvenient with DTOs because you need like a separate file, the same thing you mentioned.
You actually don't.
Uh you can add classes in the same file.
The only reason we we separate them is because we follow PSR-4 class auto-loading standard, which composer's auto-loader builds on top of. So >> Um It's a standard, but you don't you don't need to. You just put everything >> in a class and just require the file and it works.
>> I love I love your way of thinking. I agree with you, but like if you are reviewing a project with two classes in the same file in PHP in 2026, people will instantly say this is legacy code or whatever.
>> Uh >> You know what I mean?
>> For the record, I I was just replying to both yours and I would put it in separate files. I'm fine with it, but if people really feel bothered by it, I'm just saying that you don't have to.
You don't have to. Yeah, because what you're saying is that technically you can have Let's say we have a create user action.
You can have a create user DTO on top of that class definition that is used to type or to represent the given argument on the action. Yeah, that works.
But again, I wouldn't do it cuz then if you wanted if you wanted to actually include that class on testing, you wouldn't have a way of doing it.
Cuz all composer wouldn't work auto loading that >> Yeah, you would you would need your own kind of auto loader maybe.
>> Almost. Almost. Yes.
>> It is possible, but I wouldn't do it because we like we have a standard way and I don't I'm not really bothered by it.
>> Yeah.
>> Adrian is saying what?
>> Yeah, Adrian was saying that he doesn't really need DTOs. Just inject models and strings and integers into actions.
Um which The point I wanted to make is that I use DTOs. DTO is such a vague name, but just you know, I I have typed data all throughout my code base, not just in actions like for request classes and stuff like that. I really like to just have like an object that has typed data.
I want to call it that.
>> comes to Right. The question comes like Adrian, what you do when you have 20 arguments?
>> Yeah.
>> [laughter] >> You know, like what do you do when you have 20 arguments? Do you I mean, I assume you don't have 20 arguments on the endel method of the action cuz what are the other options are? Like you have an array, but then you would have to specify the shape of the array on the PHP doc which end up being the same stuff.
So, and the last option is not type anything. We just accept an array of data untyped and PHP stand wouldn't be happy.
>> Yeah.
>> Split into smaller actions.
>> Yeah, but >> What what do you mean exactly? Cuz let's let's assume a form, a web form, right? A web form of creating like um you know, um, a resource that involves like 10 fields, which is not uncommon like it's actually very common like on a lot of on Laravel Cloud for example, creating an environment involves a bunch of choices like do you which node of version do you use? Do you which PHP which PHP version do you use?
What is the name of the environment?
What is the slug? What is blah blah blah. So, all these fields like they are creating on the same they are mutating the system on the same transaction like on the same exact yeah split second. So, the even though you could do it in you could do it in actions, but like I don't know I don't know if it would be a good solution. Moving a little bit to my development setup in 2026. So, Brandon and I have this idea of discussing a little bit what is the perfect development setup in 2026 for PHP and Laravel developers. So, I'm going to share my setup. Brand, you share yours and I think like the entire shed should just share your setup in 2026. Just write in the shed what are you guys using. So, I'm using a MacBook M4 a um, M4 uh, Macs and I went with 36 GB. If I know what I know right now, would have to go with 128 GB cuz Streamlabs, Chrome, PHP Storm like all this software running just consumes all my all all my memory RAM literally.
So, what else?
Um, I have Ghostly that as a terminal.
Uh, Ghostly is awesome. I have Ghostly with Cappuccino Mocha Retro theme. I have JetBrains I love JetBrains Mono font, dude. Like I'm I'm being a user of that font since it's since it's out basically. Um, I'm using it everywhere. Terminal, IDE, and everything. So, JetBrains Mono font. Um, I typically use a big font size cuz I do think like in general I like to have like the font as big as possible.
Um, so, Ghostly for coding with AI I'm using Cloth code or Open code depending of which model I'm using. Uh, the latest model of Cloth and uh, GPT 5.5 on Open code with Kimi.
Um, what else? Then I go to the editor, which I use two editors. I use actually PHP Storm when I need like actual open a project, you know, understanding the structure, actually, you know, do some proper work. And I use Sublime Text for quick notes. I think like PHP Storm is my main IDE. Sublime Text is my editor. Does that make sense? I think it does, right?
>> Absolutely, yeah.
>> Yeah. Um, even though a lot of people have been mentioning that something in the betweens. I haven't tried it, but you guys let me know in the chat.
>> Mhm.
>> Um, what else? Um, yeah, in terms of workflow, I I kind of pivot between a full editor and being like on the Claude AI.
>> All right.
>> I feel like I feel like um, I've been actually So, when AI initially came out with GitHub [snorts] Copilot, I was just I was enjoying. I think I felt like, okay, this is like the perfect vibe AI thing cuz I GitHub Copilot was finishing like for each loops, was finishing a a small method, but not like crafting a a big feature, you know?
Um, then after a year, we saw this AIs coming like Claude Code 4.86 with the possibility of crafting an entire feature by themselves. And what I have noticed is that um, I was using less and less an IDE and I was constantly spending my time on on on the on the AI.
Um, UI. And I felt like I wasn't enjoying the craft. So, now I'm like in the middle. I'm literally using PHP Storm for coding my features and I I fall back to AI when I want like a big portion of code that I know it's boring, but I know exactly where it's going. So, I'm kind of exactly in the middle of this two approaches. So, anyways, Brent, what are you using and what is your workflow looks like right now?
>> Yeah, well, about AI first, I'm glad to hear you say that because I find myself in kind of the same position. I I spent a couple of days like just five coding a new feature. I don't remember what it was. And then after after it was all finished, I just felt like I have zero like ownership feeling about this.
>> It sucks balls, dude.
>> And it's not fun.
>> It sucks balls, honestly. Yes, yeah, I know, dude. I'm going to publish by the way, Chad, I'm going to publish a video about exactly this topic tomorrow on my channel.
>> Oh, cool.
>> Yeah, I'm really looking forward to that.
So, so I'm I'm now using it for like the the boring parts, the repetitive parts, the parts where I I've already written one example and I need to like >> Yeah.
>> do [clears throat] a hundred more for tests, for I was working on this markdown parser where there's a lot of repetitive work as well. Like these parts, super cool. Front end stuff, I don't like doing front end, so having an AI agent do it for me and then being able to tweak a little bit, it's actually better at it than I >> I'm so >> perfect.
But but I I still get to write PHP and I enjoyed it. And you know what's super important?
Because I still handwrite code, I actually still understand what I'm doing.
>> Yeah.
>> And I understand what's going on. And that's so important and we really should not forget about this in in the era of AI. Like it's it's fun to be able to move forward quickly, but being able to understand code and what it does and how it works under the hood, that's such an important skill and it's likely going to be one of the most important skills in the near future. So, don't like don't get rid of that entirely in your in your programming career because it's just so important to understand what you're doing.
Apart from that, you know, there's one big thing I disagree on when it comes to dev setup.
And I want to see folks in chat say it with me. You need a light color scheme.
Uh there is There is no discussion, Nuno. I did uh I did a video about that as well uh a long time ago. No, but it's it's actually like it's easier to read on the eyes. Uh the problem Oh.
The the the problem so many people have with light color schemes is that they are in a super dark room. They have a light color scheme and blurs from their screen and they say, "Oh, it hurts. It burns. Oh, no." That's not the way your your room should be set up.
Um and I I did a lot of reading on this topic and I actually did a talk about it a long time ago. So, light color schemes I challenged people to use a light color scheme for uh a couple of weeks.
Um I I did this numerous times on social media and on conferences and stuff like that. And I actually so many people tell me afterwards, "You know, uh I I just I'm sticking with light color schemes because they are so much easier on my eyes." Just putting that out there.
Apart from that Apart from that, I'm uh I'm of course with PHP Storm doing all that like all of my work in PHP Storm. Um not because I have to, but because I want to to >> Which one do you use for AI UI? Do you use like the Juni thing or >> no, not Juni. I I use Cloud or Codex depending on the task. Um but it's all integrated in PHP Storm, right? So, I just use the AI chat there um so that I don't have to go to terminal.
Um and um there's now this experiment. I don't know if you saw this. I did a live stream with Roman 2 weeks ago where we introduced a lightweight build of PHP Storm and it's still kind of an experiment.
>> tried it. Is it good?
>> It's really good. Yeah, I've um we're we're making some final changes so that it's just easier to install and to manage updates and stuff because that's really important.
Um and it's still very experimental, but I've been using it now for uh well, a week or so um and I really enjoy it. It's just it's a lot faster and almost everything that I need is in there. And if I miss something, you can still enable it. So, it's it's fine.
>> Right.
>> Um, so yeah.
Um, I most of my dev setup is just PHPStorm and then uh a web browser. There's not much more to it for me.
>> What do you What do you use as a laptop and as terminal uh >> Uh yeah, I have I have a Mac Mini like M3 or M4.
>> Wait, what what do you use when you're traveling like? You don't have a laptop or something?
>> a laptop, but just a MacBook Air. And like I don't need anything heavy or or because I have my Mac Mini here, which is good enough for my videos and live streaming.
Um, and and I have like also an M3 >> So, you have your setup like in both la- in both laptops?
>> Yeah, but my my laptop setup is just like it's PHPStorm and a browser. I may I kind of make it a point to to be able to start from a clean install pretty easily. I don't want to like have such a fine-tuned system that I I totally stuck with it. Uh you know, I I um when I was when I was young, uh teenager, I was like of course I grew up with Windows. And then I switched to And I switched >> [laughter] >> switched to Linux and uh most of the time on Ubuntu, but then some other uh flavors as well. But um it was really cool and I was fine-tuning all the knobs and pulls and stuff like that. And then I kind of started working like my first job and I just got a Mac uh because it's it was all they had. And I realized that oh, this is super easy. I just don't have to worry about anything. It's just turn on and I'm done. And that that's kind of what I want for my dev setup as well. Um I I I don't need to be too fancy. Like for terminal, for example, I just use the the built-in terminal with with PHPStorm. For database tooling, the built-in But that's kind of the thing of an IDE, of course, but like also built in with PHPStorm.
Um I just like it's it's it's good for me. I'm used to it. And uh it it takes very little effort to set up, which is what I like the most. So, yeah, my laptop is just >> Which browser do you use?
>> Chrome.
>> Chrome, interesting.
Yeah, I use um No, I use Firefox. So, I actually use three browsers. Uh I use Safari for streaming.
I use Chrome for Laravel stuff.
>> Mhm.
>> And I use Firefox for my personal stuff.
I just find it better just to have everything isolated cuz I have like sessions and everything with Laravel, you know, email and then I might have my own email on Firefox and then I have like Safari with, you know, like browser history is a big thing. The last thing you want is like leak your browser history on stream. So, I use Safari just for that.
>> Sure, yeah, yeah, yeah.
>> Um no, I get that. So, you know, so I have three browsers literally at the moment.
>> I I have three, well, four [snorts] Chrome profiles. So, those are my four >> interesting. Do you then you change profiles every single time you want to Oh.
>> Yeah, so I have a work profile. I I have a personal profile and then some other stuff as well, so yeah.
>> What do you think about Brave browser?
>> Yeah. [snorts] The um no opinion. I I I know I know uh my colleague Roman uses it. I don't know.
I don't know. I I I think there is something to say about uh like uh privacy and stuff like that.
But uh to be honest, I don't know if this is like a hot take, but I'm just I'm so tired of it because I remember 10 years ago or something like that.
People were telling me, "Oh, we all need to switch to WhatsApp because it's encrypted and it's it's safe and secure." And then I'm like, "Yeah, it is today. And then a couple of years from now things will change." And look look what WhatsApp is today. I mean, it's not all that great anymore.
>> It's all open, yeah.
>> Then then then people tell me a couple of years, "Oh, you should switch to Telegram because that's it's not better. It's it's going to end up in exactly the same place and I feel the same thing about browser Firefox by the way also not all that private and and they also do stuff with your data for advertising.
I I I Nothing nothing is is truly private and honest. If you if you want total security, my my number one advice is just unplug your internet connection and start reading a book or something because it's nothing is secure on the internet. I don't know.
>> Right. Yeah, I feel I feel you.
>> I I kind of have the mindset of I try not to do anything that could get me into trouble if it were public, you know.
>> Yeah.
>> It's just just so >> That's that's also my thinking like on the on this new on this problem we saw on the PHP world but last like on the JavaScript package managers supply chain attacks.
>> Yeah.
>> So, everyone needs to assume that your laptop is already hacked.
>> Yeah.
>> This is what I that this is what I tell people like you cannot have SSH keys without passwords. You cannot have like everything you have right now on your laptop you need to assume it's already hacked. So, you need to have multi-factor authentication pretty much everything.
You need to just assume that you got hacked already and how can you protect yourself from that? Brent, you started something called it getting started with PHP. What is that?
>> Yeah, it's it's really interesting. Got a lot of great feedback from it. So, I was I I was asking myself this question of when someone asks how they can get started with PHP, where do we point them to? And and you see this question on on the PHP subreddit for example you see it quite often. And um and we always point them to PHP the right way. So, I started reading that because I was like we're sharing this this link here.
>> man. It's so bad.
>> It's not a getting started guide. It's a reference. It it links to other places.
There is some good information there, but it's not something a starter can read and know PHP.
Maybe it doesn't list Pint or Pest, I don't know.
Maybe that's it.
>> Not only that, like it's just it's it's just not realistic. You know what I mean? Like people are like realistically people are doing a lot of Laravel and Symphony. That's what people do, man.
That's what 99% of the people do. And >> So >> Anyway, sorry.
>> Yeah, yeah. So so I was wondering where can I point them to? And what I usually do is point them to Laracasts, like the PHP course, which is really great. I find Jeffrey's doing a great job there. However, video The problem with video is that it doesn't really age all that well. And then making a new updated video course takes a lot of time. Also, many people don't want to watch videos. They just want to read.
Why would they watch a 10-minute video when they can read a 2-minute blog post?
It's always a valid question I find.
Um I'm saying this on a video medium. I know. I realize.
But [laughter] but in some cases I I I think written content has its value.
>> Right.
>> So So yeah, I was like what is there?
And I did some looking around. And apart from some paid courses that were very outdated, um I found nothing. And so I just started writing something.
Getting started with PHP like something that I am proud of to be able to share when someone asks, "How do I get started with PHP?" So it's a it's it's a free course for everyone.
Um and there's lots of work to do. And And I'm now in the phase where I'm asking people to with PHP experience to read it and pitch in and give their feedback. And I got lots of great feedback. So I now need to spend some time on um actually like going through all of that.
Um And then there is so much more to be written. I've written eight chapters now. There is like at least 10 more that I'm going to add because like for now it's all very very basic, very intro, but at least it will get you started. It will be able it will make it so that you can run a PHP script basically. But now I need to add some chapters that go into stuff like async for example, but also easier stuff like classes and arrays and like some more in-depth. Of course, I've already talked about classes and auto loading and and typing and stuff, but there is just so much more to tell about it. So that's what I'm doing.
Um it's a fun project.
>> man. It's a good idea. I feel like especially if you're having fun, you are 100% sure helping others uh with that content. So >> Um and you know, if there is someone who can write stuff you know, handwrite stuff is you. At least uh I think your blog is probably one of the best blogs in PHP if if not the best.
So um Chat, what do you guys think? Do you guys think stitcher.io is the best blog blogging PHP or not? What do you guys think?
>> [laughter] >> You're making me blush now. No, but yeah. I I mean I've been doing that for almost 10 years now, so I do feel like I know a thing or two about PHP and also how to write it because that's important. It's not because you know a lot of things that you know how to write it in a way that's that's accessible to to newcomers. So yeah, it's what I'm trying to do and and it's cool to do it open source and to have people pitch in with lots of great feedback, so I really appreciate that.
Yeah.
>> Brent, just back to the topic of PHP the right way. I was just opening it a little bit. Yeah. And let's go you just mentioned Pint. Honestly, I was not even thinking about that. But there is a section called it code style guide, okay? How do you style your code and blah blah they talk about PSR and you know, so far all good.
>> [snorts] >> But then they go all the way down to style your code you use um call it PHPCS and you use PHPCS fixer.
Like Pint today is the most downloaded fixer in the in the PHP. Like if you go to the numbers, you see Pint literally being the most downloaded per day. CS fixer is not even mentioned here. Like literally no mentions here.
>> Yeah.
>> You go to testing frameworks, you see PHPUnit is a default testing framework for writing unit tests in PHP applications. You go to Laravel, you don't see PHPUnit as a default. It's literally past. And Laravel is the most used one. So maybe like past is a better highlight here.
And you probably Let me just search for Laravel here.
>> It is mentioned there, right?
>> It is Well, I hope it is. Otherwise, we'll be [ __ ] up. It is, but like this. Mention They're mentioning Laravel in the same way they're mentioning FuelPHP, Lithium, which I don't even know I don't even know what Lithium is.
And that's a red flag already.
>> [laughter] >> I And you know, while you're saying this, I I just realized I forgot to mention Pint as well. I'm mentioning Pest and mentioning Laravel like a lot, but but Pint I forgot. I'm so sorry. I'm going to add it to my to-do list now.
[laughter] >> Oh, you Where you mean? Oh, in your getting started?
>> She just dude. Sorry, sorry, sorry, sorry.
Sorry, sorry. I'm sorry.
Talking about Pest PHP, my friends, Laracon US is coming, okay? Laracon US is coming and will be the biggest event in the planet. So I want to give you like some updates on Laracon US and why do I think you guys should go. So in case you don't know, Laracon US is the flag the flagship conference of Laravel, of course. It's happening in US. There will be speakers like Taylor Otwell, Aaron Francis and more.
And I will be there as well. I will be presenting to you Pest 5, which is the biggest Pest release ever. Like after Pest 4, I thought it it's at that's it.
I won't be able to do such a big release again. And um you know, it because it's just impossible. There is so much you can put into a testing framework.
>> Right. And Pest PHP has a a bunch of stuff already.
Uh browser testing, mutation testing, stress testing. There's so much stuff on it already. And I thought, okay, this will be impossible to do another release, but um well, there is past five coming. So, past five will introduce uh actually five new features, which you guys are going to absolutely love, and that will be done on day one Laracon US and released on day one Laracon US as well.
Uh on Laravel, on the open source team, we are cooking as [ __ ] and a lot of stuff is coming, meaning that we have been working for the past 2 months on getting new stuff, literally a batch of stuff prepared for this Laracon US. So, there's a lot of announcements being done on stage by Taylor Otwell and the team, and you guys are going to love it.
Laracon US is happening on 3 28 July this month.
Uh Brent, are you going?
>> No, no. It's a little bit too far. There are some of my colleagues are going, but I like it's it's too far.
>> Who's going from JetBrains?
>> Uh Roman is, and then um one or two internal PHP Storm developers are always going as well, and then one more salesperson.
>> PHP version stats. Uh what is this? What is this, dude? And what do you have to What do you have to tell me about this?
>> Yeah, I I also wanted to tell you that I'm all almost done with fixing forgetting about point. Um just to to >> You're literally fixing as we speak.
>> I'm fixing it right now. I'm pressing commit, and I'm I'm writing uh tempest deploy.
>> I'm looking at I'm looking at these numbers of PHP version stats. So, in case you don't know, Chad, PHP version stats is something that Brent runs every 6 months, apparently. And it tells um the percentage of um it has like this sort of table. I'm going to send the link, by the way.
>> Yeah.
>> PHP adoption, right?
>> Yeah, so so what we look at is packages has some some statistics that are public on how many packages are downloaded with which PHP versions. And so so tracking that over time is really interesting because you can see in some graphs how people are or not updating their their PHP versions. And And so, I've been doing this for 5 years now, something like that. And before me, it was Jordi from packages who was doing it, but he stopped doing.
So, I I asked him like, "Can I continue with it because I think it's really important?" And then I added some more data to it as well. So, I'm using data from packages, but I'm then I'm also looking at the top thousand most popular packages in the PHP ecosystem.
>> And then I'm looking at their requirements, right? Their minimum requirements of how are they keeping up to date? Because if you have some packages that are still supporting PHP 5.6 as as a supported version in the top thousand, that that that that's kind of weird. And I think that's it's worth asking questions there. And so, what's really interesting is that this data is growing over time. So, with every addition, you get to you get to see a little bit more of the of the the trend throughout the years, right? Um and and yeah, I'm I just keep updating this. And something that always stands out to me, and I have a very >> [snorts] >> uh what shall I say, um like controversial opinion on this maybe, but I think from the open source side, we should very much uh push for using more up-to-date PHP versions.
>> Isn't that the case on Symphony and Laravel? It is, right?
>> No, well, um our definition of up-to-date might differ. That's >> you mean? You want to be on the on 8.5 like from the get-go?
>> No, no, no, no, no, not the latest. But But just some numbers here. When you look at the top thousand packages, uh around 30% is still supporting 7.4 or lower. Uh >> Oh, wow. Okay.
>> There I think and like honestly I think this is keeping holding the community um holding it back. Um but we're talking about supported versions while PHP now has always four supported versions, two versions in active development that are still getting bug fixes and the two versions before that are getting still security updates. So that's five uh 8.5, 8.4, 8.3, and 8.2. And at the end of this year it will be 8.3 and 8.4 going to security support and then 8.5 and 8.6 when it's released in active development. Um so for me that is the minimum. Like all packages should target today 8.2 at the minimum. It makes no sense to support anything lower than that because these are unsupported PHP versions that unless you go through like something like I think Red Hat is hosting its own version and Microsoft is already hosting its own version. Like it makes no sense to support anything lower than 8.2.
And and the point I'm making is that open source authors have so much um have so much power to push the community forwards um more than we're doing right now. Um >> Right, cuz you think that for example, if Laravel were to go Laravel 14 for example, were to go PHP 8.5, people would just be forced to migrate to PHP 8.5 and for that reason like probably like two three percent of these people would just move to that uh because of that reason.
>> Yeah. Um however >> Yeah, they would not they don't do it otherwise, yeah. I feel you.
>> Like from from Laravel's point of view, I think 8.4 would be more realistic.
Um 8.3 maybe because I I get it. Like you don't want to like be cutting edge all the time. That makes sense as well, but still supporting and I actually think Laravel is just supporting 8.2 right as a minimum version. I don't think they are supporting unsupported >> we do 8.3 right now on Laravel 13 and Laravel 14 will be 8.4 cuz we we support what Symfony does behind the scenes as well and Symfony supports only the release only the up-to-date versions which is >> Symfony Symfony and Laravel are actually very much okay in this regard but when when we look at the the top thousand packages on packages and this is these are just thousand right these are the most downloaded ones but they are not like the whole data set yeah these these numbers really shifts towards well I think it's it's around like exactly 50% of packages that support outdated versions and I think shouldn't shouldn't be happening and then you get the argument of oh but you don't want to break people's code base by just bumping versions but the thing is this is the beauty about packages like all the older versions are they will continue to work nothing breaks unless you want to update if you want to update if you want the latest versions of like package number 100 in the top thousand and and it requires PHP 8.2 or above well if you're on a lower version then you're forced to update but that's not a big deal everyone should update all their projects every year with every new PHP release I'm not saying go to 8.6 but go go to at least 8.2 8.3 and 4 because the thing is like the longer you postpone these updates for years and years and years it's not getting easier you're just it's the opposite actually it's the opposite if you just stay up-to-date with and with modern tooling like rector and code features like find it's pretty easy to just automate all of this when I was working at Spatie we had these client projects and it was one of the the hard written rules in the contracts like we're going to spend time every year to update your Laravel installation to update your PHP installation because it's just important for performance, for security, and because third reason developers are also happy to use little more modern syntax compared to like they don't want to get stuck in in in seven era. Um but this is just something we we did and clients had to agree and it works. It's just it's a cultural shift more than anything. And so this is why I keep writing these blog posts and keep repeating myself and and >> It's good. It's good. And chat, for those who are listening at home and who don't have the stats in front of you. So what we are seeing right now is that PHP 7.4 have 5% downloads. PHP 8.0 have 1%.
Okay, so again, there is more people using PHP 7.4 than PHP 8.0, which is interesting. Then we have PHP 8.1 with 5%. PHP 8.2 with 14%. PHP 8.3 with 24%.
PHP 8.4 with 32% being the most used version of PHP. And then we have PHP 8.5, which is the latest and the most stable one with 16%.
Now, 16% tells me that two roughly two out of 10 people are using already the latest version of PHP, which is good, which is good.
Just by the way, on past PHP currently with past the current version of past, which is past four, we support PHP 8.3.
For PHP for past five, we are going to support PHP 8.4.
And which will be also the version supported by Laravel 14. So we'll be up up to the, you know, up to the cycle, release cycle of the major stuff basically. All right, chat, that's it for me. I'll have some more some more work to do. Catch you guys next time.
Brent, thank you so much for coming once again. See you all next time, chat.
Bye-bye.
>> Bye-bye.
Related Videos

TOP 15 Data compression Interview Questions and Answers 2019 Part-2 | Data compression | Wisdom jobs
wisdomjobs
281 views•2019-06-28

CTS 158: 802.11w Management Frame Protection
ClearToSend
4K views•2019-02-04

NDSS 2019 Send Hardest Problems My Way: Probabilistic Path Prioritization for Hybrid Fuzzing
NDSSSymposium
496 views•2019-04-02

How realistic is Cities: Skylines?
CityBeautiful
159K views•2019-02-14

GUIs & TUIs: Choosing a User Interface for Your Python Project | Real Python Podcast
realpython
2K views•2025-04-04

The OSI Model - Explained by Example
hnasr
225K views•2019-05-12

Cloud Computing - Introduction
elithecomputerguy
98K views•2019-10-07

From Traveler's Dilemma to Dynamic Routing | Demystifying Networking
IITBombayJuly
5K views•2019-08-04
Trending

Playstation NO DISC/NO BUY Fight Is Over...
DavidJaffeGames
4K views•2026-07-23

Americans Confused in Australia for 17 Minutes Straight
IWrocker
17K views•2026-07-23

Bitcoin Social Interest: Dozens of us Left
benjaminjcowen
12K views•2026-07-23

Tesla Profits Plunge & SpaceX Stock Continues Fall
TheJohnJohnstonLounge
6K views•2026-07-23