News
2011/04/08 Mise a jour du driver xml et en parlant de ca
On peut désormais installer des index sur le sgbd xml maison.C'est l'occasion de revenir sur cette alternative qui peut vous être bien pratique
Pour rappel ce modeste sgbd peut vous permettre des stocker vos articles, commentaires... dans plusieurs cas
1. vous n'avez pas de sgbd sur votre hebergement
2. vous ne voulez pas installer/configurer un vrai sgbd
3. vous n'avez pas besoin d'une sgbd complète
Il faut néanmoins rappeler les limitations de ce sgbd :
Il prend en charge les requetes des types suivants:
- SELECT liste_des_champs FROM ma_table WHERE champ=valeur ORDER BY champ DESC/ASC
- SELECT liste_des_champs FROM ma_table ORDER BY champ DESC/ASC
- SELECT liste_des_champs FROM ma_table WHERE champ=valeur
- SELECT liste_des_champs FROM ma_table WHERE champ!=valeur
- SELECT liste_des_champs FROM ma_table WHERE champ=valeur AND champ2=valeur2
- SELECT liste_des_champs FROM ma_table
la clause "where" accepte uniquement champ=valeur, champ!=valeur et AND
Il ne prend donc pas en compte ni les jointures, ni les unions, ni les requêtes imbriquées
La base de donnée csv permet de stocker de petites quantités (categories,rubriques,types,groupes...)
2011/03/21 Quelques mises a jour en pagaille
Durant les dernières mois, il y a eu des évolutions, améliorations qui sont venu enrichir le frameworkDu coté du builder:
Comme vous le savez peut-être, le mkframework ne nécessite pas de ligne de commande/terminal
Ce builder permet :
- de créer un nouveau projet
- de l'administrer
- de générer la couche modèle
- de créer des modules
On peut désormais choisir de créer un projet vierge ou contenant déjà des modules
Du coté du framework:
Entre l'ajout de nouveaux plugins (plugin_jQuery,plugin_mail,plugin_xsrf...)
Et l'amélioration des existants, notamment le driver sgbd xml/csv
Je le rappelle pour ceux qui ne connaîtrait pas le framework, que ces drivers permettent d'utiliser comme sgbd alternatifs des fichiers xml, et / ou csv et ceci en utilisant la grammaire sql
Ces "sgbd" alternatifs permettent de stocker de petites données (csv) ou des données lourdes (xml)
Et le passage d'un sgbd à l'autre se fait très facilement en changeant un paramètre dans le fichier de config adéquat
2010/12/15 Ajout d'un plugin jquery
Ajout d'un petit plugin permettant facilement d'ajouter des appels ajax jQueryOn l'utilise ainsi: d'abord on cree une fonction ajax en debut de vue
CODE
<?php
$oFunctionShow=new plugin_jquery('showArticle',array('param_id'));
$oFunctionShow->addLinkUpdateElement( $this->getLink('article::showajax',array('id'=> '$param_id')) ,'rendu') ;
$oFunctionShow->addModifyElement('rendu','show');
echo $oFunctionShow->getJs();
?>
CODE
<script language="Javascript">function showArticle(param_id){
$.ajax({
url: 'index.php?:nav=article::showajax&id='+param_id+'',
success: function(response) {
// update status element
$('#rendu').html(response);
}
});
$('#rendu').show();}</script>
CODE
<?php foreach($tArticle as $oArticle):?>
<a href="#" onclick="showArticle(<?php echo $oArticle->id?>)"><?php echo $oArticle->titre?></a>
<?php endforeach;?>
CODE
<div id="rendu"></div>
2010/09/21 Correction de bug dans le builder + ajout possibilite generer nouvelle application vide
Une correction de la partie generation du CRUD a été mise à jour dans le builder.On peut desormais dans le builder chosir de générer une nouvelle application avec ou sans exemples.
J'ai créé une base de projet le plus épurée possiblie, les seules modules restant étant "default" et "pagination".
Default: pour avoir une module par defaut
Pagination: parce que je le considère comme un outil.
2010/09/17 Mise a jour tpl et de la doc
Une ptite mise a jour du plugin tpl (template maison) Une mise à jour dans la page commentKonFait sur le site officiel pour expliquer un peu mieuxAjouté par imikado il y a environ une heure
Une ptite mise a jour du plugin tpl (template maison)
Une mise à jour dans la page commentKonFait sur le site officiel pour expliquer un peu mieux
Le moteur de template de ce framework permet à la fois
-d'alleger les templates avec une syntaxe épurée et facile à apprendre
-d'ameliorer la productivité (moins de code a taper)
-de simplifier certaines choses par exemple la generation des liens :)
exple:
CODE
<a mkf:href="array('article::edit','id'=>2)">lien</a>
Un exemple pour vous remettre dedans
1.il faut creer une vue avec l'extension .php.xhtml
2.au chargement de la page, une page avec l'extension .php sera créée
Alors la syntaxe:
Pour lister des articles dans un tableau
CODE
<table>
<tr>
<th>ID</th>
<th>Titre</th>
<th>Liens</th>
</tr>
<tr mkf:foreach="$tArticle as $oArticle">
<td>{{$oArticle->id}}</td>
<td>{{$oArticle->titre}}</td>
<td><a mkf:href="array('article::show','id'=>$oArticle->id)">Voir</a></td>
</tr>
</table>
Generant:
CODE
<table>
<tr>
<th>ID</th>
<th>Titre</th>
<th>Liens</th>
</tr>
<?php foreach($tArticle as $oArticle):?>
<tr>
<td><?php echo $oArticle->id?></td>
<td><?php echo $oArticle->titre?></td>
<td><a href="<?php echo $this->getLink(array('article::show','id'=>$oArticle->id))?>">Voir</a></td>
</tr>
<?php endforeach;?>
</table>
2010/09/16 Petit ajout au site et ptite mise a jour
Ajout de quelques couples question/reponse dans la rubrique commentKonFait au sujet du moteur de Template.Le moteur de template (cf news du 01/03/2009) est un outil tres interessant mais malheureusement peu documenté :(
2010/06/07 V4.15 Diverses mises à jour
Elles ont-corrigés quelques bugs simples,
-mis a jour la gestion d'erreurs via exception
-amélioré les commentaires...
Il faut toujours suivre le fil des mises a jour svn (bien plus bavard) :) http://projets.developpez.com/projects/mkframework/repository
2009/03/01
J'ai trouvé qu'il manquait un truc tout bete a ce framework: un gestionnaire de template, et j'en ai donc concu un tres simpleet tres flexible pour vous permettre de le personnaliser au maximum
Ce template s'appuie sur une page xhtml, avec des arguments propre au gestionnaire du template
par exemple
Pour une boucle sur un tableau d'articles
Sans moteur de template:
CODE
<?php foreach($this->tArticle as $oArticle):?>
<li><a href="<?php echo $this->getLink(array('article::show','id'=>$oArticle->id)?>"><?php echo $oArticle->titre?></a>
<?php endforeach;?>
Avec moteur de template
CODE
<li mkf:foreach="$this->tArticle as $oArticle">
<a mkf:href="array('article::show','id'=>$oArticle->id)">{{$oArticle->titre}}</a>
</li>
Comme vous le voyez le code est integre au balise, il y a plusieurs types de balise de ce type
-foreach
-for
-if/elseif/else
-alternate
Vous pouvez egalement utiliser des balises personnalisees en utilisant des attributs commencant par app
Ainsi qu'en utilisant la classe plugin_tplapp mise a votre disposition a cet effet :)
2009/12/29 V4.14 Mise a jour de la politique plugin plugin_valid plus flexible
Je reflechissais a ce plugin et je me suis dit qu'il etait trop statique, j'ai trouvé une solution pour le rendre plus flexible.Apres une reecriture du plugin plugin_valid, on s'appuie desormais sur le plugin_check ou autre (parametrable dans un conf/site.ini.php via check.class)
un exemple a ete ajouté au projet source, ainsi qu'a la generation
Le plugin de validation appel donc les checks de son plugin check paramétré.
Vous pouvez donc utiliser votre propre plugin en respectant une chose: le premier parametre des methodes doit etre la variable a verifier
2009/12/28 V4.13 Une amelioration et de nouveaux plugins
Une petite mise a jour pour integrer un principe de logComme toujours j'ai essayé de choisir une solution flexible au possible, ainsi j'ai ajouté un nouveau bloc dans le fichier de configuration principal (conf/site.ini.php)
Celui permet
1. de choisir la classe a utiliser pour gerer le log
2. d'activer les logs a effectuer (exple tout en dev, et seulement les erreurs en production)
Comme je le disais on peut choisir la classe a utiliser, par defaut, un nouveau plugin plugin_log a été créé implementant logiquement toutes les methodes appelées :)
Plusieurs type de log sont disponible: log,info,warning,error via
CODE
_root::getLog()->log('message applicatif (vous)')
_root::getLog()->info('message du framework')
_root::getLog()->warning('avertissement du framework')
_root::getLog()->error('erreur du framework')
2009/12/23 V4.12 quelques corrections et mise a jour drivers xml et csv
Mise a jour librairie _file : correction bug (erreur dans le unlink)Mise a jour librairie _request : ajout d'une méthode de nettoyage pour désactiver les magic quotes
Mise a jour librairie _root : appel de la nouvelle méthode de _request pour désactiver les magic quotes
Mise a jour librairie driver xml et csv : si on utilise un critère sur un champ inexistant, on n'a plus d'erreur et on ne prend pas la row
exemple:
on creer une base xml/csv article avec les champs id,titre
on cree des enregistrements
puis on decide d'ajouter un champ etat
on crée de nouveaux enregistrements (avec ce nouveau champ)....
On fait une requête sur le critère etat
Et bien avant cette mise a jour cela provoquait une erreur (lorsqu'il vérifiait ce champ il tentait d'accéder a un champ inexistant)
Désormais on récupère les row répondant au critère ou ne possédant pas ce champ (antérieur a l'ajout)
2009/12/18 V4.11 mise a jour drivers xml et csv
Une mise a jour permettant pour les drivers xml et csv de gérer count() dans une requête selectOn peut desormais faire un simple
SELECT count(id) FROM maTable
meme en utilisant les drivers xml et csv
note: il faut logiquement utiliser findOne une seule et unique row étant retournée
$nb=$oModelMatable->findOne('SELECT count(id) FROM article');
2009/11/27 V4.10 amelioration
La generation de lien pour le framework est un peu plus flexible, on peut desormais utiliser juste un tableauAvant:
CODE
_root::getLink('article::edit',array('id'=>2))
CODE
_root::getLink(array('article::edit','id'=>2))
Vous pouvez utiliser les deux
Note: correction dans le builder lors de la creation d'une base "csv maison"
2009/11/25 V4.9 ajout driver csv
Un nouveau driver a été ajouté permettant d'utiliser des csv comme mini base de donnéeAjout d'un profil exemple de connexion csv dans les fichiers de connexion (builder)
Ajout dans le builder la possiblite de creer une mini base csv
2009/10/27 V4.8 ajout driver pdo oracle et changement numerotation version
Pour etre le plus coherent entre le svn developpez et le numero de version complet, j'utiliserai desormais le numero de revision svn de developpezCette version est donc la V4.8.0 r2 (2ème révision sur le svn de developpez.com)
2009/10/27 le mkframework, sur developpez.com
Le mkframework est désormais également hebergé dans la section projet du site developpez.comGrace à eux, vous avez desormais à votre disposition
- un forum dédié sur http://www.developpez.net/forums/f1355/applications/projets/mkframework/
- un depot svn pour rester toujours à jour: http://subversion.developpez.com/projets/mkframework
L'adresse du projet: http://projets.developpez.com/projects/show/mkframework
2009/10/23 V4.7 passage sous licence AGPLv3
Le mkframework passe sous licence AGPLv3 (GNU Affero General Public License)2009/10/21 V4.5 ajout methode pour sgbd pdo pour recuperer le pointeur
Ainsi on peut utiliser si besoin et si géré les transactions, procedures stockées...CODE
$smt=$this->getSgbd()->getPdo()->prepare('SELECT * FROM article WHERE id=:id');
$smt->bindValue(':id',$id);
$smt->execute();
$result=$smt->fetch();
2009/10/21 V4.4 ajout module calendrier
Un module calendrier a été ajouter au projet source, un exemple l'utilise (article::listCalendrier)Comme vous pouvez le voir dans l'exemple creer un module réutilisable est super simple :)
Fichier module/article/main.php
CODE
class module_article extends abstract_module{
public function _listCalendrier(){
(...)
$oModuleCalendrier=new module_calendrier();
$oModuleCalendrier->sModuleAction='article::listCalendrier';
$oTpl=new _tpl('article::listCalendrier');
$oTpl->oModuleCalendrier=$oModuleCalendrier->build();
(...)
$this->oLayout->add('main',$oTpl);
}
}
CODE
(...)
<?php echo $this->oModuleCalendrier->show()?>
(...)
2009/10/15 V4.3 ajout builder xml
On peut desormais dans le builder, créer une sgbd xmlCelle-ci est composé ainsi: un repertoire contenant deux fichiers xml
structure.xml indiquant les champs de la table
max.xml indiquant l'id max de la table
2009/10/14 V4.2 ajout module pagination
Un ajout d'un module permettant de gérer facilement la pagination, include dans le projet source (data/sources/projet )2009/10/12 V4.1 ajout driver pdo mssql
Le driver sgbd/pdo/sgbd_pdo_mssql.php à été ajouté.Une méthode isEmpty a été ajouté à la classe abstract_row pour permettre de verifier qu'un findOne retourne quelquechose (selon la sgbd).
2009/10/10 V4 livraison nouvelle version
Nouveau site mkFramework pour la version 4 du framework.Un framework encore plus objet qu'auparavant, plus souple qu'avant.
Une documentation refaite de A à Z
Présentation
1.Un framework, kesako ?
C'est tout un environnement de travail :
Il comprend :
- une librairie bien fournie pour vous économiser du code et du temps
- une structure de développement déjà établie
- une construction flexible, évolutive et réutilisable (modules,plugins)
2.Un framework pourquoi faire ?
La première réponse est : pour vous faciliter la vie bien sûr :)
- en mettant à votre disposition une librairie pour améliorer votre confort de programmation
- en améliorant votre rapidité de développement : (vous ne codez plus de zéro, économie de code grâce aux librairies)
- en cadrant et homogénéisant votre travail (structure oblige)
- en organisant votre application: chaque fichier a sa place
3.Le menu siYouPlait ^_^
Inclut dans le coffret :
- architecture MVC séparation Modèle, Vue Controller
- gestion intégrée du cache
- gestion intégrée de la sécurisation des pages via un accès protégé par login/mot de passe (module secure)
- structure évolutive avec deux types : modules et plugin
- des librairies vous facilitant: le traitement de fichier, l'envoi de mail, la pagination, l'ajax...
- gratos : un template download permettant de forcer le téléchargement de ladite page (export excel...)
- gratos : un module secure permettant de sécuriser une page via un accès restreint derrière login/pass
- gratos : un plugin gérant le rss déjà intégré lors de la création de votre première application ;)
4.Des objets/librairies bien pratiques ;)
- _dir : vous permet de gerer un repertoire (listage, creation...)
- _file : pour gerer les fichiers (creation,ecriture,lecture...)
- plugin_auth : pour gerer l'authentification
- plugin_date : pour faciliter la manipulation de date
- plugin_html : pour faciliter la generation d'elements html
- plugin_routing : appele pour gerer l'url rewriting
5.C'est bien beau et la prise en main ?
Pour utiliser d'autres frameworks, j'ai voulu viser la facilité de prise en main
Pour cela :
- Une doc vous présentant l'ensemble des objets et leurs fonctions
- Des tutoriaux pour vous faciliter l'apprentissage
- Des exemples pour expliquer de façon concrète
- Une rubrique commentKonFait pour répondre aux questions que vous vous poser
- Une application vierge créée contient deja un lot de pages d'exemple facilitant l'apprentissage (on ne part pas de zéro)
6.C'est tout ?
Mais non ce n'est pas tout, pour vous faciliter l'adoption de ce framework :
Je vous ai développé un chti builder, le MkFrameworkBuilder (clin d'oeil au commandeEnLigneOphobe)
Il vous permettra :
- De créer un environnement vierge (avec quelque pages d'exemple)
- De générer la couche modèle de votre application
- De générer le CRUD pour vos tables
- De générer un/des module(s) avec sa/ses action(s)
Et tout ca en deux trois clic, pas de ligne de commande à saisir ;)