Adam Lipschultz


Retour dans la journée, un site Web a été contenu plus ou moins statique. Les sites dynamiques utilisent les langages de script tels que Perl ou C (la plus populaire) pour exécuter des scripts CGI, mais ce ne était pas jusqu'à ce que les fin des années 90 pour la plupart.

HTML essayait toujours de comprendre comment correctement marqué. Il y avait encore aucune norme. Ce était fondamentalement un grand forum de discussion sur le débat ordinateur ballot sur la meilleure façon de mettre en œuvre une étiquette. Ce est différent d'un langage de programmation dans lequel un individu, groupe d'individus, ou d'une société va créer quelque chose qui est interprété et compilé. Parfois, ces langues seront recourir à des interprètes qui sont les langages de programmation eux-mêmes. Certains aspects de rubis, par exemple, sont réparties en C.




C est un langage incroyablement rapide. Offre quelque chose appelé pointeurs qui permettent à un programmeur de se référer à des variables de l'emplacement de la mémoire - qui est une affaire énorme. Ce est un chaos absolu à la fois. Lorsque vous ne faites pas la vérification des erreurs, vous serez frappé choses appelées mémoire indésirable (ou pas, vous ne pouvez vraiment pas dire que son C), mais le programme ne explose.

En raison de sa vitesse, et les dérivés C mineurs sur la base de C sont utilisées, et continuent d'être utilisées toujours. Les jeux vidéo high-tech sont généralement développés en C et binded avec une bibliothèque appelée OpenGL par exemple. Le développement iPhone en utilisant Objective-C, ce qui est impressionnant, car elle oblige les développeurs à optimiser leur code. Si vous ne voulez pas un tas d'applications se exécutant sur votre iPhone vous prenez un peu de ressources. Et Apple ne permet même pas mal construites applications dans l'App Store.

Bien. Quel a à voir avec le développement d'applications web? Beaucoup. L'environnement Web est maintenant tout aussi important que le génie logiciel, et les développeurs ont besoin d'outils pour accélérer le temps de développement. En tant que programmeur, je ne peux pas souligner l'importance de taper le code ne est pas nécessaire. Cela se appelle boilerplating. Je suppose a atleast connaissance minimale d'une page html. Ceci est un exemple d'un passe-partout. Ce est un lien vers la page un peu cool!

Ce est un lien hypertexte avec le dicton de texte: «Ce est un lien." Pourquoi diable devrais-je saisir tout cela? En outre, qu'arriverait-il si je ai changé le lien vers somecoolpage? Qu'advient-il si mon domaine ne fallut pas longtemps www.example.com? Or la somecoolpage devenu notsocoolpage. Je dois trouver le code et le modifier. Cela prend du temps. Surtout dans un grand projet. Et si ce lien est partout?

Heureusement, je ne ai pas à me inquiéter. En fait, je ne savais même pas HTML.

[Ce est part1 dans une série. Pour lire la Partie 2, cliquez ici]

Roots,

La partie la plus importante de votre site

Tout d'abord, permet de parler de la structure de l'URL d'un site Web. Ce est le domaine le plus important. Une URL est ce que les visiteurs voient quand ils visitent votre site Web.

Maintenant un simple site Web ou un site Web qui utilise PHP brute (sans quelques modrewrites lourds), est essentiellement vont voir la structure de répertoire. Comme le système de fichiers. Tout comme la façon que vous avez à c: \ WINDOWS ou C: \ myuser \ documents \ fichiers .... est ce que vous verrez. Si vous avez un fichier dans un répertoire qui raconte index.html, ce est ce qu'ils vont voir. si vous avez un sous-répertoire que voir ce qui s'y passe. Etc.

Ce est extrêmement pas à jour. Nous traitons maintenant à travers une méthode appelée «routage». Nous définissons un fichier de configuration qui répertorie l'URL et où ils doivent aller. Donc nous pouvons dire que la configuration (avant), "/", il devrait être indexé. es

(Web.py)

URL = (

'/', 'Index'

)

ou

définir une URL de base appelé root qui dit

(Rails)

root: au => "la maison # index"

