Open mortenscheel opened 2 years ago
Or better to improve this process and make it much faster. I'm implementing a new feature: 1 helper file per model namespace. Do you want to test it on your big project before the release?
The main idea is to don't touch the files which weren't changed so PhpStorm will index only files where models are changed somehow...
@adelf I wish I could, but the project is closed source. I'd be happy to beta test if that would help.
Edit: Sorry, I misread your comment. Yes I'd love to test it.
Great. Please, tell me your PhpStorm version, I'll try to build a plugin version for you on Monday.
I'm using the latest stable version for Windows. If you need the exact build, I can find it on Monday.
I mean PhpStorm's version. I have different plugin versions for different PhpStorms )
Ok. I think 2022.1. Thanks
https://laravel-idea.com/release/Laravel%20Idea-5.3.1.221_for_morten.zip You can download it, then PhpStorm Preferences > Plugins > Little wheel right from "Installed" > Install from file.
Eloquent Helper Code generation now creates separated files for different model namespaces. The first run will take a long time, as usual, but the next ones, if you change something only for 1 model should take much less time from PhpStorm to analyze changed files. Please share the results here.
Thanks @adelf I did mean the latest stable version of PhpStorm for Windows :) Which is 2022.1.1 by the way, but the plugin still works.
It is indeed faster than it used to be. Here's the contents of my vendor/_laravel_idea
before/after (also includes macro/facade and collection proxies):
I tried adding a local scope to a single model and run the command again, and it only changed these files:
.rw-r--r-- 596k morten 23 May 11:18 -I _ide_helper_models_ee561cdc569390bdb5533d66d059aa2d.php
.rw-r--r-- 1.9M morten 23 May 11:18 -I _ide_helper_model_builders_ad33b4e41f44782d58c9ce9e9f79c602.php
.rw-r--r-- 687k morten 23 May 11:18 -I _ide_helper_model_collection_proxies_ad33b4e41f44782d58c9ce9e9f79c602.php
But considering the sizes of the changed files, PhpStorm still had to reindex more than 3MB, which is approximately the same as before.
The project I'm working with isn't structured too well. There are 300+ models in the root App
namespace, and that includes the model I added a scope on. So if it's possible to split large namespaces into multiple chunks, that would help a lot.
I also added a scope to a model in a namespace with only 5 models. This resulted in a single changed file (33k), and PhpStorm picked up the change almost instantaneously. Very impressive!
Let me know if you want me to test other things. All in all, it's a huge improvement, but the result depends a lot on the size of the namespaces.
I thought namespaces are the best thing to separate models, but who can imagine 300+ models in 1 namespace :) Thank you for testing. Maybe I'll find something which will help you.
Yeah I know. I was young and ignorant and the feature requests just kept on coming. I'm in the process of refactoring it, but it's going to take a while.
Processing indicator
It would be really nice if we could have some kind of visual indication, that PhpStorm is processing the newly generated Helper Code. It's impressive how fast the plugin generates those files files, even with 500+ models. But then it might take 30-60 seconds for PhpStorm to process them, and some completion/navigation features are unavailable or degraded while this happens. Which is totally understandable. But usually we get some kind of visual indication that PhpStorm is busy doing something in the background. I don't know if the plugin has any way of knowing when PhpStorm is done processing the files, but if it does, it would be great if you could activate the status-bar spinner icon while it's happening.