Je suis un peu dans le cas de rufo, single dev d'une appli php/mysql construite il y a fort longtemps, et je suis toujours surpris de la facilité avec laquelle ça passe le test du temps. Passée en PHP 8.3 cette semaine justement, et c'est une librairie associée qui a couiné, sinon zéro souci.
PHP 8.2 c'était un peu plus galère avec pas mal de fonctions qui n'acceptent plus les valeurs nulles en entrée, mais pas trop compliqué à gérer une fois que tu as compris le problème.
Et côté code, j'ai du procédural et de l'objet, un pseudo MVC maison, des objets juste pour les trucs vraiment réutilisés partout / procédural pour ce qui ne servira de toute évidence qu'à un seul endroit.
Surtout j'évite autant que possible les trucs tordus de code sur-optimisé ou trop conceptuels : le délire des objets "véhicule" avec ensuite la classe "voiture" dont la méthode get_roues() surcharge celle de véhicule je trouve ça joli dans les bouquins, mais souvent en pratique c'est aussi le bon moyen de se paumer et s'arracher les cheveux pendant des heures quand tu débugges et que tu ne cherches pas au bon endroit.
En terme de ressources justement, quand tu as une case avec une variable GET et que tu n’exécutes que la partie qui va bien (tests, update bdd, select qui va bien...) c'est juste ultra efficace. A l'opposé quand le moindre appel à la moindre page te charge la moitié de ta bdd en ram via l'appel à 500 fichiers imbriqués (ok j’exagère, mais c'est un peu l'impression que Wordpress me laisse par exemple) forcément c'est plus la même chose. Sur un serveur type kimsufi premier prix, tu peux faire tourner plein de trucs en PHP... mais un site Wordpress est totalement à la ramasse pour le moindre affichage de page qui n'est pas en cache.
A côté de ça j'ai dev une app mobile pour Android, vu que je suis une bille sur le sujet j'étais passé par un truc permettant la cross compatibilité ios/Android + coder principalement en JS... ben ça a été une merde sans nom à maintenir, et désormais c'est tombé en désuétude.
J'ai tout refait dans un autre langage équivalent (react-native) car c'est vraiment une app riquiqui, et quel bordel, pour faire la moindre chose tu es "obligé" d'importer des composants tiers, genre pour faire un bouton, un side-panel, ... tout dépend très vite de trucs extérieurs. J'imagine qu'on pourrait tout faire soi-même, mais comme évoqué plus haut, on évite en général de réinventer la roue s'il y a quelqu'un qui a déjà fait ça très bien, qui est probablement nettement plus compétent que moi et qui a fait face à la majorité des bugs et problèmes.
Bref, au bout de 6 mois ça ne compilait plus à cause de dépendances, de librairies abandonnées, de trucs remplacés, ... j'en ai chié... pour une app de 3 écrans / 2 boutons.
Donc pour revenir au développement web, j'ai tendance à limiter moi aussi autant que possible l'utilisation de frameworks et librairies tierces... mais pour les trucs vraiment relous (mails, gestion de calendriers avec évènements récursifs, génération de pdf...) difficile de faire sans.
Mais même en prenant les libs les plus populaires du moment, ça arrive quand même régulièrement que le projet soit abandonné.
J'utilisais WAmailer à une époque, et de souvenir ça a merdé et j'ai du passer sur PHPMailer, je crois que c'était justement l'absence de suivi suite à une mise à jour majeure de PHP.
Il y a aussi le moteur de template smarty, avec lequel j'ai commencé directement (en 2004 ou 2005 je crois ?) parce que c'était la base pour séparer code de présentation, ça ne s'est pas toujours bien passé, mais c'est difficile de faire autrement désormais sans tout recoder l'appli. Étrangement après une période difficile (versions de PHP encore, probablement le passage à PHP 7) ça a l'air totalement ok aujourd'hui, et les versions actuelles passent sans souci en PHP 8.3 sans avoir à tout recoder... même si cette couche est totalement dispensable et qu'avec le recul j'aurai dû faire sans.
En fait le pire c'est pas forcément la lib dont le suivi s'est arrêté mais plutôt les nouvelles versions non rétrocompatibles. Genre le dev à totalement revu la manière d'intéragir avec sa lib, et là c'est très chiant. Genre tu as besoin de la nouvelle version sinon tu as whatmille erreurs dans ton nouveau PHP X.Y, mais si tu mets la nouvelle version de la lib il n'y a plus rien qui fonctionne et il faut tout refaire l’interaction avec elle.
Bordel, j'ai encore fait un pavé, désolé
Message édité par depart le 24-10-2024 à 16:49:00