PHP : Quelques trucs et astuces

Partager cet article

Temps estimé pour la lecture de cet article : 27 min

Salut les geeks ! Aujourd’hui, j’aimerais faire un article, sur des petites techniques php que j’utilise quotidiennement qui me permettent de me simplifier la vie. Ce qui est drôle c’est que la plupart de ces techniques je ne les ai pas apprises à l’école et c’est bien dommage…

La fonction de débogage : print_r()

Une des choses qui m’a le plus choqué, c’est que la plupart des professeurs que j’ai eu qui ont tenté de nous enseigner le php, ne nous parlait jamais des fonctions clés que tout développeur web doit connaître, s’il en est une qui est incontournable, c’est bien la fonction print_r() qui permet d’afficher toutes les données d’une variable (que ce soit un objet ou un tableau). On utilise alors la balise <pre> de html afin d’afficher toutes ces informations de manière agréable.

echo "<pre>";
print_r($_POST);
echo "</pre>";

Exemple d’affichage avec la variable $_POST :

Array
(
    [name] => ludo
    [mail] => ludo@gmail.com
    [post] => valid
)

Argument de fonction optionnel

Il est possible en php (comme en C++), de préciser un argument optionnel. Cela permet ainsi d’appeler une fonction sans forcément avoir besoin de préciser l’argument qui nous intéresse moins. Par exemple, ici la TVA en général est de 20% mais comme elle peut varier, dans un cas général on ne précisera qu’un argument mais au besoin, on pourra l’appeler en faisant calculTVA(20,1.05).

function calculTVA($somme,$taxe=1.20) {
    echo $somme*$taxe;
}
calculTVA(20);

Fonctions à nombre d’arguments variable

Il est possible de créer des fonctions dont le nombre d’arguments va changer. Par exemple, ici pour notre fonction somme, cela peut-être intéressant. On peut ainsi sommer autant d’éléments que l’on veut. La fonction func_num_args() va permettre de récupérer le nombre d’arguments passés et la fonction func_get_args() va permettre de récupérer chaque argument dans un tableau.

function sommes() {
    $res = 0;
    $size = func_num_args();
    foreach(func_get_args() as $v) {
        $res += $v;
    }
    echo $res;
}
sommes(5,5,5,5,1,15,5);

La fonction extract(array &$array,int $flags)

La fonction extract() est très intéressante, elle permet par exemple pour un tableau associatif de créer pour chaque clé, une variable du même nom dont la valeur est celle associée à la clé. En clair prenons l’exemple ci-dessous le résultat sera :

wordpress
cakephp
prestashop 
$tab = array(
    "cms" => "wordpress",
    "framework" => "cakephp",
    "ecommerce" => "prestashop"
);
extract($tab);
echo $cms."<br />".$framework."<br />".$ecommerce;

La fonction list(mixed $var1, …)

La fonction list() permet d’affecter les variables d’un tableau dans de nouvelles variables. Par exemple ici, $drink = « coffee », $color = « brown » et $power = « caffeine ».

$info = array('coffee', 'brown', 'caffeine');
list($drink, $color, $power) = $info;

La fonction glob(string $pattern, int $flags = 0)

La fonction glob() est très peu connue et c’est bien dommage car elle est extrêmement puissante ! Elle permet de rechercher tous les fichiers qui vérifient le masque pattern. On peut également préciser un flag, qui va permettre d’augmenter nos possibilités. Ici par exemple dans notre exemple, le flag GLOB_BRACE permet de rechercher soit le pattern a soit le pattern b, il nous permet donc ici de rechercher tous les png ou tous les gif dans le dossier img.

$fichiers = glob("img/*.{png,gif}",GLOB_BRACE);
echo "<pre>";
    print_r($fichiers);
echo "</pre>";

Le résultat de l’exécution de ce bout de code est le suivant :

