Je suis novice en matière de PHP. J'essaye de créer la base de données de classe et d'appeler d'autres classes à partir de lui. Est-ce que je le fais de la bonne façon?Extension de mysqli et utilisation de plusieurs classes
base de données de classe:
class database extends mysqli {
private $classes = array();
public function __construct() {
parent::__construct('localhost', 'root', 'password', 'database');
if (mysqli_connect_error()) {
$this->error(mysqli_connect_errno(), mysqli_connect_error());
}
}
public function __call($class, $args) {
if (!isset($this->classes[$class])) {
$class = 'db_'.$class;
$this->classes[$class] = new $class();
}
return $this->classes[$class];
}
private function error($eNo, $eMsg) {
die ('MySQL error: ('.$eNo.': '.$eMsg);
}
}
classe db_users:
class db_users extends database {
public function test() {
echo 'foo';
}
}
et comment je l'utilise
$db = new database();
$db->users()->test();
Est-ce la bonne façon ou devrait-il être fait d'une autre manière ?
Merci.
Il semble être rien de mal avec votre code. Je ne suis pas sûr de ce que vous demandez ici. En note, je vous recommande de ne pas étendre mysqli et de le composer dans votre classe. Il ne semble pas que vous gagniez quoi que ce soit de l'étendre à ce stade. – tylermac
Merci pour votre commentaire. La ligne qui m'inquiète est $ db-> users() -> test() ;. Je peux créer de nouvelles classes avec __call() ou devrais-je faire à chaque fois quelque chose comme $ u = new db_users(); $ u-> test(); – Mikk