Maison > développement back-end > tutoriel php > Comment puis-je accéder aux variables globales dans une classe PHP ?

Comment puis-je accéder aux variables globales dans une classe PHP ?

Barbara Streisand
Libérer: 2024-12-17 01:13:24
original
542 Les gens l'ont consulté

How Can I Access Global Variables Within a PHP Class?

Accès aux variables globales à partir d'une classe

Dans votre code, vous rencontrez une erreur lorsque vous essayez d'accéder à une variable définie en dehors de la classe au sein d'une méthode de classe. Ce problème se pose car l’accès aux variables globales directement depuis une classe n’est généralement pas recommandé en PHP. Cependant, il existe quelques méthodes pour y parvenir :

Injection de dépendances

L'approche privilégiée consiste à implémenter l'injection de dépendances. Cela implique de transmettre l'objet de base de données comme argument au constructeur de classe, permettant à la classe d'accéder et d'utiliser la variable sans avoir besoin d'une portée globale.

class Paginator
{
    private $db;

    public function __construct(DB_MySQL $db)
    {
        $this->db = $db;
    }

    // ...
}

// Usage:
$db = new DB_MySQL("localhost", "root", "", "test");
$pagination = new Paginator($db);
Copier après la connexion

Injecter une instance dans des méthodes

Alternativement , vous pouvez injecter l'instance de base de données directement dans la méthode qui la nécessite.

class Paginator
{
    public function get_records($q, DB_MySQL $db)
    {
        // ...
    }
}

// Usage:
$pagination = new Paginator();
$pagination->get_records("SELECT * FROM `table`", $db);
Copier après la connexion

Utilisation de Global Scope

Bien que cela soit généralement déconseillé, vous pouvez utiliser le mot-clé global pour accéder aux variables globales au sein d'une méthode de classe. Cependant, cette technique peut encombrer le code et le rendre moins maintenable.

class Paginator
{
    public function get_records($q)
    {
        global $db;

        // ...
    }
}

// Usage:
$db = new DB_MySQL("localhost", "root", "", "test");
$pagination = new Paginator();
Copier après la connexion

N'oubliez pas que l'utilisation de variables globales à partir d'une classe présente des inconvénients potentiels, notamment des problèmes de dépendance, une testabilité réduite et des problèmes de clarté du code. Par conséquent, il est recommandé d'envisager l'injection de dépendances ou l'injection d'instances dans des méthodes lors de l'accès à des variables depuis l'extérieur d'une classe en PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal