SOME TROUBLE?
"What strlen
?"
→ Type http://php.net/
+strlen
Lorsque vous ignorez la signification d'une fonction PHP, comme par exemple strlen
,
rendez vous simplement à l'adresse php.net/strlen (ajoutez votre
fonction ou mot clé à la suite de http://php.net
). Vous arriverez alors soit directement sur la page de la fonction
soit sur une liste de fonction et éventuellement dans la recherche du site.
1. La ligne de commande
L'interpréteur PHP peut être utilisé en ligne de commande, ce qui vous permettra de prendre le langage
en main et de faire des tests. Créez un fichier hello.php
et placez-y le contenu suivant:
<?php
// hello.php
echo "Hello world !\n";
Pour exécutez votre code, lancez dans un terminal:
php hello.php
Le message Hello world!
devrait apparaître sur votre écran.
2. Quelques exemples
Parcourez les exemples du dossier exercice1/
, lisez bien les commentaires et explications
et exécutez les pour en comprendre le comportement.
Comme vu en cours, le tableau (array()
ou encore []
)
représente la structure de données la plus importante en PHP.
Il est important de maîtriser parfaitement la création et la manipulation de ces tableaux avant de pouvoir aller plus loin.
Ouvrez à présent le fichier functions.php
. Ce fichier contient des fonctions
dont vous devez écrire le code:
1. somme_entiers($n)
Cette fonction calcule la somme des n premiers entiers et la retourne.
2. somme_tableau($tab)
Cette fonction doit calculer la somme des éléments d'un tableau et la retourner.
3. valeur_min($tab)
Cette fonction doit retourner l'élément le plus petit d'un tableau passé en paramètre.
4. valeur_min_indice($tab)
Cette fonction doit retourner l'indice de l'élément le plus petit d'un tableau passé en paramètre.
5. tri($tab)
Cette fonction trie les éléments du tableau passé en paramètre et les retourne. Elle ne doit pas
utiliser les fonctions de tri de PHP, mais doit en revanche utiliser valeur_min_indice($tab)
.
Note: Comme vous vous en doutez, il s'agit d'un exercice, la fonction ainsi produite ne sera pas très efficace.
Le fichier data.php
contient un grand tableau contenant des personnes
(nom, prénom et age).
Vous pouvez charger ces données dans un script de cette façon:
<?php
$data = require('data.php');
Ecrivez un premier fichier list.php
qui affiche les données sur chaque ligne
sous la forme:
* Prénom Nom (Age)
* Prénom Nom (Age)
* Prénom Nom (Age)
...
Créez un second fichier youngest.php
qui affiche l'individu le prénom, le nom
et l'age de l'individu le plus jeune de vos données.
Créez un fichier names.php
qui affiche tous les prénoms et leur nombre d'occurences
dans le fichier.
Dans cet exercice, on s'intéresse à la gestion d'un magasin. Le code source est en fait un utilitaire en ligne de commande qui permet de naviguer parmi les produits.
Pour commencer, lisez le code source disponible dans le dossier exercice4/ afin d'en comprendre son fonctionnement.
1. Quel est l'interêt du tableau $actions
? Quelle(s) autre(s) méthode aurait pu être employée ?
Ce tableau permet de faire la correspondance entre les actions données au script et les fonction à appeller.
Grâce aux fonctions anonymes (depuis PHP 5.3), cette correspondance peut se faire directement en insérant
les fonctions dans le tableau en tant qu'éléments. Un switch/case
aurait pu être employé ici, mais la
maniabilité n'aurait pas été la même, en effet, l'usage est ainsi capable d'afficher la liste des fonctions disponibles.
2. Dans store.php
, on observe des comparaisons utilisant trois signes = "===
", à quoi cela
sert t-il ?
Cette notation vous permet de comparer le contenu d'une variable ET de son type, par exemple:
<?php
if (0 == null) { // Vrai
echo "0 == null!\n";
}
if (0 === null) { // Faux
echo "0 === null!\n";
}
3. Lisez la documentation de implode()
, à quoi sert cette fonction ? Comment effectuer l'opération inverse ?
implode()
sert à concaténer les éléments d'un tableau à l'aide d'un séparateur. Cette fonction est très
utile pour convertir des tableaux en chaînes de caractères lisible, et dans l'autre sens à l'aide de explode()
obtenir un tableau depuis une telle chaîne.
4. Observez de plus près l'appel à call_user_func_array
,
Est-il possible de faire ce genre de chose dans un langage fortement typé tel que le C ou Java ? Pourquoi ?
Non. Cette fonction est un exemple de ce qu'il est possible de faire à l'aide d'un langage de haut niveau et interprété tel que le PHP.
5. Essayez d'ajouter un produit à l'aide de la commande php store.php add nom_du_produit quantité
. Comment la liste
des produits est-elle sauvegardée ?
La liste des produits est sauvegardée dans products.php
, elle est écrite à l'aide de file_put_contents()
et de var_export()
qui permettent d'écrire la variable dans le fichier telle quelle.
1. Définition du prix
Ajoutez une commande "php store.php set-price [product] [price]
" qui définit le prix d'un produit.
2. Pouvoir enlever des produits
Implémentez une commande "php store.php remove [product] [quantity]
" qui enlève quantity
produit de
nom product
du magasin.
3. Ajout de description
Modifiez le code de manière à ajouter une entrée "description" dans le tableau de chaque produit et ajoutez une commande
"php store.php set-description product "description du produit"
" qui permet de définir la description d'un produit.
4. Recherche de produits
Créez une commande "php store.php search [keyword]
" qui permet d'effectuer une recherche parmi les produits
du magasin par nom ou description et qui affiche la liste des résultats.
5. Import et export CSV
Un fichier CSV est un tableau délimité du type:
"produit1";"12";"32"
"produit2";"102";"11"
A l'aide des fonctions fgetcsv et fputcsv, ajoutez une commande "php store.php import [fichier.csv]
"
et "php store.php export [fichier.csv]
" pour importer et exporter la liste des produits au format CSV.