PHP Architect logo

Want to check out an issue? Sign up to receive a special offer.

The PHP Podcast 2026.01.29

 

This week on the PHP Podcast, Eric and John talk about Git Worktrees, The future of MySQL, PHP RFC’s, and more…

Links from the show:

The PHP Podcast streams live, typically every Thursday at 3 PM PT. Come join us and subscribe to our YouTube channel.

X: https://x.com/phparch
Mastodon: https://phparch.social/@phparch
Bluesky: https://bsky.app/profile/phparch.com
Discord: https://discord.phparch.com

Subscribe to our magazine: https://www.phparch.com/subscribe/

Host:

Eric Van Johnson

John Congdon

Streams:

Partner

This podcast is made a little better thanks to our partners

Displace

 

Infrastructure Management, Simplified
Automate Kubernetes deployments across any cloud provider or bare metal with a single command. Deploy, manage, and scale your infrastructure with ease.
https://displace.tech/

 

 

PHPScore

 

Put Your Technical Debt on Autopay with PHPScore

 

CodeRabbit

CodeRabbit - cut code review time & bugs in half Instantly.

 

Cut code review time & bugs in half instantly with CodeRabbit.

Homeybadger

Honeybadger.io

Honeybadger helps you deploy with confidence and be your team’s DevOps hero by combining error, uptime, and performance monitoring in one simple platform. Check it out at honeybadger.io

 

Music Provided by Epidemic Sound

https://www.epidemicsound.com/

Why PHP in 2026

Listen

Transcript

