Extérieur de la Variable d'Accès en Classe PHP
Considérons la situation suivante
fichier: ./include/functions/table-config.php
contenant:
.
.
$tablePages = 'orweb_pages';
.
.
fichier: ./include/classes/uri-resolve.php
contenant:
class URIResolve {
.
.
$category = null ;
.
.
function process_uri() {
...
$this->category = $tablePages;
...
}
.
.
}
fichier: ./settings.php
contenant:
.
.
require_once(ABSPATH.INC.FUNC.'/table-config.php');
require_once(ABSPATH.INC.CLASS.'/uri-resolve.php');
.
.
Ce travail sera. Je veux dire, permettra l'accès à l' $tablePages de process_uri() acceptable ou que ça va donner de faux résultats.
Veuillez suggérer des corrections ou des solutions de contournement en cas d'erreur peuvent se produire.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
Global (non recommandé), une constante ou un singleton classe de configuration.
Simplement y compris
donnera à votre variable locale afin de ne pas être visibles à l'intérieur d'autres classes. Si vous utilisez une constante:
TABLE_PAGES sera disponible pour l'accès en lecture dans l'application, quelle que soit la portée.
L'avantage d'une constante au cours d'une variable globale, c'est que vous n'avez pas à vous inquiéter à ce sujet étant remplacée dans d'autres domaines de l'application.
Juste pratique courante
est la portée vrai problème pour les fonctions définies à l'extérieur de la classe?
non, les fonctions déclarées hors d'une classe sont dans l'espace de noms global
OriginalL'auteur
Utiliser le mot clé global:
Dans le fichier où vous êtes à l'affectation de la valeur.
Et dans l'autre fichier:
Aussi, toutes les variables globales sont disponibles dans la
$GLOBALS
tableau (qui lui-même est une superglobale), de sorte que vous pouvez accéder à la variable globale n'importe où, sans l'aide du mot clé global, en faisant quelque chose comme ceci:Cela sert aussi à rendre plus difficile à écraser accidentellement la valeur de la mondiale. Dans l'exemple précédent, les modifications apportées à
$tablePages
allait changer la variable globale. De nombreuses à un bug de sécurité a été créé par le fait d'avoir un mondial$user
et de l'écraser avec un plus puissant des informations de l'utilisateur.L'autre, même approche plus sûre est de fournir de la variable dans le constructeur de URIResolve:
J'aime la dernière astuce pour passer au constructeur. Important. Thumbs up.
OriginalL'auteur
OriginalL'auteur