Cours 02 - Fonctions

Cours 02 - Fonctions

https://github.com/heig-vd-progserv1-course

Support de cours · Présentation (web) · Présentation (PDF)

L. Delafontaine, avec l'aide de GitHub Copilot.

Ce travail est sous licence CC BY-SA 4.0.

HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Retrouvez plus de détails dans le support de cours

Cette présentation est un résumé du support de cours. Pour plus de détails, consultez le support de cours.

HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Objectifs (1/2)

  • Décrire ce qu'est une fonction en programmation
  • Déclarer une fonction en PHP
  • Appeler une fonction en PHP
  • Passer des paramètres à une fonction en PHP
  • Utiliser une valeur de retour
  • Expliquer ce qu'est une portée de variable
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Objectifs (2/2)

  • Utiliser des variables globales
  • Savoir où trouver la documentation sur les fonctions prédéfinies en PHP
  • Utiliser des fonctions prédéfinies en PHP
  • Réutiliser du code avec des fonctions
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Qu'est-ce qu'une fonction ? (1/2)

  • Ensemble d'instructions pour effectuer une tâche spécifique
  • Inspirée des fonctions mathématiques :
    • est un paramètre
    • , , etc.
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Qu'est-ce qu'une fonction ? (2/2)

  • En programmation :
    • Définie par un nom
    • Peut accepter des paramètres
    • Peut retourner une valeur
  • Permet de structurer le code
  • Peut être réutilisé à plusieurs endroits
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Déclarer une fonction en PHP (1/2)

  • En PHP, une fonction est déclarée avec le mot-clé function
  • Suivi du nom de la fonction
  • Suivi des paramètres entre parenthèses (())
  • Suivi du corps de la fonction entre accolades ({})
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Déclarer une fonction en PHP (2/2)

