Pour installer le framework SALT il faut :
- Copier les fichiers du framework sur le serveur Apache. Les fichiers peuvent être hors de l'arborescence WEB pour une meilleure sécurité mais doivent être accessibles en lecture à l'utilisateur WEB
- Indiquer les lignes suivantes au debut des fichiers PHP dans lesquels on souhaite utiliser le framework (ces lignes peuvent se trouver dans un fichier commun inclus par tout les fichiers)
<?php
// Le chemin doit être absolu par rapport au serveur et peut se trouver en dehors du DOCUMENT_ROOT d'Apache
set_include_path(get_include_path().PATH_SEPARATOR.'/absolute/path/to/salt/framework');
require_once('Salt.class.php'); // initialisation du framework
use salt\In; // La classe de gestion des entrées/sorties, fortement recommandée
use salt\Salt; // La classe principale de SALT
Salt::config(); // chargement des constantes de SALT et configuration de l'internationalisation
$Input = In::getInstance(); // Création de l'objet $Input pour la gestion des entrées/sorties
Lors de l'initialisation on peut également souhaiter :
Définir les chemins relatifs jusqu'à la racine du site.
Cela permettra de gérer plus facilement les ressources en les référençant toujours avec la même URL relative :
<CONSTANTE><chemin/absolu/depuis/la/racine/du/site>
CONSTANTE peut avoir deux valeurs :
- Le chemin relatif du fichier PHP en cours d'exécution vers la racine du site, par la suite on appelera ce chemin RELATIVE.
Ce chemin doit être utilisé dans les fonctions include et require de PHP
- Le chemin relatif de l'URI demandée vers la racine du site, par la suite on appelera ce chemin WEB_RELATIVE
Ce chemin doit être utilisé dans la construction des URL affichée sur la page WEB : les attributs href et src des balises a, img, link, script, etc...
Voici un exemple pour bien comprendre la différence :
On dispose d'un site avec plusieurs pages. Dans chaque page on commence par réaliser un
require_once du fichier
lib/init.php qui va se charger d'initialiser la page.
Les pages sont de cette forme :
/index.php // La racine du site, inclus lib/init.php
/.htaccess // Redirige les URL inexistantes vers /404/index.php (Cas avec redirection)
/404/index.php // Page vers laquelle sont redirigés les fichiers inexistants. Inclus ../lib/init.php
/lib/init.php // Le fichier PHP qui sera inclus par toutes les pages. Définit les constantes RELATIVE et WEB_RELATIVE. Utilise RELATIVE pour inclure qux/index.php
/qux/index.php // Fichier affichant des liens vers les pages de tests du site à l'aide de WEB_RELATIVE ainsi que le contenu des 2 constantes
/foo/index.php // Cas 1 sans redirection, 1 niveau : inclus ../lib/init.php
/foo/bar/index.php // Cas 1 sans redirection, 2 niveaux : inclus ../../lib/init.php
/foo/bar/baz/index.php // Cas 1 sans redirection, 3 niveaux : inclus ../../../lib/init.php
/bar/ // N'existe pas : cas 2 avec redirection, 1 niveau
/bar/qux/ // N'existe pas : cas 2 avec redirection, 2 niveaux
/bar/qux/quux // N'existe pas : cas 2 avec redirection, 3 niveaux
| Nom | URL GET | RELATIVE | WEB_RELATIVE |
| Cas 1, sans redirection, Racine |
/ |
./ |
./ |
| Cas 1, sans redirection, 1 niveau |
/foo/ |
../ |
../ |
| Cas 1, sans redirection, 2 niveaux |
/foo/bar/ |
../../ |
../../ |
| Cas 1, sans redirection, 3 niveaux |
/foo/bar/baz/ |
../../../ |
../../../ |
| Cas 2, avec redirection, 1 niveau |
/bar/ |
../ |
../ |
| Cas 2, avec redirection, 2 niveaux |
/bar/qux/ |
../ |
../../ |
| Cas 2, avec redirection, 3 niveaux |
/bar/qux/quux/ |
../ |
../../../ |
Il est possible de tester cela et de voir le code source de toutes les pages en suivant
ce lien.
La valeur de RELATIVE est
../ dans le cas avec redirection car on a redirigé non pas vers la racine du site mais vers
404/index.php.
Il faut donc descendre d'un niveau pour revenir sur la racine du site.
Pour récupérer les valeurs de RELATIVE et WEB_RELATIVE, il faut appeler les API suivantes de Salt :
<?php
// le nombre à passer aux méthodes relativePath et webRelativePath est le nombre de dossier depuis la racine du site pour
// arriver au fichier contenant cette déclaration. Par exemple, ici, on est dans un fichier /lib/init.php.
// Si on était dans /init.php on indiquerait 0 (valeur par défaut)
// Si on était dans /foo/bar/init.php on indiquerait 2
define('RELATIVE', Salt::relativePath(1));
define('WEB_RELATIVE', Salt::webRelativePath(1));
La valeur retournée par ces API terminera systématiquement par un slash (/), même pour la racine du site, car la valeur vaudra alors ./
Surcharger des constantes de SALT
Avant l'appel à
Salt::config(), on peut redéfinir les constantes de SALT :
<?php
define('salt\CHARSET', 'ISO-8859-1'); // le charset par defaut est UTF-8
Les constantes redéfinissables sont dans le fichier
conf/config.php du framework.
Changer la langue de SALT
Pour changer la langue de SALT, il faut redéfinir la constante
salt\I18N_LOCALE avant d'appeler
Salt::config() :
<?php
define('salt\I18N_LOCALE', 'fr'); // la locale par défaut est "en"
// le fichier lang/fr.yml doit exister et contenir toutes les entrées de lang/en.yml
Plus d'informations sur la classe d'internationalisation
Charger des classes PHP de notre application à l'aide de SALT
Avec la méthode
Salt::addClassFolder on peut indiquer à SALT un dossier dans lequel il va trouver des classes PHP.
<?php
Salt::addClassFolder(RELATIVE.'lib');
On peut spécifier le namespace des classes PHP avec le 2ème paramètre (NULL par défaut)
On peut spécifier le suffixe des fichiers à chercher avec le 3ème paramètre ('.class.php' par défaut)
Par exemple :
<?php Salt::addClassFolder(RELATIVE.'lib', 'Mon\Namespace', '.class');
va chercher dans le dossier
lib tout les fichiers terminant par '.class' et
va les enregistrer comme appartenant au namespace Mon\Namespace.
L'autoload de SALT mappera donc les classes et les fichiers suivants :
- lib/foo/A.class : Mon\Namespace\A
- lib/foo/bar/B.class : Mon\Namespace\B
Déclarer l'instance de la classe In
Cette instance pourra ensuite être référencée partout au lieu d'appeler
In::getInstance().
<?php
use salt\In; // La classe de gestion des entrées/sorties, fortement recommandée
$Input = In::getInstance(); // Récupération du singleton