|
I have started one side project , and one startup this last 3 month, all in php/symfony, though I have made extensive use of python (and php) in the past (and do a lot of rust on the side) 1. A mature ecosystem: Symfony is really really mature, all use case of a classic website are covered: * easy "admin" generation -> check
* easy styling of your forms (a guy already made a 'tailwind' template, now I just do {{ form(my_form }}, and that's it
* easy integration with webpack for my usecase with tailwind
* pretty fast load to the point that the backoffice feels like a SPA (no flickering)
* word-class ORM (Doctrine is just the best ORM ever, they really got right the 'if you know SQL, you will not have to learn yet an other dialect, all our functions/method use the exact same naming as in SQL , take that django ORM)
* once again word-class ORM (Doctrine make it very easy to use all postgres-only, or mind you, mysql-only feature, DATE_TRUNC , json operators, full-text search operators etc. etc.)
* The documentation is not only encyclopedic , but also 'cookbook' (i.e you can either go A to Z, or they have dedicated article "how to have 2 database" , "How to implement a login through JSON" , which are much better and up to date than googling "how to X with framework Z"
2. PHP type system, sorry python but mypy just doesn't make it, I love my typechecking at runtime, how many times good willing developers in python have put `def myfunction(something: dict)` but it was actually not a dict, but a generator, and boom the next dev is mislead and introduce a bug3. easy as hell to find developers, developers that likes to get things done and that are pragmatic (They know, I know, we all know PHP have shortcomings, do we joke about it? yes. Does it prevent us from moving forward ? no) |
But from my anecdotal experience not many new developers invest the time to learn PHP. At the two universities I've been to, PHP is usually one and done thing. You take one course or just a few lessons with PHP in web development class and then move on to other things.