PHP MMI en français
Published: 2023-10-04 07:14:58


## Sommaire

- [Introduction](#introduction)
- [Les bases du langage](#les-bases-du-langage)
- [Les tableaux](#les-tableaux)
- [Les fonctions](#les-fonctions)


## Introduction

PHP est un langage de programmation qui s'exécute côté serveur. Il est utilisé pour créer des pages web dynamiques. PHP est un acronyme récursif qui signifie "PHP: Hypertext Preprocessor".

## Les bases du langage

### Les variables

Une variable est un conteneur pour stocker des valeurs de données. Elle a un nom et une valeur. Les variables sont créées avec le signe dollar suivi du nom de la variable :

```php
<?php
$nom_de_variable = "valeur"; 
// Ne jamais oublier le point-virgule à la fin de la ligne ! (dans d'autres langages, il n'est pas obligatoire)
?>
```

*(À noter que dans php, il faut ouvrir et fermer les balises php pour que le code soit interprété)*

### Les types de variables

Les variables peuvent stocker différents types de données, et différents types de données peuvent faire différentes choses. PHP prend en charge les types de données suivants :

- String (chaîne de caractères)
- Integer (nombre entier)
- Float (nombre décimal)
- Boolean (booléen)
- Array (tableau)
- Object (objet)
- NULL

Exemple : 

```php
<?php
$nom = "John";
$age = 25;
$flo = 1.85;
$est_majeur = true;
$fruits = array("pomme", "banane", "orange"); 
// ou bien 
$fruits = ["pomme", "banane", "orange"];
$objet = new stdClass();
$rien = null;
?>
```

### Les constantes

Se sont la même chose que les variables, sauf qu'une fois qu'elles sont définies, elles ne peuvent pas être modifiées ou supprimées ultérieurement.

Exemple : 

```php
<?php
const NOM = "John"; 
?>
```

### Les opérateurs

Les opérateurs sont utilisés pour effectuer des opérations sur des variables et des valeurs.
Comme en mathématiques, les opérateurs PHP sont utilisés pour effectuer des opérations arithmétiques, telles que l'addition, la soustraction, la multiplication, la division, etc.

Exemple : 

```php
<?php
$x = 10;
$y = 6;
$z = $x + $y;
echo $z; // Affiche 16
?>
```
*(Il ya bien sûr d'autres opérateurs, comme l'incrémentation, la décrémentation, l'addition, la soustraction, la multiplication, la division, le modulo, etc.)*

Exemple de incrementation et décrémentation : 

```php
<?php
$x = 10;
echo $x++; // Affiche 11
echo ++$x; // Affiche 12
echo $x--; // Affiche 11
echo --$x; // Affiche 10
```

### Les conditions

Les instructions conditionnelles sont utilisées pour effectuer différentes actions en fonction de différentes conditions.
Il y a 3 types d'instructions conditionnelles en PHP :

- if
- else
- elseif
  (D'autre sont disponibles, mais ce sont les plus utilisées) 
les autres sont : switch, ternaire, etc.
- Le ternaire est une condition qui permet de faire un if/else sur une seule ligne.
  - Exemple :
    ```php
    <?php
    $age = 18;
    echo ($age >= 18) ? "Majeur" : "Mineur";
    ?>
    ```
  - Le switch est une condition qui permet de faire un if/else sur plusieurs lignes.
    - Exemple :
      ```php
      <?php
      $age = 18;
      switch ($age) {
        case 18:
          echo "Tu as 18 ans";
          break;
        case 19:
          echo "Tu as 19 ans";
          break;
        default:
          echo "Tu as un autre âge";
      }
      ?>
      ```
      
Pour les if/else/elseif, voici un exemple : 

```php
<?php
$age = 18;
if ($age >= 18) {
  echo "Majeur";
} elseif ($age == 17) {
  echo "Presque majeur";
} else {
  echo "Mineur";
}
?>
```

### Les boucles

Les boucles sont utilisées pour exécuter le même bloc de code encore et encore, aussi longtemps qu'une condition spécifique est remplie.
Il existe 4 types de boucles en PHP :

- for
- foreach
- while
- do...while

Exemple de boucle for : 

```php
<?php
for ($x = 0; $x <= 10; $x++) { // (initialisation; condition; incrémentation)
  echo "Le nombre est : $x <br>";
}
?>
```

Exemple de boucle foreach : 

```php
<?php
$fruits = ["pomme", "banane", "orange"]
foreach ($fruits as $fruit) { // (tableau as variable) donc ici, $fruit est la variable qui va parcourir le tableau $fruits
  echo "$fruit <br>";
}
?>
```

Exemple de boucle while : 

```php
<?php
$x = 1;
while($x <= 5) { // (condition) donc ici, tant que $x est inférieur ou égal à 5, on affiche le nombre
  echo "Le nombre est : $x <br>";
  $x++;
}
?>
```

Exemple de boucle do...while : 

```php
<?php
$x = 1;
do { // (condition) donc ici, tant que $x est inférieur ou égal à 5,
// on affiche le nombre (reprend le principe du while, sauf que la condition est vérifiée à la fin de la boucle)
  echo "Le nombre est : $x <br>";
  $x++;
} while ($x <= 5);
?>
```

### Les fonctions

Une fonction est un bloc de déclarations qui peut être utilisé plusieurs fois dans un script.
Une fonction ne sera pas exécutée immédiatement lorsqu'une page est chargée. Elle sera exécutée par un appel à la fonction.

Exemple de fonction : 

```php
<?php
function direBonjour() {
  echo "Bonjour !"; // Affiche Bonjour !
  // On peut aussi faire un return "Bonjour !"; pour retourner la valeur
}

direBonjour(); // Appel de la fonction
?>
```

### Les tableaux

Un tableau stocke plusieurs valeurs dans une seule variable. Chaque valeur a un identifiant (clé) qui lui est associé. Les tableaux peuvent contenir des chaînes de caractères, des nombres, des objets, des fonctions et même d'autres tableaux.

Exemple de tableau : 

```php
<?php
$fruits = array("pomme", "banane", "orange"); // Tableau indexé
$personnes = ["John", "Doe", "Jane"]; // Tableau indexé (autre syntaxe)
$personne = array("nom" => "John", "age" => 25); // Tableau associatif
// multi-dimensionnel (tableau dans un tableau) 
$hobbies = [
  ["nom" => "John", "age" => 25],
  ["nom" => "Doe", "age" => 30],
  ["nom" => "Jane", "age" => 28]
];
?>
```

Pour parcourir un tableau, on peut utiliser une boucle : 

```php
<?php
$fruits = ["pomme", "banane", "orange"];
for ($i = 0; $i < count($fruits); $i++) {
  echo $fruits[$i] . "<br>";
}
?>
```

Pour parcourir un tableau associatif, on peut utiliser une boucle foreach : 

```php
<?php
$personne = array("nom" => "John", "age" => 25);
foreach ($personne as $key => $value) {
  echo "$key : $value <br>";
}
?>
```

Pour parcourir un tableau multi-dimensionnel, on peut utiliser une boucle foreach : 

```php
<?php
$personnes = [
  ["nom" => "John", "age" => 25],
  ["nom" => "Doe", "age" => 30],
  ["nom" => "Jane", "age" => 28]
];
foreach ($personnes as $personne) {
  echo $personne["nom"] . " a " . $personne["age"] . " ans <br>";
}
?>
```

### Les formulaires

Les formulaires sont utilisés pour collecter des informations auprès des utilisateurs.
Un formulaire HTML contient généralement différents types d'entrées de formulaire, telles que le texte, les cases à cocher, les boutons radio, les boutons d'option, les menus déroulants, etc.

Exemple de formulaire : 

```html
<form action="traitement.php" method="post">
  <label for="nom">Nom :</label>
  <input type="text" id="nom" name="nom">
  <label for="prenom">Prénom :</label>
  <input type="text" id="prenom" name="prenom">
  <input type="submit" value="Envoyer">
</form>
```
Ceci est un formulaire qui va envoyer les données vers le fichier traitement.php en méthode POST.
Les méthodes GET et POST sont les deux méthodes les plus courantes pour envoyer des données à une page PHP.

GET: Les données sont envoyées dans l'URL. (Les données sont visibles dans l'URL)
POST: Les données sont envoyées dans l'en-tête HTTP. (Les données ne sont pas visibles dans l'URL)

Pour récupérer les données d'un formulaire, on peut utiliser la superglobale $_POST : 

```php
<?php
$nom = $_POST["nom"]; // nom correspond à l'attribut name du formulaire (ici, c'est nom) (name="nom")
$prenom = $_POST["prenom"];
echo "Bonjour $prenom $nom !";
?>
```
Pour récupérer les données d'un formulaire en méthode GET, on peut utiliser la superglobale $_GET : 

```php
<?php
$nom = $_GET["nom"]; 
$prenom = $_GET["prenom"];
echo "Bonjour $prenom $nom !";
// Bien sûr, il faut changer la méthode du formulaire en GET
?>
```
Des superglobales sont des variables internes qui sont toujours disponibles dans tous les contextes. Elles sont prédéfinies dans PHP.
Il existe de nombreuses superglobales, mais les plus utilisées sont $_POST et $_GET.
Voici les autres qui te seront utiles :

- $_SERVER
- $_REQUEST
- $_SESSION
- $_COOKIE
- $_FILES

Nous pouvons par exemple rajouter une condition pour vérifier si le formulaire a été envoyé : 

```php
<?php
if (isset($_POST["nom"]) && isset($_POST["prenom"]) !empty($_POST["nom"]) && !empty($_POST["prenom"])) { // isset() permet de vérifier si la variable existe et !empty() permet de vérifier si la variable n'est pas vide
  $nom = $_POST["nom"]; 
  $prenom = $_POST["prenom"];
  echo "Bonjour $prenom $nom !";
}
?>
```

### Les sessions

Une session est un moyen de stocker des informations (dans des variables) pour être utilisées sur plusieurs pages.
Contrairement aux cookies, les informations ne sont pas stockées sur l'ordinateur de l'utilisateur.

Pour démarrer une session, on utilise la fonction session_start() : 

```php
<?php
session_start();
?>
```
Et pour stocker des informations dans une session, on utilise la superglobale $_SESSION : 

```php
<?php
session_start();
$_SESSION["nom"] = "John";
$_SESSION["prenom"] = "Doe";
?>
```
Pour récupérer les informations d'une session, on utilise la superglobale $_SESSION : 

```php
<?php
session_start();
echo $_SESSION["nom"]; // Affiche John
echo $_SESSION["prenom"]; // Affiche Doe
?>
```

*Ceci est bien evidemment peu complexe comparé à ce que l'on peut faire avec les sessions, mais c'est un début.*

### Les cookies

Un cookie est souvent utilisé pour identifier un utilisateur. Un cookie est un petit fichier texte stocké sur l'ordinateur de l'utilisateur.
Lorsque l'utilisateur accède à une page web, son nom peut être récupéré à partir du cookie.

Pour créer un cookie, on utilise la fonction setcookie() : 

```php
<?php
setcookie("nom", "John", time() + 3600); // nom, valeur, durée (ici, 1 heure)
?>
```
Pour récupérer un cookie, on utilise la superglobale $_COOKIE : 

```php
<?php
echo $_COOKIE["nom"]; // Affiche John
?>
```