2010-11-22 7 views
1

Aller de .Net à PHP parce que je veux explorer les possibilités de la langue que j'ai du mal à trouver un moyen d'autogénérer un DAL. Dans .Net j'utiliserais juste studio visuel pour générer un datamodel, mais comment puis-je faire cela avec PHP et MySQL, donc je n'aurai pas à taper manuellement dans toutes les classes? Mon IDE PHP actuel est Aptana.Générateur DAL pour php

Répondre

1

Si vous voulez vraiment sauter dans l'idée derrière PHP, et pas seulement écrire .net code de style en PHP, vous devez déplacer loin des objets-tout sur les méthodes de .net.

Comme vous l'avez remarqué, la génération automatique d'objets n'est pas courante en PHP. Ce qui signifie que la solution au problème ne devrait pas reposer sur cela. Essayez de créer des objets plus génériques et de tirer parti de l'héritage pour éviter le gonflement des objets. Et plus encore, essayez de vous fier moins aux objets de transfert de données et plus encore à la création d'objets objets-outils complets.

Vous trouverez PHP d'être beaucoup plus d'une joie de travailler avec si vous échapper des signes extérieurs de .net. Pour mettre cela en perspective, je ne pense pas que dans les 5 années où j'ai travaillé professionnellement en PHP, sur des projets de grande envergure comme army.mil, ai-je jamais ressenti le besoin de créer un DAL complet? pour faire le travail.

Le plus grand projet que j'ai travaillé sur tout a un système de classes de modèles chacun qui portent une liste des méthodes qui Pöll la base de données pour les données brutes et passent ensuite ces données dans les objets finaux. (Dans ce cas, les articles qui composent les articles sur army.mil)

Il est tout simplement pas besoin d'une autre couche entre le modèle et les données en PHP. Cela signifie presque toujours plus de travail pour aucun gain.

Il existe plusieurs raisons pour lesquelles ils ont un sens dans .net. Pas le moindre d'entre eux étant qu'ils peuvent être générés automatiquement trivialement et donc il n'y a presque pas de coût en temps pour les avoir. Ceci étant dit, lorsqu'il est encapsulé dans les limites d'un cadre, le DAL commence à redevenir logique. Si votre projet est basique, je proposerais un framework comme CodeIgniter. CI contient un très bon système d'abstraction de base de données. Il renonce à SQL en faveur de méthodes qui se transforment en la base de données particulière que vous avez définie dans le besoin de configuration. Cela sert le même but qu'un DAL. Vous créez toujours la requête dans le modèle et vous devez toujours connaître la structure de votre base de données. Mais malgré ce que vous voulez croire, ce sont toujours des soucis pour les DAL .net de toute façon.

Cependant, pour vraiment ce que PHP est tout au sujet, vous avez besoin de perdre les signes extérieurs d'un cadre et de travailler librement. PHP est un langage de hacker. Il permet le piratage. (comme dans la programmation du siège-de-votre-pantalon, pas craquer, ok, les deux ..) Et c'est vraiment ce que vous devez faire pour comprendre ce que le problème est.

Est-ce une épée à double tranchant? Totalement. Mais jouer rapidement avec le code est l'endroit où PHP se met en place. Il y a une raison pour laquelle c'est le langage goto pour les startups rapides up-over-night.

Désolé pour la réponse longue et techniquement hors-sujet. J'espère que tu peux me pardonner. Vous avez dit que vous avez commencé à utiliser PHP pour en comprendre les possibilités. Si vous continuez de cette façon, vous déciderez qu'il est faible, inexact, maladroit et sujet aux erreurs; et vous manquerez toute la grandeur qu'il offre dans sa flexibilité, son extensibilité, sa capacité de piratage et son esprit. Je ne veux pas que vous manquiez le point de la langue.

+0

merci pour cela - j'apprécie vraiment les messages comme ça. La raison pour laquelle je demande à DAL est parce que je crée un service REST en PHP, et je voulais aller avec ce que je pensais être la meilleure pratique, pour éviter les injections sql et d'autres problèmes de sécurité que je peux créer, évidemment influencé par ma pensée .net - J'aimerais que vous commentiez sur mon projet, peut-être que je devrais créer un fil séparé pour cela. – Jakob

+0

Peut-être utile. Mais si ce qui vous inquiète est la sécurité, essayez d'utiliser l'interface mysqli en PHP et assurez-vous de lier les paramètres et de faire preuve de diligence raisonnable en vous assurant que les données sont correctes. Vous n'aurez pas besoin d'exécuter des ficelles de chaîne basées sur mysql, car le faire avec la liaison de paramètres de mysqli peut entraîner des vecteurs d'attaque à échappement double. – DampeS8N

+0

Autres .net à PHP gotchas de sécurité: les variables faiblement typées peuvent conduire à un comportement étrange de changement de type. Essayez de donner des astuces de type dans les méthodes/fonctions et/ou de transformer les choses en chaînes et de les analyser de façon très stricte (ressources coûteuses, mais le plus sûr des moyens pour assurer l'intégrité) - N'oubliez pas d'exécuter htmlentities() toutes les données de l'utilisateur ou de la base de données que vous êtes sur le point d'afficher dans le navigateur. Cela empêche XSS. – DampeS8N

3

Vous pouvez utiliser un ORM comme Doctrine ou Propel.

Elles permettent la génération automatique de classes à partir du schéma, et vice versa.

Si vous avez besoin d'écrire votre propre couche d'accès, je recommanderais d'utiliser PHP Data Objects (PDO) car il fournit une interface OO agréable, et l'abstraction du moteur DB.

2

Normalement, je n'écrirais pas une réponse, puisque vous en avez déjà 2, mais je voudrais vous donner quelques idées de moi-même, en donnant le fait que je suis un développeur .NET et PHP et essayer de prendre avantage de à la fois:

  • Si vous êtes à la recherche pour la génération de code puissant que Visual studio, alors ne cherchez pas plus parce que dans PHP, je ne l'ai pas encore trouvé et que je cherchais depuis des années. Visual Studio est juste "énorme"

  • Pour moi, il n'existe pas de style de code .NET. Je crois que la plupart des frameworks/applications PHP sacrifient beaucoup à la "simplicité" et je pense que ce n'est pas juste. Code devrait être extensible, maintenable et évolutive dans tout cadre/application BUID

  • Propel et Doctrine sont en circulation pour la cartographie des données (ORM), tout comme NHibernate ou Entity Framework en PHP, mais remeber que vous aurez besoin d'une des données Access Layer et Business Access Layer pour qu'une application entièrement développée soit évolutive. Gardez à l'esprit que PHP supporte OO un peu comme .NET, mais diffère dans quelques choses, mais les conceptions bien développées sont destinées à N'IMPORTE QUEL langage.

Je pense que ma réponse est allé un peu loin de la question initiale, mais j'aimais bien vous donner une plus grande réponse, car comme vous l'avez dit, vous vouliez:

... explorer les possibilités de la langue ...

Et vous avez besoin de beaucoup d'opinions pour former le vôtre. Bonne chance à vous endevours et j'espère que ma réponse ne vous a pas tué de l'ennui! :)

PS: Si vous voulez plus de choses sur BLL et DAL en utilisant PHP, consultez this article J'ai écrit dans mon blog.

+0

J'apprécie beaucoup votre contribution - bel article, j'espère que vous allez écrire plus de blogposts. – Jakob

+0

Merci d'avoir pris le temps de le lire. Im un peu bussy maintenant avec l'écriture d'un livre sur le développement web sur PHP, mais j'ai déjà quelques brouillons. Meilleures salutations –