La chose la plus importante pour un programmeur en PHP, à mon avis, autre que son expérience est sa boîte à outils. C'est-à-dire, un code qu'il/elle a écrit à l'intérieur et à l'extérieur, en arrière et en avant depuis des temps immémoriaux.
Pour moi, dans ce cas, l'avantage de la POO en clair. Avoir une classe que vous savez toujours préformer ce que vous voulez par des méthodes simples est beaucoup plus facile pour vous-même et les membres de l'équipe, alors il suffit d'appeler une multitude de fonctions statiques. Alors que vous pourriez soutenir qu'une bibliothèque de fonctions saticiques a le même but, à mon avis, les cours sont beaucoup plus faciles à lire et à comprendre. Par exemple, dans ma classe de session personnalisé un programmeur peut regarder mon code et voir,
$my_session = new session();
$my_session->start();
if (($session_errno = $my_session->error()) !== FALSE)
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
et de comprendre aisément que les sessions dans cette application sont gérées par notre classe de session personnalisée, et devrait renvoyer un certain type de succès/échec sans avoir jamais examiné la bibliothèque/classe.Pendant ce temps, un appel comme celui-ci,
session_start();
if (session_error())
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
ne dit pas clairement que session_start()
n'est pas un gestionnaire de session PHP par défaut, mais qu'il appellera les fonctions définies dans session_set_save_handler()
qui a été inclus dans une liste méga comprend mondiale cela pourrait ne pas être facile à trouver dans une grande application. Il n'est pas aussi clair que session_error() est une fonction qui renvoie une erreur définie par le gestionnaire de session personnalisé, par opposition à une fonction qui peut rechercher activement les problèmes de session sur une session déjà générée et est complètement indépendante de la session par défaut de PHP.
Ce n'est pas un bon exemple, mais je pense que c'est un bon exemple. Je ne suis pas allé dans les détails sur la bonté qui protège les données de l'application dans son ensemble, l'héritage et tout ce qui rend la POO utile.
Mais rapidement, imaginez une classe qui accède à la base de données MYSQL d'une application. On passe beaucoup de temps à concevoir la classe pour utiliser les instructions préparées, enregistrer les erreurs et fournir une logique appropriée au programmeur si nécessaire. Une équipe peut s'inquiéter moins des problèmes d'accès à la base de données en appelant simplement les fonctions publiques d'accès aux données de la classe sans trop se soucier des erreurs fatales, de la mauvaise logique ou du SQL dangereux (injections et autres). Cela peut être fait avec des fonctions statiques comme vous le suggérez, MAIS chaque fonction de cette bibliothèque statique est exposée à l'application dans son ensemble, alors que seules les fonctions publique et 'SAFE' sont exposées à l'application qui utilise une base de données objet d'accès. Le programmeur ne peut pas accidentellement appeler une fonction dangereuse qui, si elle n'est pas correctement initialisée par d'autres fonctions, pourrait causer des problèmes majeurs, et le programmeur ne peut délibérément supprimer les erreurs ou autres données protégées par la classe avec un grand nombre de fonctions statiques et de variables globales.
Bien qu'une bonne application puisse être conçue sans aucun objet, un bon programmeur devrait profiter de la facilité d'utilisation, de l'extensibilité et des protections que les objets offrent le cas échéant.
Je partirai avec ma métaphore finale. Les objets sont comme des machines et des outils spécialisés dans une usine. Alors que l'usine elle-même possède un certain nombre de ces outils uniques sur sa chaîne de montage, des simples freins de flexion aux machines CNC et robots automatisés, ils ne constituent qu'une petite partie de l'équipe qui existe pour aider les ouvriers et les directeurs. fonctions, faire le travail de construire une meilleure voiture, un camion ou un vélo.
Qu'est-ce que "fonctions aléatoires"? – Svisstack
** duplicata possible de [fonctions.php vs OOP] (http://stackoverflow.com/questions/2392795/functions-php-vs-oop) et [Quel est le but des classes] (http://stackoverflow.com/questions/1993638/classes-whats-the-point) ** - Récapitulatif: soit vous utilisez OOP ou vous ne faites pas. – Gordon
Je pensais qu'une classe "Utilities"/"Helpers" était standard dans la plupart des projets OO: P. – Matt