PHP 5

Simon Vieille

Contact : simon@deblan.fr

Licence : BSD

En gros, PHP c'est quoi ?

Comment installer PHP ?

4 logiciels seront nécessaires pour travailler ensemble : un serveur web (Apache), PHP (version 5.4 minimum), MySQL et PhpMyAdmin.

Apache va vous permettre d'accéder à du contenu de votre machine via le protocole HTTP. PHP sera utilisé par Apache pour exécuter les documents PHP pour délivrer le résultat à votre navigateur. MySQL est un serveur de base de données. PhpMyAdmin est une GUI pour administrer MySQL.

Si vous être un warrior, ça sera via votre gestionnaire de paquet. Typiquement, la démarche à suivre sous Debian :

$ sudo aptitude install apache2 libapache2-mod-php5 mysql-server phpmyadmin

Les Mac users et les Windowsiens devront installer MAMP/WAMP qui contient tout ce qu'il faut avec en prime une jolie interface graphique pour (presque) tout gérer.

Comment installer PHP ?

Que ce soit Apache ou PHP, il est important de configurer correctement ces logiciels. Suivant le système que vous utilisez et la manière dont ces logiciels ont été installés, des différences de configuration notables existent.

Il faudra donc prendre le temps d'affiner tout ça.

À vous de jouer :)

Quelques règles de base

Un code bien écrit est un code qui se débug plus facilement. Pour ne pas partir dans tous les sens, on va utilier la convention PSR-2 : https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

Vous devrez versionner votre code. Libre à vous de choisir votre outil de versionning. Je vous recommande GIT mais vous pouvez aussi jouer avec Subversion (SVN). Soit vous passez par un service externe (Github par exemple) ou bien en locale (votre machine).

Quand vous avez un problème :

  1. (Re)lire la documentation (RTFM n'est pas une légende) : http://php.net/
  2. Rechercher sur la toile car vous n'inventerez aucun nouveau problème
  3. Me payer une bière et me poser des questions

Écrire du PHP

Il est toujours écrit dans des balises dédiées :

<p>Voici du code html <?php et du code PHP (qui ne fonctionne pas tel quel) ?></p>

Il existe aussi la notation <? ?> et parfois <% %> (mais c'est ultra déprécié).

Quand un document est terminé par du PHP, il n'est pas nécessaire d'utiliser la balise de fermeture.

Les commentaires

Pour rédiger des commentaires, plusieurs écritures sont possibles :

// Un commentaire sur une seule ligne
# Un autre commentaire sur une seule ligne
/* Un commentaire
sur plusieurs
lignes
*/

Les variables

Les variables permettent de stocker des données. En PHP, une variable peut recevoir plusieurs type de données qu'on verra dans le slide suivant.

Pour déclarer une variable, on utiliser le $ suivi de son nom. Il ne peut comporter que des lettres non accentuées (majuscules et minuscules), des chiffres et des "_". Les chiffres ne sont pas autorisés en début de nom.

<?php
$monPrenom = "Simon";
$monNom = "Vieille";
$monAge = 25;
$une_autre_variable = "foo"; // la norme PSR-2 déprécie cette écriture non camelCase
            

À tout moment le contenu d'une variable pour être modifié.

Les types de données

Un type est ce qui caractérise une donnée. Suivant le type d'une donnée, des opérations seront possibles ou pas. PHP n'est pas un langage fortement typé et il permet de faire du typage dynamique. Voici quelques exemples.

$entier = 10;
$flottant = 5.5; // pas "." font office de virgule
$chaine = "Je suis une chaine de caractères";
$tableau = array(
    "première valeur",
    "deuxième valeur",
    3,
); // ou bien ["a", "b", "c",] depuis PHP 5.4
$booleen = true;
$autreBooleen = false;
$objet = new DateTime();
$closure = function() {
    // code
}

Les opérateurs de calcul

Les opérateurs d'assignation

Les opérateurs d'incrémentation

$a = 0;
echo $a++; // Affiche : 1
echo $a; // Affiche : 1

$b = 1;
echo $b--; // Affiche : 0
echo $b; // Affiche : 0

$c = 0;
echo ++$c; // Affiche : 0
echo $c; // Affiche : 1

$d = 1;
echo --$d; // Affiche : 1
echo $d; // Affiche : 0

Les opérateurs de comparaison

Les opérateurs logiques

Les structures de contrôle

Pour exécuter du code suivant certaines conditions, on utilise des structures de contrôle.

if (condition) {
    // code
} elseif (autreCondition) {
    // code
} else {
    // code
}
switch (valeur) {
    case test1: 
        // action si test1 vrai
        break;
    case test2; 
        // action si test2 vrai
        break;
    case default: // action par défaut
}
$valeur = condition ? siVrai : siFaux;

Les boucles

La boucle est une structure qui permet de faire d'itérer du code suivant une condition ou une donnée.

for ($u = 0; $u < 10; $u++) {
    // le code qui s'exécute tant que la condition est vraie
}

while (condition) {
    // code qui s'exécute tant que la condition est vraie
}

do {
    // code qui s'exécute une fois puis tant que la condition est vraie
} while (condition);

foreach ($tableauDeDonnees as $index => $valeur) {
    // parcours toutes les valeurs de $tableauDeDonnees
}

Les fonctions

Une fonction permet de définir une logique métier qui évoluera suivant des paramètres. Une fonction peut retourner une ou des données. Le nom d'une fonction suit les même règles que celles d'une variable.

function maFonction($parametre1, $parametre2) {
    // du code
}

Quand return est exécuté, la fonction s'arrête de s'exécuter.

function maFonction() {
    // du code exécuté
    return uneValeur;
    // du code qui ne sera jamais exécuté
}

Portée des variables (leur accessibilité)

$foo = "bar";
$bob = 5;
$foo = $bob;
echo $foo; // Affiche : boo

$bob = 5;
function boby() {
    $bob = 6;
    echo $bob;
}
boby(); // Affiche : 6
echo $bob; // Affiche : 5

$bob = 5;
function boby($bob) {
    echo $bob;
}
boby(10); // Affiche : 10
echo $bob; // Affiche : 5

Portée des variables (leur accessibilité)

$bob = 5;
function boby(&$toto) {
    $toto = 6;
    echo $toto;
}
boby($bob); // Affiche : 6
echo $bob; // Affiche : 6

$bob = 5;
function boby() {
    global $bob;
    echo $bob;
}
boby($bob); // Affiche : 6
function descriptionPersonne($prenom, $age) {
    if ($age < 18) {
        return "$prenom est jeune, seulement $age an".(($age > 1) ? "s" : "");
    }
    if ($age >= 50) {
        return "Eh, bientôt la retraite {$prenom} ;)";
    }
    $resultat = 'Salut '.$prenom.' :)';
    if ($age === 18) {
        $resultat.= ' Mais j\'y pense, tu as tout juste 18 ans :O !';
    }
    return $resultat;
}
$personnes = array(                               /* Affichera :
    "Kevin"  => 18,                                * Salut Kevin :) Mais j'y pense, tu as tout juste 18 ans :O !<br>
    "Paul"   => 50,                                * Eh, bientôt la retraite Paul ;)<br>
    "Marion" => 12,                                * Marion est jeune, seulement 12 ans<br>
);                                                 */
foreach ($personnes as $prenom => $age) {
    echo descriptionPersonne($prenom, $age), '<br>';
}