Nette framework : présentation et installation

nette.pngNette est un framework MVP* qui a le vent en poupe en République tchèque (d’où il vient) et en Slovaquie. Il existe depuis 2009 et Sitepoint le place dans le trio de tête des frameworks PHP en 2015, malgré quelques carences au niveau des performances, comme pour Zend et Laravel :

 

sp-compare.gif

Bien que la Belgique et la France ignorent pour le moment ce framework, je l’ai testé pour comparer son fonctionnement à ceux de Laravel, CodeIgniter et CakePHP.

Nette comporte pléthore de qualités : parmi elles, sa prise en main d’une simplicité déconcertante, sa sécurité manifeste, ses outils de débogage (Tracy), sa documentation complète et accessible (qui commence au b.a.-ba, contrairement à certaines…) et sa communauté anglophone plutôt dynamique.

A l’inverse de certains frameworks, il fonctionne selon une architecture Modèle-Vue-Présentation, version évoluée de l’architecture Modèle-Vue-Contrôleur.

mvp.png

Le MVP garde le même principe que le MVC mais élimine l’interaction entre la vue et le modèle. Le relais est assuré par la présentation qui organise les données à afficher dans la vue. Plus d’informations.

Dans cet article et ceux qui suivront, vous trouverez des mémos d’utilisation du framework, comme je l’ai fait en son temps pour CakePHP.


Installer Nette Framework

  • Installer Composercomposer.png
  • Installer Nette : depuis l’invite de commandes, accéder au dossier www/htdocs de votre wamp/xampp et exécuter la commande suivante :
    composer create-project nette/sandbox [app_name]
  • Mettre à jour Nette : la dernière version stable du framework sera installée en exécutant à partir du dossier générique de l’appli la commande suivante :
    composer update
  • Installer les composants nécessaires au bon fonctionnement du framework :
    composer require latte/latte
  • Établir la connexion à la base de données en INNODB : adapter les paramètres sous app > config > config(.local)*.neon (* Si vous testez l'appli en local ou en production). Attention à l'indentation au sein du fichier .neon !

Prérequis

⚠ Mémo :

nette-structure.png

  • Il y a autant de vues qu’il y a d’actions/méthodes dans le presenter.
  • Il y a autant de dossiers de vue (sous Templates) qu’il y a de presenters.

Standards de programmation

  • L'indentation est importante : elle se fait par tabulations et non par espaces.
  • Les lignes de codes sont limitées à 120 caractères (idéalement, 80 ou moins).
  • Les constantes TRUE, FALSE, NULL sont toujours en capitales.
  • Nette recommande l'utilisation de l'UTF-8 et de l'ASCII en guise d'encodage de caractères.
  • L'utilisation de <?php est la seule manière valable d'amorcer du code en php (oubliez les '<?= ?>').
  • La fermeture ?> doit être omise dans les fichiers qui contiennent du PHP exclusivement.
  • Limitez-vous à une déclaration par ligne.
  • Aucune espace ne doit traîner à la fin des lignes de code.
  • Les noms de fichiers et noms de classes doivent être identiques.
  • La déclaration de variables, fonctions ou constantes globales est fortement déconseillée.
  • @, l'opérateur de contrôle d'erreur (ou de mise en veilleuse) doit être commenté comme suit :
@mkdir($dir); // @ - directory may exist

Conventions de nommage

  • Les classes doivent être déclarées en UpperCamelCase.
  • Les propriétés et méthodes doivent être déclarées en lowerCamelCase.
  • Les opérateurs de comparaison forts (===/!==) sont préférés aux autres (==/!=).
  • Les structures conditionnelles utilisent elseif et non else if.
  • Se limiter à des caractères alphanumériques dans le choix des noms.
  • Les variables doivent être explicites : $i, $n ne sont admises que pour faire office de compteur dans les boucles.
  • La concaténation demande un espace avant et après le "."
  • Les tableaux doivent être déclarés avec la déclaration entre [], avec des espaces après chaque virgule pour augmenter la lisibilité du code : [$un, $deux, $trois]
  • Le nom des interfaces commence toujours par un "I". Exemple : IPresenter.
  • Les mots-clés "extends" et "implements" doivent être déclarés sur la même ligne que le nom de la classe.

Sources