Array
(
    [0] => img/arrow.png
    [1] => img/close.png
    [2] => img/list.png
    [3] => img/pattern.png
    [4] => img/thumbnails.png
    [5] => img/loader.gif
)

La fonction realpath(string $path)

La fonction realpath est peu connue et c’est bien dommage. Elle permet de remplacer toutes les références /./, /../ et / puis de retourner le chemin absolu ainsi trouvé. Ici par exemple la fonction nous retourne le chemin absolu vers le fichier tests.php. Ici on a : /var/www/html/web/tests.php.

$path = realpath("tests.php");
echo $path;

Les fonctions explode(string $delimiter, string $string, int $limit) et implode(string $glue, array $pieces)

La fonction explode permet de scinder une chaine en fonction d’un pattern donné. Par exemple, ici on a les résultats du tirage d’un loto sous la forme : 16-17-27-42-44-8. On veut récupérer chaque nombre de manière indépendante, on va pouvoir le faire grâce à la fonction explode(). On peut bien entendu faire l’inverse grâce à la fonction implode().

$loto = "16-17-27-42-44-8";
echo $loto."<br />";
$tab = explode("-",$loto);
echo "<pre>";
print_r($tab);
echo "</pre>";

Rendu :

16-17-27-42-44-8
Array
(
    [0] => 16
    [1] => 17
    [2] => 27
    [3] => 42
    [4] => 44
    [5] => 8
)

La fonction substr(string $string, int $start, int $length)

La fonction substr permet de couper une chaîne d’un caractère A jusqu’à un autre caractère B. Elle est généralement très utilisé notamment par exemple pour permettre de faire le résumé d’une chaîne, on conservera par exemple les 50 premiers caractères. Ici on obtiendra : 3.14.

$chaine = "3.14159265359";
$chaine = substr($chaine, 0, 4);
echo $chaine;

La fonction array_map($callback, $array)

Une des fonctions que j’ai découverte récemment permet, pour chaque élément d’un tableau d’effectuer une fonction donnée. Ainsi dans notre exemple, on va mettre la première lettre de chaque chaîne de caractères en majuscules grâce à la fonction ucfirst().

$tab = array(
    "latex",
    "java",
    "php"
);
$tab = array_map("ucfirst", $tab);
echo "<br /><br />";
echo "<pre>";
print_r($tab);
echo "</pre>";

Résultat :

Array
(
    [0] => Latex
    [1] => Java
    [2] => Php
)

La fonction filter_var(mixed $variable, int $filter)

La fonction filter_var est également peu utilisée. Elle est pourtant très puissante. Elle permet de filtrer des données. Elle renverra la donnée si elle est filtrable, sinon elle retournera false. Là où la fonction est intéressante, c’est par exemple pour vérifier la saisie d’un formulaire, notamment car l’option $filter de la fonction bien que fonctionnel fait tout l’intérêt de celle-ci. En effet, il propose des regex déjà toutes faites. Dans notre exemple, on vérifie la saisie de l’adresse mail grâce à cette fonction. L’ensemble des flags pour l’argument $filter sont définies ici.

$email = "ludo@gmail.com";
if(filter_var($email,FILTER_VALIDATE_EMAIL)) {
    echo "ok";
} else {
    echo "ko";
}

La fonction scandir(string $directory, int $sorting_order)

Au lieu d’utiliser les fonctions fopen et compagnie pour parcourir un dossier, scandir permet de faire cela de manière efficace, de surcroît la fonction permet de trier les fichiers. Par défaut cela est fait de manière alphabétique, si on veut changer cet ordre, on peut le faire grâce à l’argument $sorting_order.

echo "<pre>";
var_dump(scandir('.'));
echo "</pre>";

Le rendu de mon test :

Array
(
    [0] => .
    [1] => ..
    [2] => bdd_connect.php
    [3] => css
    [4] => filtre.php
    [5] => img
    [6] => index.php
    [7] => js
    [9] => popin.php
    [10] => post.php
)

Voila, c’est tout pour moi !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.