Débuter avec Yii 2.0 sur XAMPP Windows Portable

Auteur : Jonathan KALFA
Date : 25/11/2014 | Mis à jour : 17/02/2020
Mots clés : yii2, composer, template, xampp, usb
Article vu 19987 fois

Hey Jonathan, c'est quoi Yii ? Une marque de bière nippone ?

Yii est un framework PHP performant et modulaire qui permet de développer rapidement des applications Web modernes. Le nom Yii signifie « simple et évolutif » en chinois. Il peut également être considéré comme un acronyme pour Yes It is!

Personnellement, j'utilise Yii depuis sa version 1.1.x pour faire des proofs of concept (POC pour les intimes). Totalement satisfait de mon expérience j’ai décidé de baser de vrai projet sur la version 2.0 du framework qui est une entière réécriture de la première mouture.

Et Yii 2.0 alors, ça permet de faire quoi au juste ? Je vais éviter de paraphraser le guide fourni avec le framework (je déteste la duplication de code inutile) alors : https://www.yiiframework.com/doc/guide/2.0/en/intro-yii

Pour ma part voici - entre autres - ce qui m'a séduit dans Yii :
  • L’outils Gii (https://www.yiiframework.com/doc/guide/2.0/en/start-gii) qui permet de générer pas mal de code à partir de modèle SQL, de classes PHP ou autre. (Le CRUD complet surtout !)
  • Bootstrap 3 et 4 font parties intégrantes du framework
  • La facilité de mise en place de web services REST
  • La gestion des bases de données via Active Record
  • Etc.

Mais revenons à nos moutons avec cet article où je vais vous présenter ma manière de déployer, d’installer le framework sur un environnement nomade (clé usb, ou simplement sans utiliser d'installeur) de type Windows.



Prérequis

Installer un package de type Windows, Apache, MySQL, PHP and/or Perl (WAMP). Celui-ci devra avoir PHP en version 5.4.0 ou supérieur : le validateur de Yii vous indiquera ensuite, si besoin, ce qu’il vous manquera en terme de librairie. Préférer du PHP 7.2 minimum quand même... Ca ne mange pas de pain ;)
Pour ma part, j’utilise du XAMPP portable : https://www.apachefriends.org/fr/index.html


1. Installer Composer

Composer est un outil de gestion de la dépendance pour PHP. Il vous permet de déclarer les bibliothèques dont votre projet a besoin et va les installer pour vous. Utiliser Composer est la manière "recommandée" d'installer le Yii framework (et ses extensions). Instruction ici : https://getcomposer.org/doc/00-intro.md#installation-windows

Je vais vous laisser l'installation automatique et vais plutôt vous décrire le déploiement manuel afin de l’installer sur clé usb. Je n’ai bien sûr pas PHP dans mon path (xampp sur clé usb) et n'ai pas fait de scripts .bat pour faire joliment les choses (je souis oune barbare) mais n’hésitez pas à vous faciliter la vie (set path=%path%;e:\xampp\php\).

Je me place donc dans mon répertoire php mobile et récupère à distance composer :
cd E:\xampp\php> 
php -r "readfile('https://getcomposer.org/installer');" | php

Si comme moi vous obtenez un magnifique :
Warning: readfile(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
Warning: readfile(https://getcomposer.org/installer): failed to open stream: Invalid argument in Command line code on line 1

Exécutez plutôt (via http) :

php -r "readfile('http://getcomposer.org/installer');" | php

Notez que vous pouvez aussi activer php_openssl.dll dans votre php.ini ca devrait résoudre le problème.

Créons maintenant le composer.bat basé sur le composer.phar généré précédemment :

E:\xampp\php>echo @php "%~dp0composer.phar" %*>composer.bat

Plus qu’à tester dans la console (potentiellement il faut fermer et rouvrir la console) :

E:\xampp\php>composer -V
Composer version 1.0-dev (a309e1d89ded6919935a842faeaed8e888fbfe37) 2014-10-20 19:16:14

2. Création du squelette d’application Yii 2.0

Maintenant que nous avons Composer, nous allons pouvoir déployer une application Yii. Il existe actuellement deux templates "officiels" de création de squelettes d’application Yii :
Une version basique : https://www.yiiframework.com/doc/guide/2.0/en/start-installation
Une version avancée : https://www.yiiframework.com/extension/yiisoft/yii2-app-advanced/doc/guide/2.0/en

Cette dernière permet de gérer un frontend et un backend distinct, possiblement déployable sur des serveurs différents. Ce template contient aussi quelques fonctionnalités prêtes à l’emploi telles que la gestion des enregistrements des utilisateurs, la restauration de password et autres subtilités. C'est l'installation de ce dernier template que je vais décrire ici, car... qui peut le plus peut le moins.
Note : Les chemins de mes exécutables sont écrits en l'état puisque je n'ajoute pas "exprès" pour ce tutoriel, mes exécutables dans le path et que je n’ai pas créer de setter.bat tout prêt,

On va donc installer cela dans un répertoire web accessible (ex : htdocs) de XAMPP. Toujours dans le répertoire contenant PHP et Composer, lancer :

composer global require "fxp/composer-asset-plugin:~1.1.1"
composer create-project --prefer-dist yiisoft/yii2-app-advanced ../htdocs/my-yii-application

Le script vous demandera vos identifiants github au cours de l’installation. Si vous n’avez pas de compte github, pensez à vous en créer un ^^ (sinon de mémoire il ira quand même prendre les packages de release chez packagist mais bon...)


3. Configurations de base et lancement

3.1. Initialiser l’application en mode développement

Lancer simplement :
E:\xampp\php>php ..\htdocs\my-yii-application\init

Renseigner 0 pour développement puis confirmer.


3.2. Création et paramétrage de la base de données

Via votre XAMPP, lancez votre configurateur de base de données (chez moi phpMyAdmin) et créez une base de données dédiée. Puis éditez my-yii-application/common/config/main-local.php et renseignez-y vos informations de connexion.


Si vous le souhaitez vous pouvez définir un prefix personnalisé au niveau de cette configuration pour toutes vos tables :
'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=toto',
        'username' => 'root',
        'password' => 'xxx',
        'charset' => 'utf8',
        'tablePrefix' => 'xyz_',
],
Les tables automatiquement créées par Yii dans l'étape suivante seront alors préfixées par "xyz_", et cela indique à l'application dans sa globalité que toutes les tables que vous créez vous même sont préfixés. Vous pourrez alors utiliser le nom des tables sans prefix dans votre code : {{tablename}}.

3.3. Alimentation en données d’initialisation

Se placer dans le répertoire du projet et lancer : yii migrate
Note : si comme moi vous n’avez pas PHP dans votre path, éditez yii.bat du répertoire pour mettre le chemin relatif de php.exe (ex : ../../php/php.exe)
Si tout va bien vous avez un joli message à l’écran : Migrated up successfully


3.4. Départ pour la Lune

Normalement en lançant votre environnement XAMPP (si ce n’est pas déjà fait) vous pouvez maintenant accéder aux deux parties de votre applicatif via les URL suivantes :
Frontend : http://localhost/my-yii-application/frontend/web
Backend : http://localhost/my-yii-application/backend/web

Et voilà, vous êtes maintenant prêt (et moi aussi) à bâtir une application complexe à l’aide de ce superbe framework.


Bonus : Templates alternatifs et Yii Tips

Template : Nenad advanced template

Ce qui est bien aussi avec Yii c’est que le templating est autorisé et même encouragé. Personnellement, je n’utilise pas le template de base mais celui de Nenad (https://github.com/nenad-zivkovic/yii2-advanced-template). Pourquoi ? Et bien parce qu’il dispose de quelques particularités qui m’interessaient comme le déploiement sur hébergement mutualisé simplifié ou une gestion des rôles bien plus poussés que les templates de base. Par contre, il n'est plus maintenu :'(.

Plus de détails :
https://www.yiiframework.com/extension/yii2-improved-advanced-template/


Tips : Gestion des environnements

Plutôt que de remplir le main-local.php au niveau du 3.2 vous pouvez le faire directement dans environnements/dev/common/config et environnements/dev/common/config.

Il suffira alors de jouer les commandes :
PRODUCTION : php /path/to/yii-application/init --env=Production overwrite=All
DEVELOPPEMENT : php /path/to/yii-application/init --env=Development overwrite=All
Pour passer simplement d’une configuration à l’autre aisément.


Tips : Derrière un proxy ?

Un proxy qui vous pose problème avec Composer et les mises à jour distantes ? Une solution :
set HTTP_PROXY_REQUEST_FULLURI=1
set HTTPS_PROXY_REQUEST_FULLURI=0
set HTTP_PROXY=http://user:password@proxy.url.or.ip:port
En fonction des URL à accéder il faut jouer avec les valeurs, voire ajouter le HTTPS_PROXY également.

J'espère que tout cela vous servira autant qu'à moi. Pour l'instant impossible de commenter l'article (je suis en train de développer le widget de commentaire qui va bien). Mais n'hésitez pas à partager ou à me contacter en cas de problème.

Jonathan KALFA
[ @Jokabox | @Jokamax ]

Vous avez aimé ? Partager !

Commentaires

Ajouter un commentaire :


Liste des commentaires :

Pas de commentaires pour le moment :'(
Vous aimez ? Aidez-nous !

Vous aimez nos outils et nos tutoriels ? N'hésitez pas à nous le faire ressentir par un petit geste de temps en temps. :-)

Social Feeling
Publicités
Derniers Commentaires
Pas de commentaires pour le moment :'(