Développement web avancé
Structure - PHP
2526 · Dekens Antoine
Templating
__DIR__
Une des constantes magiques représentant le chemin absolu du répertoire dans lequel se trouve le fichier PHP courant. Le chemin ne contiendra pas de slash final, sauf si c'est le répertoire racine.
Utilisation recommandée dans les chemins de fichiers.getcwd()
La méthode getcwd( ) renvoit le dossier depuis lequel le script a été invoqué.
include
Une fois que notre projet à plusieurs pages, nous nous retrouvons à écrire plusieurs fois les mêmes parties en HTML qui sont similaires entre elles comme la navigation ou le bas de page. Le mot clé include permet de d'insérer le code d'un fichier dans un autre :
Comme cela ne retourne pas d'erreur fatale, cette méthode est à prévilégier pour inclure du code non critique au projet.Syntaxe
<?php
// Inclus le code du fichier "header.php" situé
// dans un dossier "partials" depuis le dossier courant via __DIR__
include __DIR__ . "/partials/header.php";
?>
require
Le mot clé require fonctionne comme inclue sauf qu'il renvoit une erreur fatale si le fichier visé est manquant.
À prévilégier pour des fichiers nécessaire au bon fonctionnement du projet.Syntaxe
<?php
// Inclus le code du fichier "database.php" situé
// dans un dossier "config" depuis le dossier courant via __DIR__
require __DIR__ . "/config/database.php";
?>
include_once & require_once
Ces 2 mots clés fonctionnenent comme leur version non _once, excepté que si le fichier à déjà été inclus, il ne le sera pas une seconde fois.
Ceci est une bonne pratique pour éviter les inclusions multiples.Syntaxe
<?php
// Si non inclues, ajoute le code du fichier "database.php"
// situé un dossier "config" depuis le dossier courant via __DIR__
require_once __DIR__ . "/config/database.php";
?>
Insérer des conditions
Voici une technique pour insérer un bloc de code HTML sous condition sans passer par un long echo :
<div class="wrapper">
<!-- Débute une condition -->
<?php if( isset($data['article'] ) ) { ?>
<!-- Notre bloc ajouté conditionnellement -->
<article>
<h2>Titre de l'article</h2>
<p>…</p>
<a href="#">…</a>
</article>
<!-- Termine la condition -->
<?php } ?>
</div>
Insérer des boucles
Avec la même technique, nous pouvons facilement dupliquer des élement via une boucle insérée :
<ul class="article__list">
<!-- Débute une boucle foreach -->
<?php foreach( $articles as $article ){ ?>
<!-- Nous ajoutera autant de fois <li> que d'éléments dans $articles -->
<li class="article__item">
<article>
<h2><?php $article[ 'title' ] ?></h2>
<p><?php $article[ 'description' ] ?></p>
<a href="<?php $article[ 'link' ] ?>"><?php $article[ 'linkText' ] ?></a>
</article>
</li>
<!-- Termine la boucle foreach -->
<?php } ?>
</ul>
Structure de dossier
env.php
Avoir un fichier centralisant nos constantes (nom de base de données, utilisateur, mot de passe, etc.) nous évitera les répétitions et les erreurs potentiels liés aux fautes de frappes.
database.php
La première chose que doit contenir ce fichier est une fonction de connexion via PDO que nous pourrons utiliser une fois inclus dans les différentes vues où nous voulons interagir avec notre base de données.