Maintenant que faisons-nous avec somecoolpage?

Nous définissons un autre chemin. Je vais me en tenir sur les rails ou la terminologie, je aurai toute la place.

Il ya beaucoup de façons que nous pouvons le faire.

Disons simplement somecoolpage est simple, et ne veut pas se inquiéter des choses comme des options, et des sous-ressources.

Eh bien, d'abord, nous devons comprendre comment l'enfer pour gérer cette page.

Contrôleurs

Je ai dit qu'il ya une racine à la "/" répertoire nommé # indice bienvenus.

Si ce est allé dessus de votre tête, je vais commencer ici.

Nous voulons que les choses soient simples. Puis le fichier de configuration est dit la requête que, lorsque l'URL est "/" (ou de l'indice, ou même de bienvenue) devraient être gérés par une classe de «contrôleur» avec une méthode appelée "index". Si vous êtes familier avec la programmation orientée objet moins orienté, un contrôleur ne est pas aussi sophistiqué.

Vous avez probablement entendu l'introduction des exemples de programmation de base orientées objet de (par exemple psuedocode Java)

classe Animal

{

public static void (principales (String args [])

{System.out.println ("Je suis un animal, et je veux sortir."); }

}

Chien de classe étend animaux

{

Cortex civile (String dogLanguage)

{System.out.println (doglanguage);

}

}

public class myHome {

principales (args String []) {public static void

Cocoa animale = new Chien ();

cocoa.bark («Je sais que tu as la maison du travail, mais je ai besoin d'une promenade!");

}

}

Ce est l'intro de base type Java CSE101 chose. L'idée est que myHome crée un objet appelé Chien, qui est d'un type appelé animale, qui est un autre sujet. Ne fait rien "logique", il vous suffit d'imprimer cette.

«Je suis un animal et je veux sortir."

"Je sais que vous venez de recevoir la maison du travail, mais je ai besoin de marcher!"

Ainsi, lorsque cette méthode est appelée "chien", qui définit une méthode appelée «constructeur» des animaux; puis exécute la méthode appelée «puces». Ce est pourquoi vous voyez deux lignes en cours d'impression, même si aucune classe "Animal" a été créé. Chaque chien est genre d'animal, et le constructeur par défaut est appelé à chaque fois.

Cet exemple est un peu ennuyeux parce que Java utilise aussi beaucoup de boilerplating (code inutile et répétitif), et son souhait d'être une langue qui est facile à lire.

Bien. Retour au contrôleur. Ce que nous faisons beaucoup dans le développement web maintenant, ce est d'utiliser un modèle appelé Modèle, Vue, Contrôleur. Framework Django Python appelle ce modèle vue du modèle, mais son essence, la même chose. Rails a utilisé ce pour un temps tout à fait de tout ». NET a récemment adapté ce modèle. D'autres développeurs PHP commencent à utiliser les structures construites sur ce modèle de modèle. Et Apple utilise pour développer iOS ainsi. Il ya des raisons pourquoi ce modèle de conception est une norme de l'industrie, on l'espère, vous pouvez comprendre le temps que je termine d'écrire cette

Le contrôleur

Donc, je ne ai pas encore eu l'occasion de l'hôte du contrôleur mentionné précédemment. Eh bien d'abord je voulais expliquer comment il fonctionne avant tout ce qu'il fait. Tout comme le chien se étend un animal, nous définissons d'abord un contrôleur de base de classe.

Il ya beaucoup de façons de gérer cela. En substance, ce que nous voulons que notre framework MVC faire? Nous voulons que les modèles pour gérer les contrôleurs, et le point de vue? Habituellement pas. Habituellement, nous voulons que ce que l'on appelle un "contrôleur maigre» et un «modèle de graisse." Nous voulons que le modèle pour gérer tous les "logique métier". Ce sont des éléments du programme que CRUD (créer, modifier, et supprimer des enregistrements de la base de données) par exemple. Nous voulons que les inspecteurs de se concentrer sur le «flux» de l'ensemble du programme. O désolé, site web.

Donc, dans un contrôleur de défaut, nous pourrions faire quelque chose comme ceci:

(Php, parce régulateur actif de Ruby est un peu complexe »)

classe Controller

fonction __construct () {

$ This-> view = nouvelle View ();

}

LoadModel civile ($ MODELNAME) {

$ PATH = "templates/_model.php ')' $ ModelName.. ';

if (file_exists ($ path)) {

exiger $ path;

ModelName $ = $ nom. '_model';

$ This-> model = new $ MODELNAME ();

}

}

}

ce est le code de pseudo (ou presque), mais d'abord, chaque fois qu'un contrôleur est créée, nous allons créer un nouveau point de vue. La vue sera la configuration actuelle de la page. Nous avons également défini une méthode qui va charger un modèle. Lorsque cette méthode est appelée, le procédé suppose l'existence d'un soi-disant modèles de film, et que le modèle a "_model.php" étendu à elle.

Donc, si nous avons un contrôleur appelé "Bienvenue", et nous voulons charger un modèle appelé «données» vous aurez l'air d'un fichier dans le modèles base_url/data_model.php. Si le fichier existe, si vous effectuez cette action:

$ This-> model = nouvelle datamodel ();

Ce est un exemple d'un contrôleur par défaut (comme l'animal), quelque chose que le fabricant avec une charge que nous allons afficher le sexe, et aussi une méthode que nous allons vouloir utiliser avec chaque contrôleur. Ce est un exemple très simple. Nous ne pouvons pas vouloir quelque chose comme la création d'une nouvelle vue dans le constructeur. Nous pourrions administrateurs de dépendent une constante dans notre fichier de configuration. Nous pouvons également définir une base_url directement et de charger directement de cette façon. Puis vous vous retrouvez avec quelque chose comme ceci:

