65 votes

Pas de PHP pour les grands projets? Pourquoi pas?

J'ai lu quelques posts où les gens ont dit (non suggéré, n'est pas discuté, n'est pas offert) que PHP ne doit pas être utilisé pour les grands projets.

Étant principalement un développeur PHP, je pose deux questions:

  1. Ce qui définit un "grand projet"?
  2. Pourquoi pas? Quels sont les pièges de l'utilisation de PHP

Je dirige une petite équipe de développement, et je sais par expérience que la qualité de la construction, de l'organisation, de documentation, de commentaires et d'encapsulation sont notre plus grande priorité. Nous sommes en mesure de développer de grands projets à l'aide de notre propre cadre de référence et l'approche, mais encore, je ne veux pas investir davantage si je perds mon temps.

Pensées?

96voto

nickf Points 185423

Vraiment, je déteste quand les gens disent plat que PHP est un terrible langue, parce que vous pouvez écrire du code qui mêle présentation avec la logique, ou qu'il vous permet de vous permettre d'injection SQL. Cela n'a rien à voir avec la langue, c'est le développeur.

PHP s'est avérée être très évolutive: Wikipédia est l'un des plus grand et le plus populaire des sites sur Internet et elle s'exécute PHP. Assez dit?

Il y a beaucoup d'outils/bibliothèques que vous donner un cadre de travail, en rendant moins probable que quelqu'un va écrire pauvres, moins maintenable code: voir CakePHP, Symfony, AOP, Smarty, etc etc etc.

Il a reçu une mauvaise réputation parce que c'est un langage qui a très peu de barrières à l'entrée: c'est gratuit, vous pouvez obtenir de très bon marché, hébergement PHP, la documentation est le meilleur il est, il y a beaucoup de tutoriels en ligne, en plus il fait beaucoup de choses très facile (par exemple: ouvrir une URL et obtenir le contenu du fichier: file('). Cela signifie que beaucoup de débutants ont ramassé et fait beaucoup de choses très louches sites avec elle, mais qui va se passer avec la langue que vous choisissez comme votre premier.

Travailler avec un solide ORM (il y a environ 30 questions sur DONC sur ce qui est le mieux), et il va vous traiter bon.

32voto

jskulski Points 1372

Beaucoup de gens qui disent ne pas l'utiliser sont vraiment dit de ne pas utiliser de PHP 4. Il revient à ceci

vous pouvez écrire du bon code dans n'importe quelle langue

et

vous pouvez écrire du mauvais code dans n'importe quelle langue

PHP peut très souvent prête à s'emmêler spaghetti bibliothèques de code et de faire votre demande vraiment juste une série de scripts (voir Moodle pour un bon exemple de cela...)

Je pense que beaucoup de "Ne pas utiliser le PHP pour les grandes choses" est à venir à partir de PHP d'être piraté à partir de son but initial: un langage de templating. Ce que je peux comprendre, mais il y a beaucoup de projets qui prouvent que vous pouvez faire (Drupal, mediawiki, facebook).

mise à jour: apparemment, facebook n'est pas de php ou n'est pas suffisamment complexe ou quelque chose ;) Donc permet de remplacer flickr ou digg ou quoi que ce soit.

18voto

cletus Points 276888

Theres aucune raison que vous ne pouvez pas utiliser le PHP pour les grands projets. Après tout, Facebook est construit sur PHP. Il y aura des problèmes, cependant, mais il y a des problèmes avec tout grand projet.

Ce qui fait de PHP est si répandue de la faible barrière à l'entrée et à bas prix d'hébergement. Il fonctionne comme une extension d'Apache et vous pouvez très bien juste commencer à coder. Si vous accédez à plus d'entreprise plates-formes telles que .Net ou Java, ils ont beaucoup plus de barrière à l'entrée, mais ils viennent aussi avec beaucoup d'infrastructures pour vous aider à faire des applications que l'échelle.

Par exemple, l'abstraction de base de données en PHP est (à mon humble avis) lamentable. C'est spécifique au fournisseur. Avec MySQL, les gens ont tendance à faire des choses comme:

function get_users($surname) {
  mysql_query("select * from users where surname = '$surname'");
  ...
}

ce qui est mauvais pour plusieurs raisons:

  • Il fait d'une mauvaise utilisation du cache de requêtes;
  • Il ne gère pas s'échapper de caractères (qui, bien sûr, peut être fait avec mysql_escape_string() mais vous serez surpris de voir combien souvent, les gens ne font pas cela); et
  • Il est assez facile de code de façon à permettre des attaques par injection SQL.

Personnellement, je préfère mysqli pour toutes les raisons ci-dessus, mais il a ses propres problèmes: à savoir que l'utilisation de champs LONGTEXT accidents de mysql et l'a fait depuis au moins 2005, avec toujours pas de fix (oui je l'ai et plusieurs autres ont soulevé un bug).

Comparez cela à Java (avec lequel je suis plus familier) et JPA ou Ibatis sont infiniment mieux ORM solutions avec la hausse des coûts de démarrage, mais ils vont vous aider au niveau d'une entreprise.

Si vous n'êtes pas interdit de faire de grands projets sur PHP. Il est simplement plus difficile que vous avez à faire de plus en plus le travail vous-même à reproduire ce que les autres plateformes de vous offrir.

Cela étant dit, PHP + memcached/TTB + beanstalkd va un long chemin.

Oh que c'est l'autre problème: PHP n'est pas vraiment de fond de soutien de traitement ou d'enfiler. Vous avez besoin d'autre chose pour que la (ou des scripts autonomes). Si vous utilisez autre chose, pourquoi ne pas l'utiliser pour le Web des trucs aussi (par exemple, Java, Ruby, .Net, etc)?

4voto

frankodwyer Points 9422

Pour moi la pire PHP péché, c'est le couplage de présentation avec une logique d'entreprise. Ce n'est pas que vous ne pouvez pas écrire dans une meilleure façon, mais il n'encourage pas de vous, et si quelque chose, il vous encourage à ne.

Un grand nombre de failles de sécurité sont associés avec PHP les sites, trop. Je ne peux pas le prouver, c'est disproportionnée (après tout, beaucoup de sites sont écrites en PHP), mais je soupçonne que c'est. Si je suis à droite, ensuite, puisque les failles de sécurité sont une classe de bug, je soupçonne PHP les sites ont tendance à être plus buggé sur l'ensemble de la également.

(Je ne pense pas que pointer à quelques grands sites, et en disant qu'ils ont réussi à le faire en PHP est un argument contre cette, par la manière. C'est un peu comme dire que la cigarette ne cause pas le cancer, car votre voisin d'à côté fumé et a vécu jusqu'à 100 ans.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X