Kilka razy pytałem, próbowałem, nic nie wychodziło, no i w końcu się udało pytanie brzmi czy da się to skrócić, zrobić lepiej?
PS. nazwy klas są mylne :)
Użycie:
$table=new table($db);
// $table->tabela->kolumna->_wartość->wybrane pole;
//u mnie może być np tak:
echo $table->player->gold->_200->id_user;
kod class
<?php
/**
* Wszelkie prawa zastrzeżone PhpStorm, Maku
* Date: 2015-09-06
* Time: 20:47
* Project: PhpStorm,htdocs
*/
class table {
private $db;
function __construct($db){
$this->db=$db;
}
function __get($table){
$x=new fields($this->db);
$x->table=$table;
return $x;
}
}
class fields{
public $table;
private $db;
function __construct($db){
$this->db=$db;
}
function __get($column){
$x=new col($this->db);
$x->column=$column;
$x->table=$this->table;
return $x;
}
}
class col{
public $column;
public $table;
private $db;
function __construct($db){
$this->db=$db;
}
function __get($val){
$var=str_replace("_","",$val);
$query=$this->db->prepare('SELECT * FROM '.$this->table.' WHERE '.$this->column.'=?');
$query->bindParam(1,$var,PDO::PARAM_INT);
$query->execute();
$x=$query->fetch(PDO::FETCH_OBJ);
return $x;
}
}
wiem tutaj mam tylko do liczb (może być tez do wartości txt), można powiedzieć że wystarczyłaby zwykła funckja ale tak to lepiej wygląda i lepiej się używa, czekam na jakieś komentarze :)