3 ms·
I just had my worst PHP dev experience in 5 years of coding. Literally. I just had to leave the office. I'm on my way home and still feel fatigued. The project
by Darmody 5y ago
I just had my worst PHP dev experience in 5 years of coding. Literally. I just had to leave the office. I'm on my way home and still feel fatigued.
The project not only doesn't use composer (well, it does now because I needed some components) but it has the same third party components duplicated or triplicated around the application. It looks like they downloaded them Everytime they needed them. Some of them are modified to make them work on newer versions of PHP. And the views and the logic are mixed together in big 4k lines files with no functions. Html, js, PHP, tens of SQL queries on loops, all mixed together.
It's so bad it looks that it was made like this on purpose.
The funny thing is a pretty important project for a pretty important and unique customer.
- tored 5y agoClassic. Absolutely fabulous when this happens. Just want to nuke everything to oblivion. But there is hope, sometimes it can be better to inherit badly written repetitive & copy-pasted code, rather than badly written abstractions. Badly written abstractions can be really hard to get out of years later because it tends to be viral all over the project, however when there are no abstractions at all, you can decide them right now, you are in charge. Bit by bit you can unwind this mess to something grander, to your own creation. Good luck. Praying the PHP prayer for you.
- Darmody 5y agoThere's no unwinding. Boss says it should be done like this just to finish tasks quickly. For the last couple weeks I've been thinking I should look for a new jobs as it looks there's no future here.
- hparadiz 5y agoI've actually fixed this sort of situation at multiple different companies. Typically I end up getting buy in from management once I have started cause it saves money in the long run. You start by setting up the standard router for all URLs when the php file doesn't exist. You then setup your router to answer somefile.php or whatever file you want. You then have that route execute your own class. You simply delete the original file and it now loads from your router. You can typically copy/paste the code from the file into a function in a class without any modifications. As you go you can get rid of includes / requires all over the place because now you've got auto loader configured so you can just call code from other files at will. So then I just repeat this process. Sometimes it takes years but I can typically make a huge dent in most systems in the first few months. If I don't get buy in I do it anyway for any code I'm asked to work on cause it makes the work better and there's no reason not to do it at that point. I actually kind of envy you. I enjoy refactoring projects like that. You can typically bring that 4k line file you mentioned down to just a few classes and views.