Yes, ç'est plus simple comme ça mais du coup j'ai beaucoup de code à adapter pour garder une cohérence
Yes, ç'est plus simple comme ça mais du coup j'ai beaucoup de code à adapter pour garder une cohérence
Salut ! Je viens vous proposer une version plus aboutie du CMF que j'avais présenté juillet dernier. Pour repositionner le développement, le but de ce CMF est de construire des sites internet, des web applications ou des sites mobiles le plus rapidement que possible à partir de templates html préconçus via psd2html, themeforest ou d'autres sources. Ce n'est pas un framework PHP pur type zend ou symfony, ce n'est pas non plus un CMS type drupal ou joomla. C'est entre les 2.
Les changements depuis Juillet dernier :
- La librairie utilise désormais le PHP 5.3 (fonctions anonymes, etc...)
- La convention de nommage est en camelCase pour les les méthodes, CamelCase pour les classes.
- Toute la configuration d'un projet se fait à travers un unique fichier "application.ini"
- Toute la structure de la librairie à été refaite pour s'adapter au modèle de Zend "application / library / public".
- Le système s'adapte tout seul aux différentes configurations d'installation (dans un répertoire absolu ou relatif)
- Un autoload mieux geré : la classe "Erra_System_XmlHttpRequest" se trouve dans library/Erra/System/XmlHttpRequest.php
- L'affichage des champs est unifié et les balises non valides xHtml ont disparu (pour la plupart en tout cas ^^)
- L'administration a été complétement réécrite
- Un moteur de templating a été écrit avec une syntaxe similaire à XSLT (support de <if>, <choose>, <when>, <otherwise>,<foreach>) plus quelques balises supplémentaires <include src="mavue.phtml"/> et <zone name="footer"/>
- Le code des vues peut être protegé simplement par une balise <access_control grant="admin, dev" ondeny="droits_insuffisants.phtml">
code visible seulement par les admin et les developpeurs
</access_control>
- Le système de template se base sur un cache (les fichiers sont compilés en .php classique et ne sont réinterprétés seulement si le développeur les change)
- Les bases de données sont passés en PDO
- Le système des objets à été changé, il n'y a plus qu'un seul type d'objet, qui peut s'éditer indifféremment sous forme de liste ou sous la forme d'un objet unique
- Les objets se créent à partir d'une syntaxe de type magique : eg $text_field = Erra_Fields_Text::create('my_text_field')->setDescription('Some text field')->setSize(70); (Pour des raisons de performances, la méthode de création n'est pas basée sur __get()).
- Les objets peuvent être des composites. Par exemple un objet User peut contenir des sous objets $user_name = Erra_Fields_Text.... $picture = Erra_Fields_Image... etc.. et le système permet, pour créer le formulaire d'édition de l'utilisateur d'employer la syntaxe :
$userEditFormHtml = User::getObject('currentUser', 'SQL', 'WHERE uid='.$fromSession['uid'])->_form('AppController/saveSql'); où $fromSession = Erra_Persistance_Session::get('userData'); par exemple. Il n'y pas de modèle fixe de gestion de données mais le système permet au développeur de créér le sien facilement.
Dans le même ordre d'idée le formulaire d'inscription pourrait être créé simplement avec
$newUserFormHtml = User::getObject('idDoesntMatters', 'CREATE')->_form('AppController/createUser');
- Le moteur des formulaire a été réécrit pour accepter désormais 3 modes : "native" (possibilité de créer sa skin à partir de quelques parametres), jqueryui (basé sur jqueryui, et donc possibilité d'utiliser le themeroller) et custom (basé sur des css que vous écrivez vous même)
- Beaucoup d'automagic et de choses que j'oublie !
http://lexastudio.com/dev/erra_ufm_framework_v0.90.rar
J'invite les plus téméraires d'entre vous à l'installer et à jouer avec les données d'exemple du répertoire "application". Pour le configurer vous devez juste changer le fichier application/application.ini et accéder via le navigateur au répertoire public.
Ce que j'aimerai ça serait un feedback global sur les good ou bad practises de ce CMF pour faire évoluer le code comme stealth35 a pris la peine de le faire. Je ne peux pas écrire de documentation pour l'instant dans le sens ou je l'ai déjà fait une fois et tant que le code n'est pas fixe, au moins sur la manière d'appeler les objets c'est du temps de perdu
Il reste encore beaucoup de choses à unifier, surtout au niveau du moteur de rendu des formulaires
Alors, je fais toujours ma technique de simplet, je télécharge et je lance.
- erreur 1, puisque mon application.ini n'est pas configuré, peu être qu'un message aurai été mieux (un simple md5 pour vérifier si le fichier est changé ou pas)
- erreur2, ducoup on me demande un path pour les images, je comprend pas trop ce qu'il faut faire, je suis obligé de regarder dans le code
- point positif 1, les classes sont beaucoup mieux rangées qu'avant
- point negatif 1, pourquoi ne pas avoir utilié les namespaces ducoup ?
je pense qu'un petit installeur serai le bienvenu
- ps : je te déconseille d'utiliser ini_set, surtout si c'est pour faire de la compression
Lorsque l'application.ini est mal configuré, un message disant où est l'erreur s'affiche (normalement).
Une erreur sur les images, 'est bizzare à priori il n'y a que les paramètres de la base de données à changer pour que ça fonctionne, que te dit le message ?
Pour les namespace j'ai du mal à voir l’intérêt dans ce cas, c'est pour ça que je ne les ait pas utilisé, mais peut-être qu'il y a quelque chose que je zappe ?
Pourquoi éviter d'utiliser ini_set ?
t'utilises deja les namespace mais avec l'ancienne méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part The parameter `path.public_images` with value `/images` in application.ini is not a valid directory
Code : Sélectionner tout - Visualiser dans une fenêtre à part class Erra_Core_Browser {https://github.com/php-fig/fig-stand...epted/PSR-0.md
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 namespace Erra\Core class Browser {
parce que c'est a l'utilisateur de choisir ça config
ok pour l'ini_set et les namespace, du refactoring s'impose.
J'ai changé le fichier application.ini avec deux paramètres supplémentaires pour le chemin `http_host` et `webroot`, ça devrait fonctionner sur ta machine désormais.
Tu peux me donner un rapide descriptif de ton environnement ? J'ai que 2 machines sur lesquelles je peux faire des test
si ton autoloader est bien fait, t'as pas grand chose a changer pour les namespace
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager