Maison >développement back-end >tutoriel php >Cadre de lithium: commencer
débutant du framework de lithium: points clés
Le lithium est un cadre PHP simple et efficace adapté à PHP 5.3 et au-dessus. Il est conçu pour fournir un bon ensemble d'outils pour lancer votre application Web sans être trop restrictif.
Lithium utilise l'architecture Model-View-Controller (MVC), qui sera discutée dans cet article. Je vais vous montrer comment cela fonctionne et comment définir une logique commerciale et de représentation pour votre application à l'aide de ce cadre. Nous effectuerons les étapes suivantes:
Nous allons configurer un contrôleur pour acheminer les demandes d'URL. Ce contrôleur utilisera le modèle de données pour obtenir et traiter certaines informations à partir de la base de données. Ces informations seront ensuite affichées dans le navigateur à l'aide de la vue. Tout cela est un processus MVC standard, mais c'est un plaisir à exécuter au lithium.
Je suppose que vous avez le framework configuré sur le serveur, au moins vous pouvez voir la page de lancement de l'application par défaut lorsque vous accédez à l'URL. De plus, vous avez besoin d'une base de données avec quelques informations. Je vais utiliser MySQL, mais Lithium prend en charge de nombreux autres systèmes de stockage comme MongoDB ou CouchDB.
Si vous voulez continuer à apprendre, j'ai mis en place un référentiel GIT et vous pouvez le cloner. La branche principale contient le cadre de lithium normal, tandis que la branche MVC contient le code de cet article. N'oubliez pas d'initialiser et de mettre à jour le sous-module de lithium. Pour vous connecter à votre base de données, copiez le fichier Connections_default.php situé dans le dossier App / Config / Bootstrap et renommez-le sur Connections.php. Ajoutez ensuite vos informations d'identification au fichier.
Commençons.
Données
Avant d'entrer un contenu MVC intéressant, ajoutons une table dans la base de données avec quelques informations. J'utiliserai les données de la page virtuelle, donc mon tableau (pages nommées) contiendra une colonne d'ID (int, automatique et clé primaire), une colonne de titre (VARCHAR 255), une colonne de contenu (texte) et une colonne créée ( Int). Dans ce tableau, j'ai deux lignes d'échantillons de données. Si vous souhaitez suivre les étapes exactement, voici les instructions de création de table:
<code class="language-sql">CREATE TABLE `pages` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `content` text, `created` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;</code>
Ce qui suit est ma ligne de données virtuelle:
<code class="language-sql">INSERT INTO `pages` (`id`, `title`, `content`, `created`) VALUES (1, 'My awesome page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158745), (2, 'Some other page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158768);</code>
Bien sûr, vous pouvez utiliser d'autres données.
C signifie Controller
Les contrôleurssont probablement la partie la plus importante de tout cadre MVC. Leur objectif est de traiter les demandes acheminées par le système de routage des applications.
Si vous regardez l'application / contrôleurs / dossier de l'application, vous constaterez que c'est là que nous devons placer le contrôleur. Créons un nouveau fichier appelé SiteController.php (chaque classe de contrôleur est dans son propre fichier) et collez la déclaration de classe suivante à démarrer:
<code class="language-php"><?php namespace app\controllers; class SiteController extends \lithium\action\Controller { }</code>
Comme vous pouvez le voir, nous étendons la classe de contrôleur de base du lithium à notre propre classe appelée SiteController. Dans cette classe, vous pouvez créer des méthodes qui exécutent la logique requise lors de la demande d'une URL. Nous verrons comment cela s'applique réellement plus tard, mais d'abord, comprenons comment fonctionne le routage.
Par défaut, lors de la construction de l'URL, nous utilisons des paramètres qui mappent au nom de classe du contrôleur (dans ce site de cas), à la méthode et aux paramètres. Si le nom de la méthode n'est pas passé, le lithium supposera une méthode nommée index () seule. Donc, si vous naviguez vers http://example.com/site/, Lithium recherchera cette méthode et l'appellera. Supposons maintenant que nous ayons une méthode appelée View () qui prend un paramètre ($ id). L'URL qui appelle la méthode du contrôleur est http://example.com/site/view/1, où la vue est le nom de la méthode et 1 est le paramètre transmis à la fonction. Si la méthode obtient plus de paramètres, vous les séparez simplement avec des barres obliques (/) dans l'URL.
Cependant, comme je l'ai mentionné, c'est le comportement par défaut. Pour plus de contrôle, vous pouvez définir votre propre itinéraire dans le fichier /app/config/routes.php. Je n'entrerai pas dans les détails, mais vous pouvez trouver plus d'informations sur la page de documentation correspondante.
Allons maintenant de l'avant et créons une méthode page () qui sera responsable de l'affichage des pages individuelles de ma base de données virtuelle:
<code class="language-php">public function page() { // 模拟页面信息。 $title = 'My awesome page title'; $content = 'My awesome page content. Yes indeed.'; $created = '10 April 2014'; // 准备页面信息以传递给视图。 $data = array( 'title' => $title, 'content' => $content, 'created' => $created, ); // 将数据传递给视图。 $this->set($data); }</code>
ci-dessus, nous simulons les informations de la page de base de données et les stockons dans un tableau. Nous passons ensuite ce tableau à la méthode set () du contrôleur (dont nous avons hérité), puis l'envoyons à la vue. Alternativement, nous pouvons retourner le tableau de données $, au lieu d'utiliser la méthode set (). Mais dans les deux cas, les clés du tableau représentent des noms de variables, auxquels nous pouvons ensuite accéder à partir du fichier d'affichage. Voyons comment cela fonctionne.
(Le contenu suivant est similaire au texte d'origine, mais l'instruction a été ajustée et réécrite, en maintenant l'intention d'origine et en évitant les blocs de code en double)
V signifie View
La vueest la couche de présentation du cadre MVC. Ils sont utilisés pour séparer la logique métier d'une application de la représentation et permettre une thématique facile du contenu affiché dans le navigateur.
Créons une vue pour afficher les informations de notre page. Dans le dossier APP / Views /, vous devez créer un autre dossier nommé d'après la classe de contrôleur qui l'utilise (dans ce site de cas). Dans ce dossier, vous devez créer un fichier nommé d'après la méthode elle-même, avec l'extension .html.php jointe. Il s'agit des vues des noms de lithium de convention, ce qui nous permet de les connecter facilement au contrôleur.
Ainsi, pour notre exemple de page, le nouveau fichier sera situé dans l'application / vues / site / page.html.php.
Dans ce fichier, collez ce qui suit:
<code class="language-sql">CREATE TABLE `pages` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `content` text, `created` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;</code>
Comme vous l'avez peut-être deviné, voici quelques balises de base où nous imprimerons les variables nommées pour passer des clés de tableau du contrôleur. Lithium utilise cette syntaxe pour imprimer des variables, car elle les exécute également via sa fonction $ h (), qui est responsable du nettoyage de HTML. Mais cela ne s'applique qu'aux variables d'impression, et non aux propriétés de $ cet objet.
pour tester ce que nous avons fait jusqu'à présent, accédez à http://example.com/site/page et vous devriez voir une belle page affichant les informations de simulation. Vous remarquerez également que notre vue simple est rendue dans des dispositions plus complexes (la mise en page par défaut accompagnée du cadre).
Les dispositions de lithium sont utilisées pour envelopper le contenu en utilisant des balises couramment utilisées telles que les titres et les pieds de page. Ils sont situés dans le dossier APP / Disposets où ils rendent la vue en utilisant $ this- & gt; content (). Notre vue est rendue par défaut dans la disposition par défaut.html.php, mais vous pouvez spécifier une autre mise en page comme vous le souhaitez. Vous pouvez le faire à partir du contrôleur qui rend la vue, soit comme un attribut de classe appliqué à toutes les méthodes de ce contrôleur, soit dans la méthode elle-même, comme ainsi:
<code class="language-sql">INSERT INTO `pages` (`id`, `title`, `content`, `created`) VALUES (1, 'My awesome page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158745), (2, 'Some other page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158768);</code>
Nous nous en tiendrons à la mise en page par défaut car il a l'air bien pour nos objectifs de démo.
M signifie Model
Maintenant que la logique de demande et de représentation a été traitée, il est temps de remplacer les données de la page simulées par notre contenu de base de données virtuelle. Nous utiliserons des modèles pour abstraction et accéder facilement à ces informations.
Les classes de modèles sont une partie très importante du cadre MVC car elles définissent et traitent le contenu dans la base de données. Ils permettent également aux applications d'effectuer facilement des opérations CRUD (créer, lire, mettre à jour, supprimer) sur ces données. Voyons comment ils fonctionnent en lithium.
La première chose que vous devez faire est de créer un fichier de classe appelé pages.php dans le dossier APP / Modèles et coller ce qui suit:
<code class="language-php"><?php namespace app\controllers; class SiteController extends \lithium\action\Controller { }</code>
Nous avons juste étendu la classe de modèle de base et utilisé toutes ses méthodes. Notre nom de classe de modèle doit correspondre à la table de base de données contenant les enregistrements pertinents. Donc, si le vôtre n'est pas des pages, assurez-vous de s'ajuster en conséquence, car le lithium obtiendra automatiquement cette dénomination pour simplifier notre travail.
Ensuite, nous devons inclure ce fichier dans notre fichier de classe de contrôleur, alors collez-le ci-dessous ci-dessous la déclaration d'espace de noms:
<code class="language-sql">CREATE TABLE `pages` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `content` text, `created` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;</code>
La prochaine consiste à supprimer le contenu simulé de la méthode Page () et à assurer que cette fonction transmet un paramètre $ id afin que nous sachions quelle page nous devons récupérer. Notre tâche simple à gauche consiste à interroger l'enregistrement de la page et à passer les résultats à la vue. Par conséquent, la méthode Page () modifiée ressemblera à ceci:
<code class="language-sql">INSERT INTO `pages` (`id`, `title`, `content`, `created`) VALUES (1, 'My awesome page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158745), (2, 'Some other page title', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', 1397158768);</code>
Nous utilisons la méthode première () de la classe parent du modèle pour interroger en utilisant les conditions. Le résultat est un objet à partir de laquelle nous utilisons la méthode Data () pour récupérer les données d'enregistrement. Ces données prennent un tableau avec le nom de la colonne de table comme clé. Le reste est le même qu'auparavant, sauf que nous formons le champ créé à l'aide de la fonction PHP Date () parce que ce que nous obtenons de la base de données est l'horodatage Unix. C'est ça.
Si nous naviguons vers http: example.com/site/page/1, nous devrions voir une page avec ID 1. Si nous passons le dernier paramètre URL à 2, la page doit charger le deuxième enregistrement. rangé.
Conclusion
Dans ce tutoriel, nous avons vu à quel point il est facile de comprendre et d'utiliser le cadre Lithium MVC. Nous avons appris à définir les contrôleurs, les vues et les modèles, et comment les utiliser ensemble pour créer un flux d'application soigné et séparé. Nous avons également vu à quel point l'accord de lithium était utile pour nous de commencer. Même si nous ne le réalisons pas, nous abstracons notre contenu de base de données et l'exposons pour un accès facile.
J'espère que vous avez appris quelque chose et que vous êtes curieux de approfondir d'autres fonctionnalités puissantes que le lithium propose. Quelles sont les méthodes CRUD intégrées? Comment les développer? Comment définir vos propres itinéraires personnalisés? Comment utiliser plusieurs dispositions pour rendre les éléments plus petits même en vue? Ce sont les fonctionnalités puissantes des offres de lithium pour nos applications Web et valent la peine d'être essayées.
Ai-je éveillé votre curiosité? Vous voulez en savoir plus sur cet excellent cadre?
(La partie FAQ est la même que le texte d'origine, aucune modification n'est requise)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!