define ('BASE_URL »,« http://www.example.com');

define ('MODEL_PATH »,« modèles »);

$ PATH = $ BASE_URL. MODEL_PATH $. '/'. ModelName $. '/'. '_model.php';

L'idée est de faire quelque chose que nous sommes à l'aise avec afin que nous puissions créer un nouveau projet et obtenir un programme facilement, je veux dire site opérationnel le plus rapidement possible. Nous avons la même propriété. Et que vous devenez plus familier avec la façon dont il fonctionne, nous ne devons pas répéter le code. Nous pouvons définir plusieurs méthodes pour les domaines que nous répétons. Ce est un principe que tous les programmeurs doivent utiliser dans ne importe quel contexte. Je encourage également tous d'essayer vim pour un couple de semaines. Vous pouvez vous trouvez penser à comment "ce est frustrant, je pourrais écrire ce code sublimetext incroyablement plus vite, ou Notepad ++", mais Vim est un éditeur de texte incroyablement puissant conçu pour être adapté à vous.

Bon, de retour au contrôleur. Nous espérons avoir une idée de base de ce qui se passe. Nous avons d'abord défini comme notre site est acheminé. Nous avons créé un fichier de configuration que je ne peux pas expliquer entièrement.

En écrivant cela, je pense que ce est fait un peu plus complexe que ce que je voulais, mais ce ne est toujours pas si compliqué que ça. Tout ce que nous faisons dans l'essence est d'avoir un contrôleur de base pour l'ensemble du site. Quand nous construisons des logiciels, de sorte que nous concevons une méthode de construction sera appelé dans une classe et effectuer des actions à partir de là. Ce qui se passe peut dépendre de saisie de l'utilisateur, ou il peut simplement effectuer une variété de procédures.

Habituellement, cela se appelle quelque chose comme __init__.

. Dans iOS ont un NSApplication avec une méthode appelée applicationDidFinishLaunching (quelque chose comme ceci dit cacao - cadre pour les applications Apple - a fait son travail dans la compilation du programme correctement.

Java utilise principale static void (). C ++ utilise int main (void) avec divers sujets. Comment int main (int argc, char ** argv, char ** envp). Rails utilise une commande appelée Application: initialiser!

Maintenant PHP - comme une page web statique - va simplement afficher la structure du fichier ainsi. Si l'utilisateur passe à www.example.com/path/to/directory, page apparaît www.example.com/path/to/directory/index.php. Désolé, je déteste prendre à PHP. Tout cela dépend de Apache, mais ce est généralement la façon dont les choses sont configurés. Je dois aussi souligner que Rails et Python seront déployées sur un serveur. Et Apache devra être configuré pour être le manipuler.

Mais vous pouvez aussi faire la même chose avec php. Nous avons juste à configurer PHP afin de fonctionner comme une application. Alors avant que je ne peux vraiment parler au contrôleur, je dois parler de la façon de le faire. Rails (cadre Ruby qui utilise le modèle MVC) et Python (avec de nombreuses peintures, par exemple en utilisant Django le modèle MVC) disent le serveur Web pour les faire fonctionner comme une application, tout comme logiciel. Rails - par exemple - comprend une ligne de code avant Application.Initialize:. «Demande File.expand_path ('../ application', __FILE__) Cela indique Rails de demander le fichier application.rb qui - à son tour - - nécessite les fichiers de base pour la configuration et de l'environnement de démarrage.

Ce est exactement comme avec son C #include. (Sorte de C ... mais est en train de dire au compilateur de précompiler le fichier). Ruby ne est pas précompilés. Rails nécessite certaines parties doivent être précompilés avant de déployer bien. Mais ce sont des domaines qui ne sont pas indigènes Rails qui CoffeeScript et SASS. La seule fois que vous avez à vous soucier de précompilation avec Rails est en mode de production et de distribution. Vous devez compilation pour des logiciels à chaque fois pendant le débogage .... même si vous êtes juste l'ajout d'une méthode simple. .NET Exige également la compilation et (pour le débogage), car il utilise juste-à-temps (JIT) pour améliorer légèrement les performances.

La façon php

Passons je parle d'autre chose

Bon, de retour à php. PHP est l'un des premiers langages de script utilisés pour les pages web "dynamiques". Ou, en d'autres termes, son été autour pendant un certain temps. Développement de logiciels, développement web et des modèles de conception ont évolué de manière significative depuis sa conception initiale.

Attendez, laissez-moi corriger certaines choses:

Rubino: interprété (mais il peut être juste à temps rempli avec quelques photos)

Rails: qu'elles sont interprétées

.NET: JIT Compilé

PHP: Interprété

Java (JSP): peut être précompilée ou compilé la première fois que la page est accessible.

Python: ça dépend! peut être compilé ou interprété. mais généralement comblé par une certaine forme de bytecode. Il ya aussi des gestionnaires avec Apache et Python (mod_python). Vous pouvez utiliser Python avec Java.

Perl: Interprété.

C/C ++: Compilé

Rappelez-vous comment je l'ai dit plus tôt que C/C ++ est extrêmement rapide? Ce est une des raisons qui restent toujours d'actualité. (Eh bien C ++ moreso, C est un gâchis). Apache peut également être configuré pour gérer Perl et C/C ++ en utilisant CGI ou fast_cgi. Perl est moins pertinente aujourd'hui qu'elle l'était il ya 10 ans, mais est parmi le meilleur langage pour la gestion de texte de manutention, et les données. Facebook a réécrit une quantité importante de son code en C ++ pour la vitesse et a développé un cadre unique se compose de PHP et C ++.

Pour le dire simplement, lorsque les applications deviennent plus grands, rien de comparable à C ou C ++.

Ce est pourquoi je me sentais comme élever comment ces langages de programmation sont exécutés sur le côté serveur. La vitesse est particulièrement important maintenant que les applications sont de plus en plus grande, plus purgent contenu. Il est également essentiel d'expliquer les appareils mobiles qui ne vont pas être en mesure inefficace poignée Code de la même façon un désir de CPU haute performance.

(La phrase suivante va me tuer à dire, et je vais passer deux autres phrases justifient). Twitter, par exemple, a été construit avec Rails, mais beaucoup de ses éléments clés sont réécrites. Chaque langue a ses avantages et ses inconvénients. Twitter a choisi un framework Java appelé Scala. Ce est idéal pour la gestion de la messagerie en temps réel pour l'entreprise. Et tandis que Scala/Java est particulièrement adapté pour Twitter aujourd'hui, serait une forme terrible au début. Rails échelles aussi beaucoup mieux maintenant.

Ok, la façon dont PHP

Désolé si je ai confondu le diable hors de vous.

Toutefois .....

sauvegarder à la programmation. Donc, fondamentalement, nous avons beaucoup de modèles tels que Ruby on Rails, Django, ASP.NET, Java (lots), qui sont conçus pour fonctionner avec un serveur particulier web configuré pour cette enviornment.

Mais PHP est intégré. Une des raisons pour lesquelles il est si populaire. Il suffit de télécharger sur le serveur et vous êtes bon pour aller. Les changements ne ont pas besoin de recompiler le code. Ce est une option intéressante. Mais nous voulons toujours ce afin de fonctionner comme une application. Non pas comme une structure de fichier.

Eh bien, ce est assez facile. Tout comme dans un logiciel avec son principal () méthodes __init__ ou, ce est juste suivi le serveur puisse toujours aller à une certaine page php lorsque le site est accessible. Parce que, après tout, PHP est un langage de script tels que Perl ou Ruby. Il ne devrait pas être un gâchis.

La première chose est que nous voulons dire au serveur de index.php toujours ne importe quoi.

Nous faisons cela dans le fichier .htaccess et certaines conditions réécrire simple.

D'abord définir le RewriteEngin Sur.

Puis mettre en place une règle de réécriture à:

RewriteRule ^ (. +) $ Index.php? Url = $ 1 [QSA, L]

l'$ ^ (. +) signifie quelque chose et dit à rediriger index.php. Cependant, nous voulons transmettre une chaîne de requête, puis passe la chaîne de requête pour les liens symboliques.

Nous ajoutons également

RewriteCond% {} REQUEST_FILENAME! -d

RewriteCond% {} REQUEST_FILENAME! -f

RewriteCond% {} REQUEST_FILENAME! -l

qui raconte le serveur de ne pas vraiment que si le fichier ne est pas un répertoire physique ou un fichier. Chaque page à ce point devrait aller à la page d'index, pour tout le temps.

Nous avons besoin de l'URL, pour passer les contrôleurs et les méthodes. Donc, si nous sommes à www.example.com/coolpage Vous irez à coolpage contrôleur ..

Donc, la racine, le index.php devra obtenir notre première url qui est un échantillon

$ Url = explode ('/', $ _GET ['url']);

Il ya beaucoup de façons de gérer cela. Je veux faire ce simple, donc si il ya un sous-répertoire, je ne ai pas un "/".

Puis son simple que de faire

$ File = 'contrôleurs /'. Url $ [0]. '.php';

if (file_exists ($ file)) {

exiger fichier $

} Else

{Echo ('error');

}

nouveau. Je suppose qu'il se agit d'un contrôle de répertoire. l'url de $ [0] recherche pour le premier paramètre à l'URL. Url $ [1] recherche pour la seconde.

donc si nous voulons exercer une fonction dans le contrôleur, nous faisons juste

Contrôleur $ = new $ url [0] // nous devons initialiser le contrôleur

if (isset ($ url [1])) {

if (method_exists (contrôleur de $, $ url [1])) {

$ Régulateur -> {$ url [1]} ();

}

Ainsi, par exemple, si l'utilisateur passe à www.example.com/basketball/game exécute une méthode appelée sur le contrôleur de jeu appelé basket-ball.

Ce est le fichier index.php. Et cela devrait être changé à un moment plus tard, mais je espère que ça vous donne une idée.

Donc pour obtenir les contrôleurs (je sais que je ai déjà eu un appelé coolsite, mais vous permet d'utiliser un autre appelé basket-ball)

classe de Basketball se étend contrôleur

{

fonction __construct ()

{Parent :: __ construct (); }

}

Deux choses à noter. Prolonge le contrôleur de base que je ai mentionné plus tôt. Il appelle la construction contrôleurs. PHP ne appelle pas automatiquement la méthode constuct un contrôleur de parent que les autres langues, alors, vous devez le faire manuellement.

En conséquence, nous avons instancié une nouvelle vue.

Si vous vous souvenez, dans le procédé de contrôle de parent, je ai créé une vue que je ne ai jamais parlé dans le constructeur avec $ this-> Vue

Le point, ce est que un contrôleur devrait instancier à la fois une vue et un modèle. Pas d'autre moyen.

Mais, pour l'amour d'achèvement,

idée de vue serait

Classe View

{

rendre la fonction publique ($ name, $ comprennent = false)

{Si ($ Inclure == false)

{"Exiger vues/.php '' $ name.. ';

}

}

Si vous voulez avoir un en-tête et pied de page, qui vont être plus ou moins inclus dans chaque vue, puis ajoutez simplement

autre

{Require 'vues/header.php'

exiger "vues/'$ name..' .php ';

require 'vues/footer.php'

}

Encore une fois, je suppose que nous préservions vues dans un dossier appelé "vues", mais cela peut aussi être définie comme une constante, ou renommé ou autre. Vous pouvez également choisir de passer un arg supplémentaires pour l'affichage, comme une matrice contenant les données.

Mais revenons à la basket de contrôleur

classe de Basketball se étend contrôleur

Nous pouvons faire beaucoup de choses.

premières choses premières.

nous voulons définir un indice de méthode.

fonction d'index () {$ this-> Affichage-> render ('basket/index'); }

mais je ne ai jamais dit que la demande pour aller à la page d'index se il existe une méthode appelée, eh bien, je ai besoin de le faire maintenant. dans le fichier index.php, je ajoute simplement:

if (isset ($ url [1])) {

if (method_exists (contrôleur de $, $ url [1])) {

$ Régulateur -> {$ url [1]} ();

}

else {// erreur d'affichage}

{

$ Controller-> index ();

}

parce que ce va être formaté terriblement ..... nous nous sommes séparés l'url pour faire exploser le '/'. qui nous a donné un tableau (je pense, ou une liste avec PHP?) URL. si les types d'utilisateurs http://www.example.com/basketball get [0] => basket-ball. si son basket/jeu nous obtenons [0] = basket [1] = jeu.

vérifier si le second paramètre url [1] est réglé, si vous chargez la méthode url [1] au contrôleur se il est (déjà instancié le contrôleur). sinon vous chargez la méthode d'indexation.

bien. afin que la vue du contrôleur rend maintenant $ this-> Affichage-> render ('basket/index').

ce que cela fait est de dire le programme de regarder dans la vue du dossier, à un basket-ball et un dossier nommé index.php fichier appelé

ou opinions/basket/index.php

Cette affiche la vue.

Donc, dans ce dossier, nous ne pouvons tout simplement créer:

Ce est un regard neuf sur un match de basket

et ce est tout.

Evidemment, pour ce faire, conforme W3C, nous devrions inclure certaines choses dans l'en-tête et pied de page, ce est pourquoi il est bon d'avoir une vision distincte pour les deux, ou trouver une autre façon de le faire. Le moins de code pour répéter le mieux.

Maintenant, en ce qui concerne la méthode de «jeu» dans le contrôleur "basketball"? (Désolé, je pense que ce est ce que je ai appelé).

bien, theres pas beaucoup que nous pouvons faire, nous pourrions avoir à aller à un autre point de vue, nous pourrions avoir à ne rien faire, nous pouvons avoir d'écho («jeu de basket-ball ');

mais généralement, nous voulons un contrôleur de faire quelque chose avec le modèle. Et nous voulons faire une vision basée sur ce modèle. Nous utilisons des méthodes dans le contrôleur pour faire face à l'interprète.

Ainsi, supposons que nous avons un modèle de basket-ball qui a une logique d'entreprise. Il a une méthode dire (joueurs), ce qui conduit à notre base de données et choisit la player_name de champ d'une table que nous appelons le basket-ball. Elle renvoie ce domaine. Ensuite, vous pouvez avoir une autre méthode qui (puisque les tableaux sont salissants), passe à travers les données et retourne seul le premier joueur en tant que chaîne. Donc, il est plus facile de travailler avec. Donc, notre logique métier ensemble se trouve au niveau du modèle.

Je ne ai jamais créé une classe de base pour le modèle, mais ce est relativement facile. Tout ce que nous voulons, ce est une instance de la base de données.

Donc nous

classe de modèle

{

fonction __construct ()

{$ This-> db = new Database (DB_TYPE, DB_HOST, DB_NAME, DB_USER, DB_PASS);}

}

Nous avons juste à définir le DB_TYPE, et d'autres constantes dans un fichier de configuration séparé. Ensuite, nous aurons besoin de cela dans notre fichier index.php à la racine.

puis nous créons une autre base de données de classe appelé

la classe de base de données se étend PDO

{

Fonction publique __construct ($ DB_TYPE, $ DB_HOST, $ DB_NAME, $ DB_USER, $ DB_PASS)

{

parent :: __ construct ($ DB_TYPE ': host =' .... $ DB_HOST '; dbname =' $ DB_NAME, DB_USER $, $ DB_PASS);

}

}

Je utilise AOP pour plus de simplicité.

Dans la classe DB peut inclure des méthodes répétitives insert, update, delete, sélectionnez, etc.

par exemple

fonction publique sélectionner ($ sql, $ array = array (), $ fetchmode = PDO :: FETCH_ASSOC)

{

$ Sth = $ this-> prepare ($ sql);

foreach ($ array que $ key => $ value) {

$ Sth-> bindValue ("$ key", la valeur de $);

}

$ Sth-> execute ();

return $ sth-> fetchAll ($ fetchmode);

}

Maintenant, nous ne avons pas à vous soucier de l'écriture que le code à nouveau.

dans notre modèle

Classe Basketball_Model étend Modèle

public function __construct ()

{Parent :: __ construct ();

}

GetPlayer civile ($ id)

{

return $ this-> DB> sélectionnez ('SELECT id, les joueurs de l'utilisateur WHERE id =: id', array (': id' => $ id)));

}

puis à nouveau dans le contrôleur nous faisons tout

classe de Basketball se étend contrôleur

{

La fonction de lecteur ()

{

return $ this-> modélisation> getPlayer ();

}

Maintenant, nous pourrions aller de l'avant, même là, mais, laisse faire quelque chose dans l'indice à la place. Il ne est pas nécessaire d'avoir de nombreux points de vue.

fonction index ()

{

$ Type = $ this-> lecteur ()

$ This-> Affichage-> render ('basketballl/index');

}

alors qu'est qui se passe dans l'indice? son appel au premier joueur de sa classe. Cette méthode appelle la méthode modèle getPlayer du modele du joueur de classe. modele du joueur retourne ces données en utilisant une ligne de code parce que son une extension de la classe de modèle qui se étend et une instance de la base de données. Dans la base de données, nous incluons toutes nos opérations de base CRUD afin que nous ne devrions pas le faire encore et encore. Ainsi, alors que cela semble comme une tonne de code pour faire quelque chose de simple, ce est vraiment tout sur sa création. Une fois que vous avez tout installé, il ne est pas nécessaire d'entrer ce code long (boilerplating) et vous pouvez développer beaucoup plus rapidement.

Une dernière chose cependant. Comme on le voit affiche ces données?

Eh bien, puisque la vue se étend le contrôleur, tout ce que nous devons vraiment faire, ce est quelque chose comme

$ This-> Affichage-> data = $ copain;

mais alors vous vous retrouvez avec quelque chose comme ceci:

$ Type = $ this-> lecteur ();

$ This-> Affichage-> data = $ copain;

$ This-> Affichage-> render ('basketballl/index');

Moins de code = Better

Je dois conclure cette ........

Nous nous retrouvons avec ceci:

$ Type = $ this-> lecteur ();

$ This-> Affichage-> data = $ copain;

$ This-> Affichage-> render ('basketballl/index');

Maintenant nous combinons ces deux premiers:

$ This-> Affichage-> data = $ this-> lecteur ();

mais cela semble confus, et nous pouvons faire un peu de «mieux.

Au lieu de la classe View permet simplement de faire ce

rendre la fonction publique ($ name, $ include = false, $ data = false)

{Si ($ Inclure == false)

{"Exiger vues/.php '' $ name.. ';

if (data $! = false)

$ This-> Affichage-> data = $ data;

}

de sorte que la méthode de l'indice de l'automate, il reste;

$ Data = $ this-> lecteur ();

$ This-> Affichage-> render ('basketballl/index', true, $ data);

puis dans le contrôleur de vue pour le basket/index, si nous voulons voir les données que nous faisons tout

Ce est le basket-ball/view index

php $ data

// Je suis désolé il semble que vous ne pouvez pas afficher les balises HTML et PHP ainsi, imagine balises p avant et après le php et funky? donc au lieu de php

etc. Je pense que vous pouvez obtenir le point.

Idéalement, nous aimerions nettoyer le très index.php (la racine). Au lieu de mettre beaucoup de logique dans ce fichier particulier, il pourrait être préférable de simplement créer un autre fichier appelé "boot.php» et Instanciez index.php. es

require 'libs/boot.php'

App $ = new Boot ();

Nous pouvons également demander un config.php là aussi, où vous définissez la constante comme notre base_url, définitions de base de données, clés de hachage, etc.

Et bien sûr, beaucoup de cela a été fait en pseudo, et je ai touché sur des choses comme la vérification des erreurs, et cordes assainissement. Mais ce serait l'étape suivante. Il est très important dans ne importe quelle langue pour désinfecter les chaînes qui peuvent être interrogés.

Par exemple, voici une bien meilleure façon d'obtenir l'url:

$ Url = isset ($ _ GET ['url'])? $ _GET ['Url']: null;

$ Url = rtrim ($ url, '/');

$ Url = filter_var ($ url, FILTER_SANITIZE_URL);

$ Url = explode ('/', $ url);

vous pouvez également créer un chargeur automatique, plutôt que de charger tous les fichiers manuellement si vous continuez à ajouter des fichiers de support dans votre assistant ou le répertoire lib.

Bien! Assez parlé de PHP!

[Bon, je viens de remarquer que je ne ai pas touché sur les routes dans cet exemple parce que les choses devenaient fous. mais dans cet exemple, la valeur par défaut sera la principale méthode de contrôle. es l'url du contrôleur sera par défaut index, appelé une URL www.example.com/welcome iront au contrôleur de bienvenue, etc. Je ne ai pas mis dans une option pour rediriger routes. Idéalement, il devrait y avoir une option pour spécifier un chemin de "bienvenue" va au contrôleur "user" avec le "login", mal arriver à cela une autre fois.]

Conclussion

Si vous avez obtenu jusqu'ici, félicitations. Je ne pense pas que je le ferais, mais je espère que vous avez appris quelque chose.

Points clés: trouver des modèles; utiliser, nouveau look existant, et trouver des moyens pour mettre en œuvre efficacement.

La vitesse est cruciale: le choix du langage de programmation, le choix de la façon dont vous allez sur la planification de l'éditeur de texte que vous choisissez, sachez que chaque décision est appelée à jouer un rôle dans le temps de développement. Cherchez des façons de faire les choses plus vite. Je encourage les gens à sortir de la zone de confort il de temps en temps pour aider. Utilisez vim pendant un certain temps, au lieu de Notepad ++ ou NetBeans. Essayez de faire des projets personnels dans les rails si vous utilisez PHP. En python si vous utilisez Rails. Dans le schéma si vous savez tout. La raison pour laquelle nous voyons de nouveaux langages de haut niveau est parce que quelqu'un a vu un codage plus efficace dans une langue particulière et a créé un nouveau utiliser certaines fonctions qu'il aimait autour d'un langage de programmation, et la langue b. Sinon, nous serions encore de codage en C ++.

En ce moment je pense que Rails et Python sont chauds. Mais qui sait ce que ce sera comme en 5 ans à partir de maintenant.

Si vous voulez faire partie du domaine technique, il est important de comprendre pourquoi les choses évoluent et être une partie de leur évolution.

Il se agit d'une série de Part1.

Pour lire part2, cliquez ici.

(0)
(0)

Commentaires - 0

Sans commentaires

Ajouter un commentaire

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caractères restants: 3000
captcha