Accès à une variable externe dans une méthode
Posté : 15 oct. 2010, 13:21
Bonjour,
Tout d'abord, j'utilise un fichier sql_tables.php, que j'inclue tout en haut de mon index.php, et qui ressemble à ceci :
Et j'ai une classe Card :
Mais je reçois l'erreur suivante :
Est-ce que cela veut dire que je vais devoir ajouter un "global $tables;" dans chacune des mes méthodes de chacune de mes classes qui font appel à une requête SQL ? Il n'y a pas un moyen de simplifier tout cela ?
Tout d'abord, j'utilise un fichier sql_tables.php, que j'inclue tout en haut de mon index.php, et qui ressemble à ceci :
<?php
$tables["cards"] = $config["db_prefixe"]."cards";
$tables["config"] = $config["db_prefixe"]."config";
?>
Cela me permet de pouvoir modifier le noms de mes tables simplement, à un seul endroit, sans avoir à le modifier dans chaque requête.Et j'ai une classe Card :
class Card {
//--- Class Attributes
var $id;
var $value;
var $color;
//--- Class Constants
var $const_image_path = "../images/cards/";
// --------------------------------------------------------------------
//--- Constructor
function __construct($value, $color) {
$this->value = $value;
$this->color = $color;
$this->id = sql_query(sprintf("SELECT card_id FROM ".$tables["cards"]." WHERE card_value = '%s' AND card_color = '%s'", $this->value, $this->color), true);
}
// --------------------------------------------------------------------
//--- Clear Method
function clear() {
$this->id = 0;
$this->value = "";
$this->color = "";
}
// --------------------------------------------------------------------
//--- Display Method
function display() {
echo "<img src=\"".$const_image_path.$this->value.$this->color."\" alt=\"".$this->value.$this->color."\" />";
}
}
Dans le constructor, je vais chercher l'identifiant de la carte, en fonction de sa valeur et de sa couleur, fournies au moment de l'instanciation :
$card = new Card("K", "s");
Et dans cette requête, j'utilise évidemment la variable définie dans mon fichier de tables, $tables["cards"].Mais je reçois l'erreur suivante :
Mais si je rajoute un "global $tables;" en début de méthode, plus de problème.Notice: Undefined variable: tables in D:\www\Projects\poker\common\classes\class.card.php on line 29
Est-ce que cela veut dire que je vais devoir ajouter un "global $tables;" dans chacune des mes méthodes de chacune de mes classes qui font appel à une requête SQL ? Il n'y a pas un moyen de simplifier tout cela ?