Theyosis: une approche moderne du développement WordPress
Mon dédain pour la base de code Tangled de WordPress est bien connu. Je conseille de son utilisation, sauf si vous êtes techniquement compétent. Cependant, mes critiques découlent d'un désir d'amélioration - un espoir qu'une alternative supérieure émergera, offrant un processus de développement plus logique et efficace. Toute tentative de rationalisation de WordPress est, à mon avis, une étape positive.
Récemment, un projet appelé Theyosis a fait surface, présenté comme un "cadre pour les développeurs WordPress". Cet article explore la thèse, son utilisation et examine son exemple de projet - une application de librairie.
Faits saillants de la clé:
Comprendre la thèse
Le terme "framework" pourrait être trompeur pour les développeurs PHP. WordPress contient déjà de nombreuses composantes inutiles. Les cadres adhèrent généralement aux principes minimalistes et aux composants découplés, avec des applications complexes construites sur eux - pas l'inverse.
La théâtre n'est pas un cadre au sens traditionnel. Il s'agit d'une API qui s'intègre à WordPress pour simplifier le développement mais qui ne réduit pas nécessairement sa taille. Theyosis fournit des API pour créer des composants WordPress en utilisant PHP moderne, y compris les espaces de noms, les classes, les fonctions anonymes et la prise en charge des compositeurs.
Essentiellement, la Theosis est un plugin WordPress inspiré de Laravel propulsé par MVC utilisé pour construire d'autres plugins. Il comprend son propre routeur (définition de l'itinéraire de style Laravel) et son moteur de modèles (Scout), similaire à Laravel et Phalcon, avec un support WordPress supplémentaire. Par exemple, la boucle de modèle:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
utilise l'API WordPress pour la récupération des données, et la classe Loop
est spécifiquement conçue pour les boucles de contenu WordPress.
Installation
L'installation de Theosis implique le compositeur et l'outil de ligne de commande WordPress. La création d'un projet Theyosis avec Composer comprend automatiquement la dernière version WordPress; Un script d'installation WordPress standard finalise la configuration. Reportez-vous aux instructions d'installation officielles ou expérimentez d'abord l'exemple du projet (détaillé ci-dessous).
Exemple de projet: l'application de la librairie
Theyosis fournit un exemple d'application de la librairie.
Tester l'application de la librairie
Pour le tester, vous pouvez utiliser Homestead amélioré. Enregistrez un nouveau site avec:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
N'oubliez pas d'ajouter bookstore.local
au fichier /etc/hosts
de votre hôte (selon les instructions améliorées de la propriété).
cloner le référentiel (git clone https://www.php.cn/link/7101e4daaff4511510bbd4e6a0862fb7 themosis_example
) et accéder à la procédure d'installation à http://bookstore.local:8000
. Suivez les instructions. Cette configuration permet l'expérimentation sans risque - reconstruisez simplement la machine virtuelle pour retourner les modifications.
Bien que l'apparence initiale ne soit pas révolutionnaire (tout site WordPress peut être configuré de la même manière), deux observations clés se distinguent:
Examen du code
Le code de la librairie réside sur github: https://www.php.cn/link/7101e4daaff4511510bbd4e6a0862fb7 . Comme Themosis est un plugin, le code de la librairie est situé dans son répertoire de plugin:
Trois sous-dossiers principaux existent: app
(Logique WordPress alimentée par Theyosis), src
(code source de Thesosis - Recouillage d'autres frameworks) et vendor
(dépendances des compositeurs).
Bien que le code intègre des pratiques modernes (espaces de noms, classes, documentation complète), des éléments obsolètes mineurs demeurent (par exemple, <?php defined('DS') or die('No direct script access.');
, clôturant les balises PHP).
Le code de Thesosis est distribué sur deux emplacements: le routage et la présentation résident dans le thème, tandis que la logique d'application est dans le dossier du plugin.
Structure MVC
La structure MVC est bien définie, bien que la fragmentation à travers deux dossiers parents puisse être améliorée. Le dossier routes
(similaire à Laravel) utilise une syntaxe comparable. Les contrôleurs sont séparés des vues et les modèles sont utilisés par les contrôleurs, passant des données aux vues. Un exemple de home.controller.php
:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
Les vues utilisent la notation de points pour la traversée (par exemple, pages.home
cartes à app/views/pages/home.scout.php
).
routage avec paramètres
Le routage est simple. La page de recherche, par exemple, utilise directement la fonctionnalité de recherche de WordPress:
- map: bookstore.local to: /home/vagrant/Code/themosis_example
Cette approche résume la fonction de recherche intrinsèquement défectueuse de WordPress, facilitant le remplacement plus facile.
Création d'une page personnalisée
Créons une page personnalisée avec un contrôleur et une vue.
routes.php
: return View::make('pages.home')->with(array( 'promo' => Books::getPromoBook($this->page), 'books' => Books::getPopularBooks($this->bookId), 'news' => News::get(), 'newspage' => get_page_by_path('news') ));
pages/test.scout.php
: // Search page Route::is('search', function(){ return View::make('search', array('search' => $_GET['s'])); });
controllers/Test_Controller.php
): Route::only('page', 'test', 'test@index');
Cela rendrait "Hello World" pour /test
dans la plupart des cadres. Cependant, parce que The Theyosis repose sur WordPress, nous devons ajouter la page au système.
Le message "Hello World" rend après le rechargement.
Pour inclure le contenu de la page, nous devons accéder à la variable globale $post
et la transmettre à la vue. Cela met en évidence la dépendance variable globale de WordPress.
Modification du contrôleur:
@include('header') Hello World @include('footer')
et la vue:
<?php class Test_Controller{ public function index(){ return View::make('pages.test'); } }
rend correctement la page.
Bien que quelque peu complexe, les emballages puissants pour rendre le contenu WordPress fournissent une structure et une clarté, améliorant la rigidité de WordPress.
Conclusion
La théâtre offre une expérience de type Laravel pour le développement des plugins WordPress. Il introduit une structure et une encapsulation indispensables à l'architecture du plugin de WordPress.
Bien que toujours dans ses premiers stades (version 0.8), la Theosis est un projet prometteur. L'adoption de bonnes pratiques de conception est cruciale pour la communauté PHP, et Theyosis offre une contribution précieuse, même dans les limites du cœur de WordPress.
(La section des questions fréquemment posées a été omise en raison de contraintes de longueur mais pourrait être facilement paraphrasée et incorporée de manière similaire au reste du texte.)
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!