Bonjour,
Je pars d'un script faisant N fois la même connexion à la BDD. C'est pas bon car ça pose un gros risque d'erreur de saisie et de plus, on va avoir N connexions au lieu d'une seule.
J'avais en tête un script de connexion "statique" de ABCIWEB. Une petite recherche m'a donné ce lien : https://www.developpez.net/forums/d2...sse-connexion/. J'ai donc créé une classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
namespace marion;
// Pour enregistrer le $_POST en session et éviter de re saisir tous les champs en cas d'erreur de saisie
session_start();
 
// Classe de connexion
class C_PDO
{
    private static $connexion;
 
    private static function newC_PDO()
    {
        // VARIABLES A REMPLACER
        $hostname = 'localhost';
        $database = "users";
        $username = 'root';
        $password = 'root';
 
 
        // Options de configuration PDO utilisées dans les exemples
 
        $pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_ASSOC; // gestion des erreurs liées au fetch
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;  // gestion des exceptions
 
 
        self::$connexion  = new PDO('mysql:host='.$hostname.';dbname='.$database.';charset=utf8', $username, $password, $pdo_options);
    }
 
    public static function getC()
    {
        if(self::$connexion == NULL) {self::newC_PDO();}
        return self::$connexion;
    }
}
Le script ne comporte pas de namespace. J'en ai donc rajouté un (ligne 2).
Ensuite, pour l'utiliser dans mon code, je place en début de fichier
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?php
declare (strict_types=1);
 
use marion\C_PDO;
...
puis plus bas pour l'utiliser dans une fonction :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
function addUserData(string $prenom, string $nom, string $adresse, string $cp, string $ville, string $telephone, string $email, string $password): bool {
    $database = C_PDO::getC();
...
Mais
Fatal error: Uncaught Error: Class "marion\C_PDO" not found in C:\projets\arnaudmarionmvc\users.php on line 41
Quelle est la raison, SVP ?