[07:19] Hey, John. Hi, Eric. So listen, my wife listens to the show. and your audio is messed up. But go ahead. It doesn’t sound like you’re on the right mic. Oh. Hey! Are you talking a little earlier? I didn’t hear you. I’m not on the right mic. How’s that? Now I’m much better. Way better. Listen, my wife listens to the show.
[07:55] The rodney dangerfield of the php community i love it that’s right man we need to make one for the merch store.
[08:06] That is hilarious great job she she cares about me she buys me nice things like rodney dangerous t-shirts she actually buys them she actually bought me a much nicer one but like it’s so nice you don’t even realize what it’s saying, it’s like it’s fancy words and stuff right.
[08:31] How’s it going john it’s going great what are people listening to, we are we’re well i hope they know what they’re listening to but this is the php podcast and it’s the end of december january 29th you know what that means that means it’s the end of just i got i got i got john all sorts of twisted like i told him i was gonna stop reading the uh the the intro and just like, you know, just go freeform with it. And he just doesn’t know what buttons to press anymore. He’s just hitting buttons left and right. He doesn’t know what I’m going to say.
[09:10] Well, at the same time, I also realized I haven’t done the very final step of releasing the magazine. So I’m going to go do that live while you open the show. Oh, we’re going to get the magazine released live? I love that. I mean, it’s released. It just needs to be made live. Oh man, that’s awesome. Let’s get that on screen, shall we?
[09:37] Yeah, PHP Podcast, if this is your first time joining us, welcome. If you want to be part of the show, pop into the Discord channel and catch us over on discord.phparch.com and you’ll see the stream goes here on the right-hand side here. Every now and then it’ll show up. So this is what we’re looking at. Every now and then, yep. So I just got to go here. And then I got to hit this button right here. And technically it is live. Look at that. Look how pretty January issue out. Cool. Wanted PHP developers. Yeah.
[10:28] Wendell with continuing the newest Laravel employee and continuing his PHP in the Enterprise article, column. Real excited about that. Good stuff here, man. Good stuff indeed.
[10:52] So, yeah. what else we got to talk about I want to thank our partners for this podcast PHP Score, And, uh, I’m sure we have something to say about them, but I don’t have enough.
[11:07] We’ll talk about them a little later, but thanks PHP score for, uh, being a sponsor, uh, of ours or a partner of ours. Jeez. Even I’m seeing sponsors still here. Let me get that up there. There we go. I’m making, I’m making John work today, man. It doesn’t help that I’m doing two things at once. Right. Right. Now I got to bind everyone’s accounts make sure that people who have paid for the magazine get it in their account godly boy bind their accounts.
[11:38] I can’t even get my N8N working right now it’s not even letting people know we’re live on the other social platforms oh man what happened I don’t know man I’m just having one of those days you know things go sideways they all go sideways, just how it works if you are currently listening to the podcast on anything other than youtube if you could head over to youtube give us a thumbs up and a subscribe that would be great if you’re listening to us on the audio version please head over to youtube.com slash php arch and subscribe to the channel, help us out a little bit would love it thank you you would appreciate it yeah, did i tell you every now and then i read the comments because i have to go into the actual PHP architect account to do certain things and tells you, Hey, that community comments. I’m like, all right, let me check them out. This one guy’s like, yeah, could you guys put some timestamps in it and just
[12:34] let us know when you’re talking about PHP? I’m like, brother, that could be like shows go by.
[12:41] But that is, I mean, it’s not very frequently, but yeah. Yeah. If you’re looking for one of those stale, uh, Shows where we talk about stale stuff. It’s coming. It’s just not every week.
[13:03] All right. Last step. My favorite part. All right. I’m back. I can pay attention now. No. Did you talk about the merch store? I did not talk about the merch store. I guess I could. We need more merch. Yeah. All right. Store.phparch.com. Just head on over there and she, Check it out. So you said it’s been one of those days. What’s been going on? Whoops.
[13:34] I probably shouldn’t have said it on the show.
[13:38] Just meetings. Lots of meetings. Lots of back and forth. We have, yeah, just lots of back and forth where, well, stuff we can talk about, but just, yeah. I don’t know what to tell you, man. I can’t talk about it here. And you know I will bitch. I will bitch here, but not this time. I did do some coding, though. Actually, I leaned heavily on Claude this week. Or last week, actually. I leaned heavily on Claude. So I’m doing some proof-of-concept coding, which is my favorite type of coding. because, you know, I just show them that it can work and then I don’t have to worry about it. I can make somebody else code, you know, do the actual good code. And this is actually a very neat little service that they’re looking to offer.
[14:40] It’s kind of boring unless you’re in the industry, but it’s a lot of automation where they want to, They’re trying to create an API endpoint that pretty much anybody in this industry could utilize in conjunction with their product. And, you know, it’s just been fun. But they had a request.
[15:08] I’m like, we can do it. I just have to remember how to do all that stuff. And so I reached out to Claude I’m like hey I have this request The client Wants to be able to receive an image, Wants to be able to like market where we know if that image ever changes. So, you know, like do a SHA hash on it or something. And then it wants to make a copy of that image. It wants to water market with their logo and they want to put this UUID on it from the database.
[15:47] And I was just like, I was just trying to, I mean, obviously the, the, doing the SHA 256, I’m like, I’m not going to do that. But I couldn’t remember how to manipulate images in PHP. It’s been a while since I’ve done that. It turns out it’s way easier than it used to be. Well, image magic. No, it wasn’t. Well, it might be image magic in the background. But the thing I needed the most, because I wanted it to be a watermark. So I needed to be transparent and just barely showing up. And that’s the thing that was stressing me out. And there’s, like, this image copy merge command in PHP, which has been there for, like, ever. And I just never do it.
[16:33] But I said, so, okay, I need to prefix this because I talked to TJ about this. And TJ validated me a little bit. But, okay, let me finish the story. So I reach out, you know, I fire up Claude. I’m like, hey, I have this request. Let’s focus on the image manipulation one. And I need to be able to manipulate, make a copy of the image, manipulate it, add a watermark, and add a UUID from the database.
[17:04] And I told him, like, give me some ideas on how to do this. Like, you know, what should I be thinking of? I wasn’t telling you to do it. I just told it to, like, you know, give me a direction, right? And it came right back, said, oh, yes, you know, we can do that, blah, blah, blah. And, you know, it outlined everything. And I’m like, all right, all right. And then I swear to God, at the very bottom, it said, this task should take between 8 and 10 hours for you to do. And i didn’t think much about it at the time and i and i did say well how long would it take you to do it and it said i want to say like 10 to 15 minutes i’m like fucker.
[17:56] And and uh i i so so i i go through i’m like well why don’t you go ahead and do it then and you know we had to iterate through it a little bit and had to do a little cleanup i mean nothing It was actually super impressive how much it got done, like the first pass, how much it got done right the first pass. And then I was like really into the coding at that point. I’m coding, I’m coding. And then a couple of days pass. The more I sat here and thought about it, I’m like…
[18:30] Did Cloud Code just give me, like, a scope? Like, how much time it’s going to take to accomplish it? Like, first thing, how does it know how well of a coder I am to even do that? And what’s it basing it on? And so I reached out to TJ. I’m like, hey, man. I’m like, I might be crazy. but i’m pretty sure claude gave me like an estimate on how long it would take me to code something he’s like well he’s like he’s like i’ve seen that happen i’ve had that happen to me before he’s like but it’s not something it’s supposed to do okay all right and so i went looking back through my log to try to find where i thought i saw it because now i’m thinking like i’m hallucinating that. Like, I was tired or something, and I didn’t see it. So, you know, I’ve gone back, I started going back through the log trying to find it. I couldn’t find it, so I asked Claude. I’m like, hey, Claude, do you remember when I asked you to do this task?
[19:39] And he’s like, you know, it replies, he replies, it replies, yeah, you were trying to accomplish this, this, and this. I’m like, yeah, did you give me an estimate of how long it would take me to code that? And he’s like, I’m not, I forget the exact words, but he basically says, no, I don’t do that. It’s like, that’s not my goal. I don’t give you an estimate. You know, my goal is to stay on task. I’m like, I’m pretty sure you gave me an estimate. And then he says, well, sometimes I might do that, but I didn’t do it. And I’m like, what the hell’s going on? I’m so confused right now. How do you know who I am? Like, I feel like somebody’s messing with me, man. Like Joe says, it’s looking in your Git history. It’s seeing your Git history.
[20:29] I mean, I got frustrated. Again, down the clawed path again. I got frustrated today because I needed to fix something in the PHP Tech website. And I made a fix in CodeRabbit. Another partner of ours said hey you shouldn’t do it this way this this could be a cross-site scripting vulnerability put this prompt in your ai and it will fix it correctly so i’m like all right i’ll do that so i put the prompt into claude and claude’s like oh i understand what you’re saying i see what you mean yeah this is right let me fix it boom boom boom and then it’s broken again i’m I’m like, God damn it. I was just still broken. And the thing that I don’t understand is it’s not broken on JS tech. I’m like, why is it broken over there and not broken here? Like, what did I do differently in these two code bases? Because that’s when I was actually coding stuff. So, yeah, I don’t know, man. And then John’s like, I asked John to approve my PR.
[21:36] And I don’t know, you were out to lunch or something. John says to me back, why’d you close it? I’m like, because I’m pissed and I’m grumpy. Leave me alone.
[21:46] AI told me I’m dumb. AI broke my stuff. Told me I’m dumb and then broke my stuff, so I’m out of here. How about you? How was your week?
[21:57] Stressful because deadline of tomorrow to get some things done and also the magazine needing to get out and yada, yada, yada. But you brought up Claude.
[22:11] Have you ever hit the API limit? Have you ever been rate limited? I don’t think so. One of our clients has an account for all the employees. And all of a sudden they start getting rate limited today saying you’ll regain access on February 1st.
[22:31] And usually it’s like, hey, we’re out of funds. Go top it off. So they went and tried to top off the funds and it still doesn’t work. Did you realize there’s a $5,000 per month limit on Claude? You guys, they hit that? They hit $5,000?
[22:53] Holy smokes. No, I didn’t know that. So I’m assuming you can, you know, sign a contract with them and they’ll, they’ll increase it. But in general, it’s like, we’re willing to trust you up to $5,000, but above that, we’re going to say no, unless we know who you are, right? We’re not just going to take a credit card because maybe you’ll charge it back or whatever. We don’t trust you.
[23:19] But the crux of it is over the holidays, the owner of the company reached out to his son who works at the company and starts talking about AI and this. Clawed code specifically, or AI-generated code.
[23:38] He then proceeded to take the rest of the holiday break and build an application, basically the same thing as what we’ve been building for a month. Son of a bitch. And… I don’t know. Of course, he doesn’t know what the code looks like or any of that, but it’s like, that’s actually crazy. Yeah. So then for the past couple of weeks, he’s taken a couple, like a developer and a QA person and brought them over to his code base to say, hey, let’s, let’s really focus on this. So it’s all vibe code. It is just very like, yeah, I need this, build it and let’s make it happen. And then the goal now is they’re going to build this product. We’re going to continue building the product we’re building and then take the best of both worlds, right? Hey, this works better in here. Let’s bring it over here. Or that works better here. Let’s like merge them together. So it’s very interesting and scary at the same time.
[24:46] I, I gotta admit, I was, I was taken aback. When it was first said and it’s still like every time they talk about, oh we’re going to launch a free switch that was my baby I took the time to make free switch work for the project we’re on and all of a sudden they have their own server doing their own thing and it’s like, But, but, but, but, right? Anyway, so I don’t, obviously it’s his company. He can do what he wants. And it’s, it’s interesting because another developer brought up that in big enterprises, sometimes they will have siloed teams. I think he said Nintendo specifically, we’ll have two teams siloed working on the same thing for a given amount of time. And they’re not allowed to communicate with each other about what they are doing. And then at the end of whatever period it is, they come together and do the same thing. Like, let’s see what you did and what I did and merge the best of the best from
[25:55] both things. because, you know, each team is going to get something right that the other one didn’t.
[26:02] So it sounds like an interesting approach. The whole vibe-coded thing is the hard part. Right. But if it’s a… Go ahead. Yeah. But see, here’s where I struggle with that. Like, the Nintendo approach, I feel, is different, right? If you have two teams of developers doing something, you know, that’s fine. It’d be interesting to see how each team approaches certain problems. But when you have a non-developer just vibe coding, it’s great that it gets to work, but how maintainable is the code? How well-structured is the code? Is it using best practices? Yeah.
[26:47] I don’t know. That’s what I struggle with. And I’ve made it clear. I think that’s our new horizon as developers is we let these companies who don’t know anything about development bring on some vibe coders who puke out code, get it working. And then when it starts breaking in about a year or two, and they need a real developer to come in and fix it, or at least a real developer who has enough understanding about developing and code and code patterns and things like that to come in here and work with AI. Because, again, I still feel like AI is a very useful tool. I’m not looking to get rid of it any time, but it needs to be used by the professionals who know how to use it. I think if it’s used in a proof of concept, like the whole point of a proof of concept is you build something and then you throw it away. You don’t go to market with it. That’s my concern is if they’re building it and it’s more of a let’s learn from
[27:54] each other, but not use that code as it stands, That’s one thing. But I can also see it, especially when it’s the owner of a company building something and it works enough for them that they see money at the end of the path. It’s very tempting to say, this works. Let me take it to market and sell it without doing that whole thing. Double check everything right and just understanding like you know the the the pitfalls of bad development and you know what you should be looking out for yeah yeah man that’s uh that’s interesting i’m kind of along that same line uh last week i talked about cloud code the gui, was using work trees to, you know, help you vibe toad. And you can tell it not to, but the issue I was having is that it was using these work trees and I’m using herd. And so like whatever vibe coding it was doing, I couldn’t, I couldn’t check it in herd. Basically, you know, I would have to say, hey, you know, work in the project sort of thing.
[29:12] But they had to rekindle this like idea that I’d been willing to work in work trees for a long time. If you don’t know what Git work trees are, check it out. It’s kind of like branches, but everything, instead of, I don’t know how to explain it, you’re not working one code base. Like each branch becomes its own directory of the whole repo. Yeah.
[29:36] And you don’t have to have them all checked out at the same time, but in general, you can, you can have multiple branches checked out at the same time and you just go into that directory and now you’re on that branch working that way. And where, where it really seems beneficial is like what I do a lot where I’m working on something and then I have somebody reach out to me and says, Hey, I’m looking to merge this PR in production. Can you look at it and test it? And then now I have to, I have to stop what I’m doing. I have to do a quick commit in my branch. I have to switch over. I have to create another branch to test their stuff. And it’s not like it’s not a huge pain but it’s it’s enough of a pain where i’ve i’ve forgotten to do a commit and now i’ve i’ve switched over to another branch i pulled their stuff in and now my stuff is mixed with their stuff and now i have to go through and cherry pick this you know it’s just i
[30:29] hate when i do that so this kind of takes care of that right you when you create a new branch you basically create a whole nother directory of code and you know you work in that, And I, I’ve been thinking about how I could do that, um, with herd and well, I talked about creating a script. So like when I wanted to do a, do a work tree, I would call the script and the script would create the work tree and, you know, do, cause my big thing is, you know, you have to remember to do the composer install in the new directory. You have to do the NPM install in the new directory. You have to do the NPM build. You have to, you know, you have to go through all the steps again. Yeah. And the more i thought about it over the weekend i’m like man i feel like i could do this like i could i could do it i actually i didn’t get to the weekend to be honest with you uh marcus more in our discord’s like hey you you know uh michael drinda just did this right like what what the
[31:23] hell are you talking about michael drinda like almost that week released something he calls he calls Arbor. Let me see. Let me, let me get it shared here called Arbor, which is a very slick implementation. The reason I said that this carries over from AI is because it’s written in Go in Michael Dren is like, this is all vibe coded. Like he’s like, I don’t know, go, I vibe coded this whole thing. And it’s very slick. I was actually pretty happy with that. I felt it was like 95% of the way there, it was doing a couple of things I didn’t like and didn’t agree with. And I actually, I actually created a pull request, which he has now closed. You bastard. No, he didn’t. Here it is.
[32:14] Which I vibe coded as well. Cause I, I’m not that good with go. Uh, but so, so his implementation and he’s, he’s working on it for stuff he’s doing, um, his implementation the way he had it was uh it would it would you do a arbor init and then the uh repo location the git location it would pull the code down that becomes your main branch right this is like a fresh pull that becomes your main branch and it copies over your uh dot env dot example file and then tries to run migrations with seeds, a seeder on it. And I was telling him, like, well. First thing, you’re assuming the default .env example file uses SQLite now. That’s Laravel’s new, this big push to SQLite for development, especially. I’m like, but you’re assuming people are using SQLite, but we update our example file with the stuff we’re using. And, you know, depending on what it is, you know, like, so we use like MySQL and Redis and this and that.
[33:34] So that is what’s in our example file. But more importantly, we don’t put credentials in our example file. So like the credentials aren’t there for when it copied it over. So, you know, I’m like, well, first off, I would rather not just assume I want to run migrations. Yeah. More importantly, I don’t want to run migration fresh. It dumps the existing database and reruns all the migrations. And then Cedar. I’m like, I’d rather not do any of that. I’d rather have that be an option. And then when I’m working off a work tree, so you do Arbor work and then the name of the branch. And it creates the branch. And the cool thing about it is it does run the Composer install for you. It does run the NPM install for you. It links it to Herd. So it’s Herd, you know, it’s Herd smart. It links it to Herd. So everything is like there.
[34:34] So I told him, I’m like, the other thing I like is I’d rather it copy my .env file from my main branch. Like if there’s a main branch after I do my initial pull, copy that .env file because then I’ll have all my credentials. And so i created a pull request that did all that and uh i still have this fork it’s what i’m using but here you go fix those uh complex well well so so here’s the thing he’s decided to go in another direction with it uh which is probably this closed one nope okay so i don’t know if he has that code out there yet. So he’s, he’s decided to take this, this config approach, which again, I don’t necessarily agree with. I don’t think, I still don’t think, cause that’s still too much work. Like I don’t want to touch a file. You know, I just want to work with the files in my repo. Like I don’t want to touch additional files, which is why I thought his initial implementation was so eloquent.
[35:37] Like it’s just perfect. It works with Git, works with my repo. I’m not adding anything to it. I’m not taking anything away. So…
[35:48] I might just keep his fork, the fork I pulled and added my changes. I might just keep using that one because it kind of does what I want it to do. But yeah, it’s out there. It’s interesting. Was there only the one pull request in there? One closed and one in yours? Yeah. I don’t know if he’s doing pull requests for his. I was going to say, I think he’s pushing direct to the main then because. Yes. Because this is somebody else as well. Yeah. For you to have merge conflicts already. Yeah yeah he must be he must be pushing directly to me matter of fact 11 hours ago 10 hours ago 47 minutes ago yeah yeah he must be doing it uh himself so so yeah i mean first thing how weird is that like i hardly ever hear people talk about working with work trees and web development and i always struggled like trying to figure out how to implement it and then like i decide i’m going to give it a go and in this
[36:47] aussie swoops in and takes my glory well somebody else somebody in discord let me go give credit where credit is due jeffrey davison shared harris 21 has their own repo and it’s laravel herd work tree i have no nothing about it other than along the same lines it’s a clod code skill that automates setting up get work trees for laravel project served by laravel herd we need a link brother give us a link it’s it’s it’s in it’s in there oh it’s this one oh yeah so it’s the second one on the trello board it’s also in discord this one right here now it’s not it doesn’t have the same eloquence as arbor i mean the naming for arbor is brilliant.
[37:39] Versus letterville-her-worktree. He actually put some creativity into his naming. He probably asked Claude, what should I name this? And Claude said, oh, let’s go with Arbor.
[37:54] Copies and updates.unit file with correct URL session domains. Oh, that’s cool. Cool. I’m wondering if this runs the composer install. Yep. Vite is from an NPM package manager. i i would assume that’s what it’s saying oh and it’s just a plug-in it’s a plug-in, have you looked at any of the plugins for quad code actually we should run our php score ad and then we could talk about plugins for quad yeah let’s do that let’s let’s hear from php score, what did you say php score admin what the hell is that what though php score and then and then Oh, and then. Oh, okay.
[38:41] All right. Let’s hear from PHP Score.
[38:47] Thank you to our partners at phpscore.com. Every app builds up technical debt over time. It’s the price we pay for shipping new features and moving fast. When we build up too much of it, though, it can start to impact how we work. Team velocity suffers, bugs become more frequent and take longer to fix, and everyone starts to get a little frustrated. The key to managing debt is to measure it. A credit score can help you understand how well you’re managing your financial debt. And now there’s a credit score for your technical debt. Go to phpscore.com to get a free technical debt score and monitoring for all of your PHP applications today.
[39:29] Thank you, PHP Score. Yeah. Yeah, I just was looking at this as that was going on. And, yeah, it does a lot of very similar approach. The one thing I liked about Arbor is that the top level is the name of the project. So, like, if it was the phptech.io, so it would be phptech.io. And then inside of that are your branches or your work tree. So main is there initially. And then any other ones you create are there. This one actually creates the work trees within the project. So you’re duplicating the entire code base again within the code base you have.
[40:20] Not real thrilled about that idea. but this this is pretty cool i still am wondering it assumes if you’re running uh it’s skills running as before running yeah i’m still like not totally seeing where it says it runs composer automatically but i assume it does like if that would be the point of something like this it says it up top under what it does number four. Installs dependencies perfect there we go yeah yeah yeah this is this is slick yeah but it’s still not a separate app it is built within cloud code and it’s cloud code specific plugins so you asked me if i’ve tried plugins yeah i have tried a couple plugins um if if you remember uh you asked me why i switched to using the ui and like i said one of the reasons was uh at that time, claude wasn’t remembering session after session where the ui was just one session it was just a project but the other reason was uh my claude cli started
[41:31] crashing and i would even ask i’m like why do you keep crashing he’s like i can’t self-diagnose myself what do you say what are you asking me but uh but that was after i i installed two plugins one was like a dashboard and then one was so that it would remember it would have the memory session after session there was a plugin for that and i’m not sure which one was crashing it i just ended up taking both of them out and it was working again so i just i stuck with it and kept using it so i’m not opposed to trying this plug-in, however. It’s very easy to install and remove plug-ins. There’s no magic. It even tells you I saw here somewhere. It tells you where it stores it. Which is… Yeah, right here. This is where it stores it in your home directory. So this is where your plugins are.
[42:30] So I might have to give this one a try, quite honestly.
[42:35] I might need to get them. Within Cloud Code, did you know you can go into plan mode and auto-accept edits and all that stuff? Yeah, yeah.
[42:46] So I automatically, I have it, which I don’t understand. Like I tell it to auto accept edits and then it still says like the first time it tries to do something that it hasn’t done before, it’ll ask me for permission to do it and ask me, can I, can I always do this on this project? I’m like, I thought that’s what auto accept edits were, but yes, do this. But yeah i i’ve done plan mode before and again i don’t understand what the benefit of it is because my example earlier i wasn’t in plan mode i just told claude hey i don’t want you to do anything i want to have a discussion around the best approach for this so yeah i i’m not sure what the differences are um maybe there are benefits i just don’t know what they are i i just use i haven’t auto accept edits because i i’ve built up that much trust with claude now and have enough of an understanding of how it works where i’m fine doing that but like if i but i’m not always telling claude to do the coding
[43:52] either i i will have conversations to you know talk about, implementations the way to do things and stuff i was like just recently i um.
[44:04] I said I wanted it. So I’m working with license plates on this proof of concept. I’m working with license plates. And I’m like, hey, the more I think about it, I want a license plate to be a value object. So I want to be able to put a bunch of restrictions around what a license plate is. We’re talking a U.S.-based license plate and plates from Canada. Can you come up with a rule set to accommodate that and make license plate a value object so that when i’m working in the code i always know that i have a valid valid license plate like it’s it might not be valid as in it’s a real license plate it could just be right correctly but i know it’s added correctly it was cool because cloud code started responding right away because well every state in the u.s has different requirements do you want me to go state by state i’m like no i’m like for now just make a very you know uh generic format that you know can apply to everything it might drill
[45:12] down more at another time so so yeah i like using it for that sort of Because I don’t want to try to figure out all the rules from license plates. It’s like a pain in the ass. I love having Claude for that sort of stuff. All right, we’ll have to give this one a try.
[45:34] Yeah. I was talking about how my week’s been a pain in the ass because we have this looming deadline coming up.
[45:42] And one of the things I was working on, I was blocking another developer, a front-end developer, on and it was frustrating I’m like, because it was very well unit tested I was adding two new not endpoints I was adding two new links to a HAL API response,
[46:04] And we went through the requirements of what it needed to be. I added tests to say, you know, here’s what the value should be. Everything should work. Release it. It actually gets pushed out and he then tries to use it. And it’s like, I’m not getting the right stuff. I’m like, what are you talking about? So we go and look and sure as shit, he wasn’t getting the right values. Um it in the telephone calls it’s give give me the next number i’m going to dial and then the next contact i’m going to dial.
[46:43] Nice i was just reading that sorry oh yeah duck duck nizzle photos are it’s not real we you’re you’re a male model we need pictures um so anyway i thought the the rules were very clear my tests were passing i got frustrated he showed me i’m like i wonder if it’s like between calls like at the beginning of a called it’s this way but after you ended it changes state and sure enough that’s what it was so i updated my test to say okay run these tests before hanging up then pretend like you hang up on a call and then run these tests and assertions afterwards and sure enough i found the issue coded up a fix.
[47:35] Pushed it out good to go right no no no no that’s i was gonna say no nope he tested again he goes uh it still doesn’t work i’m like you gotta be shitting me right so i go and i spent a lot of time on it and turns out we had some b hat tests as well that were actually making the api calls, i’m like let me add to these tests as well because i didn’t even think about that before, and turns out it was a very edge case of the very first dial the state you’re in could be wrong but i was able to to work through all that but it was just so frustrating because in the middle of it i kept pushing my code up to github and ci would run and just fail i’m like what’s going on. All of these new microservices that we have we have a make file for and there’s a specific thing that says make ci so it’s supposed to run all the tests like ci does and they were passing on my machine but you get over to github and it was failing and,
[48:49] And I could see, like, Rector complaining. I’m like, that’s weird. So I can run Rector locally, like, make Rector, and it would change files. I push up, and it fails again. I’m like, what the hell? Turns out Rector was adding casts, like a string in front of variables. But Rector did it with a space, and then PHP CS was like, there shouldn’t be a space here. But I’m like, but Rector put it there, not me.
[49:18] I was so confused and then i finally asked in slack i’m like what is going on here and somebody said run make pre-ci i’m like pre-ci well what the hell is that and it turns out. Make ci is supposed to test things but it doesn’t change your code base right pre-ci will actually make changes to the file so it’ll run rector it’ll run php cbf and some other things, and i was like oh that’s so much nicer run that that wasn’t what i was feeling though right i mean because it would work either way it would work but because of the coding standards and like that the one oh it was all on the standards i see what you’re saying the one that kept pissing me off was the space between the cast and the variable name yeah seriously like some of the others i can understand but it’s like this is killing me finally finally got it through gave it to uh the front end developer and it’s working so happy nice yeah we need coding standards
[50:30] and one of our larger couldn’t be i mean i think we can’t have them but we really need to get better at it it’s so easy to forget about that sort of thing yeah have you looked at any of the rfcs lately the php rfcs no but before we get to that can can i do something else you most certainly may.
[50:55] It’s the end of January. You guys have days, literally days, before this early bird ends. Not even days. It’s the last time I’m going to tell you. Get in there and get your early bird. We have actually a pretty good day today, which is nice. I don’t want to jinx it, but we’re happy with where we’re at right now. Yeah, get in there because this goes bye-bye. It’s not coming back. Yep. so the cheapest the tickets will be this year for sure yes for sure all right what are we about to say um what do you want to talk about anything else on your list do you want me to i was going to talk about a few rfcs that are currently in the voting stage,
[51:43] uh oh i actually don’t have something on my list where did that go.
[51:51] Um this guy here i don’t have on my list,
[51:56] yeah let’s talk about rfc’s and then we have time we can bs about this other stuff it’s not php most of these are going to go super fast i mean like this first one is um trim form feed um,
[52:12] It’s a no-brainer. It passed 100%. I’m sure everyone uses trim to trim off spaces off the end of a line, new lines and tabs. All they want to say is you should remove forum feeds as well. I don’t know how big of an issue that is, but for them, obviously, it is.
[52:37] I wouldn’t have you thought about this. Right.
[52:41] They’re obviously working with some some file they’re getting from somewhere and it has that, so yeah it’s just a quality like the only problem is it’s backwards breaking in the sense that if somebody’s using it and they have form feeds and they don’t want it trimmed now it’s going to be trimmed yeah i was about to say yeah exactly you know the you know there’s gonna be that one guy on the mailing list like you guys broke all my code base right that’s why I was surprised that it passed unanimously like, because I can see it impacting very few people by not adding it in there, like it’s a quality of life thing because you can always add it into the list right, uh the second i think it’s the second parameter you can say what you want trim so you can trim anything it’s just if you don’t pass anything in this is what gets trimmed so you’re you’re making the change to benefit a couple of people and potentially breaking
[53:39] code that’s been around for years and the chances of the developer that wrote that having moved on and now people are like why is this broken can you can you imagine claude claude fix this.
[53:54] But it passed unanimously unanimously see stuff like this like why can’t i think of improvements like this to make this is probably probably wasn’t a lot of work damn it all right what else you got it’s it’s weird it’s one of those things where you hit your head on that enough like damn i gotta trim this but how often does that happen to you to make you say maybe i should rfc this, more importantly how how often does it happen like normally i would say you know i’m going to create a class for this or help profile for this yeah i don’t know if i’ve ever said you know this should be in the internals of php.
[54:34] Yup the next one that I brought over is readable readable reflection is great I don’t know how often you use it I don’t, I use it occasionally, not a ton, but PHP has progressed so much in the past few years in the way we handle our properties. So in the past, it was, there was an is public method, but all that said was if it was public, which back then assumed it was readable and assumed it was writable. And we’ve made such advancements in our typing or visibility over the past couple of years where now we have public-private set, right? So it’s public where it’s readable, but it’s not writable.
[55:27] So just a simple addition to reflection to choose scope. So you can say, if you don’t pass scope in, which is weird that it’s the first parameter, because they want you to pass null to say, is this globally accessible? Oh, interesting. And then if you pass in a class in there, it’s saying, is this accessible by this specific class?
[56:02] So basically inheritance, if, if you are extending a class, you have, you might have access to something, but you want it in the global sense. Yeah. All right. Cool. Is this a, where’s this at? Oh, it’s, it’s past. Yeah. 25.3. Okay. So 8.5, uh, targeted for 8.5. I think so. Okay. Cool. Cool. Got one more here. I see. Yeah. This last one is very interesting I don’t understand I don’t understand the title so it’s the so in in other languages you have a let block or yeah it’s just a way to scope specifically variables yeah so it’s basically within this scope of let bracket bracket you can define, variables and then once you’re outside of that scope those variables go away right um the the point of this is we often have temporary variables we’ll use at the top of a function but we don’t need them later or then we reuse them later and we didn’t mean to reuse them so that leads to bugs potentially depending on what the variable was up top you get later
[57:23] on in the function all of a sudden that variable set and you didn’t know that it was going to be. So they want to have a simple way of.
[57:32] Just saying, I know this is temporary. I don’t want to use it later on.
[57:38] This one is not getting as much traction in the voting. In the voting.
[57:45] Actually, it looks like it’s failing so far. Well, it’s tied 13, 13 yes, no, and then five people abstaining. But don’t you need a super majority? Probably. I think so. Some of the people that… It requires a two-thirds majority to accept. Yeah. The people saying no. some of our friends we got uh ramsey saying no krell saying no daniel scherzer the release manager for eight four or eight five eight five is a no why’d you say no ramsey’s in her discord yeah see this this is where this is where we’ve talked about in the past right where i wish i could see the arguments of the people who say no like what there’s got to be on the mailing list right right right i want it to be you have to go back through it yeah i want it to be a comment when you when you vote yeah or just even if it even if i could click on like ramsey’s name and it take me to an email or something you know it’s like i don’t want
[58:53] to see this this isn’t what i want to see when i click on his name i’ve already seen that face enough derek abstained he’s like i don’t want to get in involved with this nonsense that doesn’t sound like derek at all.
[59:09] Adding for each foo as let bar syntactic sugar syntactic sugar for what for each,
[59:19] yeah i i can’t say i am i yeah i can’t say i i’m a fan i i don’t think i would use it but you never know it’s like yeah chance that it’s one of those things like other languages have it they they must have it for a reason but, i know javascript has it right like there’s a difference between let and variable like you know like you said it was a it’s a scope thing right i think so yeah those those javascript guys, they’re weird none of them has signed up for js tech yet where are you at get your ticket for jstek bastards.
[01:00:03] We really need to market that one more gross you don’t need a vote on this one it’s gonna it’s not gonna pass yeah yeah cool it’s like how often have you gotten bit by by a variable like i understand it’s very subtle bugs that get introduced so it’s one of those you get bit enough you’re like damn i wish i had a way to combat that but then you got to think to combat at it ahead of time yeah yeah totally all right uh let me get this last one out uh just because well part of it’s because i just want to genuinely just bitch a little bit i guess and then um, all right so we’ll share this come back over here all right first thing uh what’s the future let me see well this has kind of been like a question for a while ever since oracle bought sun and everybody was very curious about uh you know what was going to happen in my sequel and to oracle’s credit yeah i i think it’s more of a image issue like they realize
[01:01:07] if if they if they totally killed my sequel you know the the the development world would probably come down pretty hard on them so info world laura especially.
[01:01:22] Who who are like what are you doing like do you do you know what you’re doing like this article was like okay postgres is like you’re thriving and i agree like i see postgres all the time and like i said uh the this the laravel world has gotten all all up uppity about the sequel late now which i think is a fad but you know it’s just it’s just talking about like you know the the, fact that MySQL was purchased by Oracle and this and that, and more people seem to be moving to Postgres, which I wish I had more of a handle on, but I don’t. But then down here somewhere, right here, It says, the loss of many Oracle staffers has impacted the speed of MySQL development. Looking at the numbers, number of bugs, fixes released in each quarter update, the number of fixes, blah, blah, blah. And then she says, where did she say? Oh, did I not highlight? Oh, here it is. Down here. Will this act as a spur
[01:02:22] for a fort of MySQL that the community supports? Yeah, it’s called MariaDB. Like, where the hell are you? It won’t create a fork there is a fork when Oracle bought MySQL that’s the first thing the community did was create a, fork maybe this will have the community create a fork somewhere to Postgres.
[01:02:50] Are you even in this industry do you know what you’re writing about, I just had to bitch about that I don’t know what they’re talking about, i i uh i don’t even know what the purpose of this article is i mean it just kind of kind of hummed drums i mean i get what this was the only kind of like oh this is interesting first thing i didn’t know oracle laid off a bunch of people and yeah i could see how that could impact my sequel so yeah this this would be something to keep an eye on but like all this fluff this is just like stuff that’s like you know already known already talked about like okay great you know the funny thing is reading that my brain doesn’t read very well sometimes go back to the highlighted part, of the big one yeah which one yeah right there so i’m reading that it says the loss of many oracle staffers has impacted the speed of mysql like how has it affected the speed of a database,
[01:03:52] first time it has a question after a word it’s like that’s it i got a question right here.
[01:04:01] I’m not a very good reader,
[01:04:05] that’s funny yeah uh so yeah it’s uh whatever i mean i am i stopped being extremely nervous the one thing i didn’t realize so i didn’t highlight it unfortunately i should i should have but i guess uh in comparison my sequel community is quiet although oracle has been about so they’re Here, the enterprise version. So apparently MySQL right here, for example, why MySQL HeatWave Boost Innovation Vector Search, this part right here, I guess they have been developing MySQL Enterprise to kind of be more on pace with some of the cool things that Postgres does that somehow hasn’t been finding its way back into the open-source community version, which, again, I thought that was part of, well, I guess I don’t know what the license is now that Oracle has it. And if it’s Oracle’s product, I guess they can do whatever they want. But I thought that was the whole thing. Like, everything is supposed to find its way back into the…
[01:05:14] Community version uh yeah i i didn’t realize there was an actual difference between enterprise and community and to the point where there were actually there’s actually features in the enterprise version that are not in the community version uh that is a little disappointing to read but yeah so that’s it that’s all i had live chatter and discord as you were going over that. Sarah is the sole vote no on the um the trim operation for the very reasons that we just talked about where i was like you’re you are putting something into the language for a very small number of people and it could have very major impacts on other people that don’t even realize it’s going to impact them right yeah so oh yeah i’m sure i’m sure that can be said about a lot of these changes and that’s why like so so what do you put like sarah would you would you feel better if this was part of a major release as opposed to a
[01:06:20] minor release i mean obviously we’re in a delay so i don’t know if she’ll get that in time but i think for the number of people that will be impacted in a positive way like i don’t see it being a big enough positive impact to the development community as a whole to make this change worth it. When, when there’s already something within the construct that says, if you want to trim line feeds, just add it to this list. Right. Right.
[01:06:54] Yeah. Yeah, I agree. I don’t, I don’t think like, it’s not, it’s not something people have been bitching about for years. Like a bunch of, you know, people have been saying, when are we getting this? Usually backward breaking changes in my opinion should be it’s going to benefit the community as a whole or massive speed improvements which benefits the community as a security improvement or not even improvement security fix really right yeah for something as small as a line feed that most people don’t see in their text files well they don’t see it because it’s a hidden, character but most people probably don’t have in their their files probably not worth it, yeah i agree all right uh what do you think i don’t know what do you know i want to check one more thing on the trim one thing i would like to see on the trim is a right now if you want to add a character you need to also include the other characters it’d be nice if there was a flag
[01:07:58] like appends my character to the list. I want the standard six that are there plus my new one. Oh, yeah. Because as soon as you specify one, I think it automatically removes the others. That would be. Weird but yeah yeah i agree with you if that is the case i do agree yeah.
[01:08:26] Yes our low no matter how you slice it yeah we kind of agree with you on that one sarah i think, all right are we good is that it for this month duck nizzle um data grip i like data grip for,
[01:08:44] a database client. DataGrip is paid… Well, if you don’t like… If you don’t like… Yeah, it does. If you don’t like dbeaver, dbeaver, however you want to pronounce it, you’re probably not going to like DataGrip because they’re very close to the same thing.
[01:09:03] I mean, there is… There used to be an open-source version of TablePlus, but it was horrible. It was horrible. I forget what I was using. I think I was using data grip on my Linux machine. I feel like there was another GUI out there.
[01:09:21] I mean, if money is an object, yeah. Data grip and Navicat is another. Navicat’s actually, well, I haven’t used Navicat in so long, but that was the first database GUI I ever used was Navicat. Yeah, SQL, Chris says, is the client he uses. If you’re good with command line um my my cli is fantastic uh i think that’s what it’s called right we went through this once before i always forget if it’s my cli or my sequel, my sequel it’s probably my cli no yeah it’s my cli so if if you’re okay with command line stuff which you know i i try to get better at let me share this with you guys real fast uh my cli and This is just for MySQL, and then they have another version for Postgres, and they have a version for Redis, a few other things. So this is great because it has the auto-completion as you’re typing. It will also auto-complete tables and columns, so it understands. Once you say use database, whatever database you’re using, it sees the tables
[01:10:36] and columns. So it’s basically the MySQL CLI tool that already does all that. Right. Well, it doesn’t do the auto-completion for you. It does.
[01:10:48] Does MySQL do auto-completion now?
[01:10:53] Almost positive it does. I mean, you might have to tap. Maybe if you tap, maybe. Yeah, it doesn’t show you the dropdown, though. Now I’m curious, though. Well, I’m not going to do it right now. I don’t want to prove you right at this moment.
[01:11:11] Here’s the Postgres one down here. I’m pretty sure there were all these other ones. I don’t see them on the list anymore, but. Sir, anything important came up on our podcast. Have you not been listening for years? Does anything important ever come up? Come on, you’re cute. Look at you. Nothing important. Yeah. So yeah, if you want to give DB data grip a shot, like I said, it’s very similar to DB Beaver. So if you’re looking for more of a GUI, click, click, click thing, yeah, you probably don’t like it. I’m not going to, it’s a completely separate topic real quick. I saw somebody, I’m not going to call them out, recently post saying, I’ve got a job, I’m comfortable in the U.S., but with the way everything’s going on now, If there’s anyone in Europe looking to hire and willing to relocate, I’m willing to jump ship.
[01:12:16] I was like, I told you not to say that on the podcast. Damn it. I didn’t say your name specifically.
[01:12:24] No, see, I’m, I’m, I’m that idiot, man. I’m the guy. See, that’s the thing, man. I’m, I’m the liberal with the gun, man. Like I, I’m ready. I want to fight for, for my country. You know, I’m, I’m fine. Like fighting, you know, the bureaucracy, the, the, the, the authoritism and i uh i’m the i’m the person they don’t want in this country but i get people like you know we’ve talked about it our kids aren’t safe uh with this administration and you know we’ve talked about you know what should we consider doing something like that but no i i could i i would be fine if i had the money like letting them live somewhere else and staying behind and you know going all rebel.
[01:13:14] But yeah i get it i totally get it i mean you don’t have to do it you don’t want to have to do this this is a panty ass this sucks i hate this timeline i hate it i hate it i hate it i need it i need to get back on a timeline that just makes sense and i assume i know you don’t you know don’t stay real current with news but i assume you saw there was another killing right oh yeah we’ve talked with the kid about it and god damn ridiculous i i heard on npr today that,
[01:13:50] we should end the podcast right now but ice has broken more federal federal injunctions, than any other like this year than any other um organization like in total ever it’s just crazy Yeah, it’s tough. It’s tough. Weird timeline, like you said. Yeah. Where’s the reset button? Would love to hit it.
[01:14:21] Right all right that’s it uh for this week i’m calling it john john uh lingered on too long there i’m cutting him off so thanks everybody for hanging out with us you’re balling i’m supposed to ball it’s gonna be a bad night because for some reason i got the idea on tuesday i’m like I should go do a workout in my, in my garage and I did legs. My, my butt and my legs are just absolutely killing me. I walk around all funny. It’s going to be really hard to bowl.
[01:15:02] Do you have a, I’m sure you have like your own bowling shoes, right?
[01:15:07] Oh, I got a show. Yeah. You got a little time? Sure. I’m going to give everybody a peek here. Hold on.
[01:15:23] Nevermind I guess I’m not I don’t know where I put them I wanted to show you those golf shoes,
[01:15:31] oh didn’t you show them to me or did you just tell me about them can’t remember.
[01:15:39] I think I just told you about them oh yeah because there’s no heel in them yeah I got three boxes of Jordans like I, as a kid you really like that was the dream like to have multiple jordans.
[01:15:57] I got the i got the boxes come in and i’m just like i don’t even want to open them i’m like jesus these are beautiful so anybody that knows me last couple years i’ve gotten special shoes for for tech,
[01:16:12] so for next tech i got uh these these jordans right these are these are regular like jordans and they’re orange and I like, it’s the whole orange thing, right? Because the other orange I had was like the construction orange.
[01:16:30] But I’ve also become a big fan, I’ve been telling John, of these Jordan golf shoes. And I can’t tell if you’re supposed to actually wear them to play golf in or not, but this is what they look like. So this is that same shoe, but there’s no heel. I just don’t know how that works like if you look at the other side it does have some teeth on it like I feel like you would actually use that on a golf course right, and you said it was marketed as a golf shoe it says right there, yeah it says golf right there so like I don’t I told John like I’m not sure if you’re supposed to just wear them to the golf course just as one on your other shoes or what but like.
[01:17:19] You know the other the other shoes are just like normal basketball shoes you know they’re just flat they don’t have any they don’t have any teeth or anything on them these have teeth and they’re not so bad that like you they feel funny to walk in they just feel like regular tennis shoes to walk in but yeah i i don’t know i want to go to the driving range try wearing them and see if i I can actually golf in them because it’s not like you’ve run or anything, but yeah, there are no laces. Obviously you’ve never played speed golf. I mean, either have I. That’s true. There are no laces or anything. You just, you just slip them on, slip them off. They’re better than flip flops, man. And I was a big flip flop guy. So, so yeah, these are great. Especially when you’re, when you’re traveling and well, we don’t have to take off our shoes anymore, but if, if you do have to take off your shoes, you just slip these on and off. They’re fantastic.
[01:18:11] I love these things. They’re Jordan golf shoes. So yeah, even says golf on the tongue.
[01:18:20] So yeah, they’re very cool, but I love, and I did screw up because this one here, the swoosh is orange and the swoosh is black. So I still got the orange tip. I did. I did, but whatever. Okay. That’s it. We’re done. Thanks everybody for hanging out with us. Appreciate it. Thank you. One of you. Bye. Bye. This has been PHP Podcast, the official podcast of PHP Architect, the industry’s leading tech magazine and publisher focused on PHP and web development. Subscribe today at phparch.com to see what the leaders in the community and industry are talking about.
Air date January 29, 2026
Hosted by Eric Van Johnson, John Congdon
Guest(s)

Our Partners

Collaborating with industry leaders to bring you the best PHP resources and expertise