<?php
function hello() {
    echo "Hello, world!<br>";
}
// Équivalent en Java
public class Main {
    public static void hello() {
        System.out.println("Hello, world!");
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Appeler une fonction en PHP (1/3)

  • Pour appeler une fonction, il suffit d'écrire son nom suivi de parenthèses (())
  • Les paramètres peuvent être passés entre les parenthèses
  • Une fonction peut être appelée plusieurs fois dans le code
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Appeler une fonction en PHP (2/3)

<?php
function hello() {
    echo "Hello, world!<br>";
}

hello(); // Affiche "Hello, world!"
hello(); // Affiche "Hello, world!"
hello(); // Affiche "Hello, world!"
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Appeler une fonction en PHP (3/3)

// Équivalent en Java
public class Main {
    public static void hello() {
        System.out.println("Hello, world!");
    }

    public static void main(String[] args) {
        hello(); // Affiche "Hello, world!"
        hello(); // Affiche "Hello, world!"
        hello(); // Affiche "Hello, world!"
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Passer des paramètres à une fonction (1/3)

  • Une fonction peut accepter des paramètres
  • Les paramètres sont des valeurs que la fonction peut utiliser pour effectuer une tâche
  • Les paramètres sont déclarés entre les parenthèses de la fonction, séparés par des virgules (,)
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Passer des paramètres à une fonction (2/3)

<?php
function hello($name) {
    echo "Hello, $name!<br>";
}

hello("Alice"); // Affiche "Hello, Alice!"
hello("Bob"); // Affiche "Hello, Bob!"
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Passer des paramètres à une fonction (3/3)

public class Main {
    public static void hello(String name) {
        System.out.println("Hello, " + name + "!");
    }

    public static void main(String[] args) {
        hello("Alice"); // Affiche "Hello, Alice!"
        hello("Bob"); // Affiche "Hello, Bob!"
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Retourner une valeur depuis une fonction (1/3)

  • Une fonction peut retourner une valeur
  • La valeur retournée peut être utilisée dans le code appelant (= le code qui appelle la fonction)
  • La valeur retournée (unique) est définie avec le mot-clé return
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Retourner une valeur depuis une fonction (2/3)

<?php
function square($x) {
    return $x * $x;
}

$result = square(3);

echo $result; // Affiche 9
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Retourner une valeur depuis une fonction (3/3)

// Équivalent en Java
public class Main {
    public static int square(int x) {
        return x * x;
    }

    public static void main(String[] args) {
        int result = square(3);

        System.out.println(result); // Affiche 9
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Paramètres optionnels (1/2)

  • En PHP, il est possible de définir des paramètres optionnels
  • Les paramètres optionnels ont une valeur par défaut
  • Les paramètres optionnels doivent être définis après les paramètres obligatoires
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Paramètres optionnels (2/2)

<?php
function hello($name = "world") {
    echo "Hello, $name!<br>";
}

hello(); // Affiche "Hello, world!"
hello("Alice"); // Affiche "Hello, Alice!"
// Équivalent en Java

// Il n'est pas possible de définir des paramètres optionnels en Java.
// Ceci est spécifique à PHP.
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Passer plusieurs paramètres à une fonction (1/3)

  • Une fonction peut accepter plusieurs paramètres
  • Les paramètres sont séparés par des virgules (,)
  • Les paramètres sont passés dans le même ordre que leur déclaration
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Passer plusieurs paramètres à une fonction (2/3)

<?php
function add($x, $y) {
    return $x + $y;
}

$result = add(3, 5);

echo $result; // Affiche 8
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Passer plusieurs paramètres à une fonction (3/3)

// Équivalent en Java
public class Main {
    public static int add(int x, int y) {
        return x + y;
    }

    public static void main(String[] args) {
        int result = add(3, 5);

        System.out.println(result); // Affiche 8
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Portée des variables (1/3)

  • La portée d'une variable est l'endroit où elle peut être utilisée
  • Une variable déclarée à l'intérieur d'une fonction ne peut être utilisée qu'à l'intérieur de cette fonction
  • Une erreur survient si une variable est utilisée en dehors de sa portée
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Portée des variables (2/3)

<?php
function square($x) {
    return $x * $x;
}

echo $x; // Erreur : variable $x non définie
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Portée des variables (3/3)

// Équivalent en Java
public class Main {
    public static int square(int x) {
        return x * x;
    }

    public static void main(String[] args) {
        System.out.println(x); // Erreur : variable x non définie
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Variables globales (1/3)

  • Une variable globale est une variable déclarée en dehors de toute fonction
  • Une variable globale peut être utilisée à l'intérieur d'une fonction à l'aide du mot-clé global
  • À éviter autant que possible, car cela rend le code difficile à comprendre et à maintenir
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Variables globales (2/3)

<?php
$x = 42;

function square() {
    global $x;

    $x = $x * $x;
}

square();

echo $x; // Affiche 1764
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Variables globales (3/3)

// Équivalent en Java
public class Main {
    public static int x = 42;

    public static int square() {
        x = x * x;
    }

    public static void main(String[] args) {
        square();

        System.out.println(x); // Affiche 1764
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions prédéfinies en PHP (1/3)

  • PHP fournit de nombreuses fonctions prédéfinies
  • Ces fonctions permettent de réaliser des tâches courantes
  • La documentation officielle de PHP est une ressource précieuse pour trouver des fonctions prédéfinies
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions prédéfinies en PHP (2/3)

<?php
$length = strlen("Hello, world!");

echo $length; // Affiche 13
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions prédéfinies en PHP (3/3)

// Équivalent en Java
public class Main {
    public static void main(String[] args) {
        String s = "Hello, world!";
        int length = s.length();

        System.out.println(length); // Affiche 13
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions mathématiques (1/2)

  • PHP propose de nombreuses fonctions mathématiques
  • Par exemple, abs, sqrt, pow, min, max, etc.
  • Documentation complète
  • Exemple : sqrt
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions mathématiques (2/2)

<?php
$result = sqrt(16);

echo $result; // Affiche 4
// Équivalent en Java
public class Main {
    public static void main(String[] args) {
        double result = Math.sqrt(16);
        System.out.println(result); // Affiche 4.0
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions sur les chaînes de caractères (1/2)

  • PHP propose de nombreuses fonctions pour manipuler des chaînes de caractères
  • Par exemple, strlen, substr, str_replace, strtolower, strtoupper, etc.
  • Documentation complète
  • Exemple : strupper
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions sur les chaînes de caractères (2/2)

$result = strtoupper("hello, world!");

echo $result; // Affiche "HELLO, WORLD!"
// Équivalent en Java
public class Main {
    public static void main(String[] args) {
        String result = "hello, world!".toUpperCase();

        System.out.println(result); // Affiche "HELLO, WORLD!"
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions sur les variables (1/3)

  • PHP propose de nombreuses fonctions pour manipuler des variables
  • Par exemple, isset, empty, unset, is_array, is_string, etc.
  • Documentation complète
  • Exemple : isset
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions sur les variables (2/3)

<?php
$var = 42;

if (isset($var)) {
    echo "The variable is defined.";
} else {
    echo "The variable is not defined.";
}

echo "<br>"; // Retour à la ligne HTML
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions
if (isset($undefined)) {
    echo "The variable is defined.";
} else {
    echo "The variable is not defined.";
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Fonctions sur les variables (3/3)

// Équivalent en Java
public class Main {
    public static void main(String[] args) {
        int var = 42;

        if (var != null) {
            System.out.println("The variable is defined.");
        } else {
            System.out.println("The variable is not defined.");
        }

        System.out.println(); // Retour à la ligne
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions
        int undefined;

        if (undefined != null) {
            System.out.println("The variable is defined.");
        } else {
            System.out.println("The variable is not defined.");
        }
    }
}
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Réutiliser du code avec des fonctions (1/2)

  • Les fonctions permettent de réutiliser du code
  • Le code est plus facile à lire et à maintenir
  • Il est possible d'importer des fonctions définies dans d'autres fichiers avec la directive require
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Réutiliser du code avec des fonctions (2/2)

<?php
// Fichier `functions.php`
function hello($name) {
    echo "Hello, $name!<br>";
}
<?php
// Fichier `index.php`
require "functions.php"; // On inclut le fichier

// La fonction `hello` est définie dans le fichier importé
// et peut être utilisée ici
hello("Alice");
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Différence entre include et require

  • Il est possible d'importer des fichiers avec include et require
  • include : si le fichier n'est pas trouvé, un avertissement est émis
  • require : si le fichier n'est pas trouvé, une erreur fatale est émise
  • Nous conseillons de toujours utiliser require
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Conclusion

  • Les fonctions permettent de structurer et réutiliser du code
  • Les fonctions peuvent accepter des paramètres et retourner des valeurs
  • Fonctions personnelles ou des fonctions prédéfinies
  • La portée des variables est importante à comprendre
HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Questions

Est-ce que vous avez des questions ?

HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

À vous de jouer


Pour le mini-projet ou les exercices, n'hésitez pas à vous entraidez si vous avez des difficultés !

HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Sources (1/3)

HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Sources (2/3)

HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0
Cours 02 - Fonctions

Sources (3/3)

HEIG-VD - ProgServ1 Course 2024-2025 - CC BY-SA 4.0

URLs

Illustrations