I'm looking for a blazing fast @phpstorm alternative that allows me to just view and navigate a codebase. I don't want nor need to modify anything. Maybe I want to add comments for my agent here and there. But all the rest can be skipped. Hopefully 1 day @jetbrains will make it.
Ruud Kamphuis retweeted
Using PHPStan to Extract Data About Your Codebase: In this article, I’m going to show you how to use PHPStan as a data extraction tool — to query your codebase and produce machine-readable output you can use for documentation, visualization, or any other purpose.
Created a PHP SDK for Absurd: Durable Execution Engine in Postgres.
github.com/ruudk/absurd-php-…
I wrote a bit about my sidequest at Earendil: Building Absurd which implements durable execution (𝚞𝚜𝚎 𝚠𝚘𝚛𝚔𝚏𝚕𝚘𝚠, Temporal, Inngest, etc.) on just Postgres. How it works and why I like it. lucumr.pocoo.org/2025/11/3/a…
Ruud Kamphuis retweeted
No promises we'll be able to fix everything but…
We really want to improve generics support in @phpstorm, which issue stands out to you that should definitely be fixed?
Can You Write A Web Server in PURE BASH?! (no socat, no netcat, no exter... youtu.be/L967hYylZuc?si=q_E7… via @YouTube
Ruud Kamphuis retweeted
We have released a new version of Castor! 🦫
What's its best feature?
`castor execute some-composer/package`
Example with latest release of @PHPCSFixer, where we don't even need PHP to run it! 🤯🤯🤯
castor.jolicode.com/getting-…
Ruud Kamphuis retweeted
FrankenPHP has been moved to the PHP org!
@ThePHPF 💜💪
github.com/php/frankenphp
Ruud Kamphuis retweeted
My talk about #PHP Dead Code Detector is out:
🇺🇸 slides: docs.google.com/presentation…
🇨🇿 talk: youtu.be/3KHixfhUlAY
Ruud Kamphuis retweeted
#PHPStan 2.1.7 brings very cool new feature: extension point for conditional error ignoring 😍. Using `phpstan.ignoreErrorExtension`-tagged services you can have more atomic approach to handling static analysis errors.
Thanks @Ruud_ for this 🍻!
phpstan.org/developing-exten…
Ruud Kamphuis retweeted
Twigstan (github.com/twigstan/twigstan) is a really promising tool, and is now listed on @phpstorm blog: blog.jetbrains.com/phpstorm/….
Good job @Ruud_ !!!
I hope one day it will be the same for my Twig cs fixer
github.com/VincentLanglet/Tw… !
Latest version of TwigStan now verifies arguments passed to method calls 😎
{{ user.method(null, true) }}
Parameter #1 \$full of method User::getMethod() expects bool, null given.
Method User::getMethod() invoked with 2 parameters, 1 required.
github.com/twigstan/twigstan…
#twig #php
I just tagged the first release of TwigStan, a static analyzer for #Twig templates powered by @phpstan.
github.com/twigstan/twigstan
It's so annoying not being able to implement Stringable on string backed enums in #PHP. Why isn't this implemented automatically.
3v4l.org/flcm9#v8.3.14
If you use Rector consider sponsoring Abdul for his great contributions.
Can’t wait to use PHPStan 2 when Rector allows it.
I am working on upgrading to PHPStan 2 and PHPParser 5 on @rectorphp
github.com/rectorphp/rector-…
Ruud Kamphuis retweeted
New plugin for LLM: llm-jq, which lets you pipe in JSON and describe a jq program you want to run and it will use an LLM to generate the jq syntax and run it for you github.com/simonw/llm-jq
Replying to @tqbf
OK, you nerd sniped me: github.com/simonw/llm-jq
![Installing collected packages: llm-jq
Successfully installed llm-jq-0.1a0
$ curl -s https://api.github.com/repos/simonw/datasette/issues | \
llm jq 'count by user.login, top 3'
[
{
"key": "simonw",
"value": 11
},
{
"key": "king7532",
"value": 5
},
{
"key": "nicfab",
"value": 2
}
]
group_by(.user.login) | map({key: .[0].user.login, value: length}) | sort_by(.value) | reverse | .[0:3]](https://pbs.twimg.com/media/Ga3e7ZMbsAAeq6G.jpg?name=small&format=webp)
ALT Installing collected packages: llm-jq Successfully installed llm-jq-0.1a0 $ curl -s https://api.github.com/repos/simonw/datasette/issues | \ llm jq 'count by user.login, top 3' [ { "key": "simonw", "value": 11 }, { "key": "king7532", "value": 5 }, { "key": "nicfab", "value": 2 } ] group_by(.user.login) | map({key: .[0].user.login, value: length}) | sort_by(.value) | reverse | .[0:3]
Replying to @phpstorm
@phpstorm I really like the way PHPStorm shows an easy diff when a PHPUnit assertion fails. You can compare left to right easily. But when working with arrays, this is extremely painful because PS uses var_export, which adds numbers to every Array. This often makes diffing hard.
Ruud Kamphuis retweeted
PHP Annotated – September 2024
blog.jetbrains.com/phpstorm/…
Just open sourced our minimalistic error formatter for PHPStan.
github.com/TicketSwap/phpsta…

















