• Не могу вывести данные из mysql через объекты?

    flapflapjack
    @flapflapjack
    на треть я прав
    Сергей
    спасибо, а возможно вы сможете подсказать тоже самое но уже в ООП?


    class DB {
    private $host;
    private $user;
    private $pass;
    private $db;
    private $connection;
    public function __construct($host,$user,$pass,$db)
    {
    $this->host=$host;
    $this->user=$user;
    $this->pass=$pass;
    $this->db=$db;
    }
    
    public function connect()
    {
    $this->connection = @new mysqli($this->host,$this->user,$this->pass,$this->db);
    $this->connection->set_charset('utf8');
    return $this->connection;
    }
    }
    
    
    class News {
    private $connection;
    public function __construct($connection)
    {
    $this->connection=$connection;
    }
    public function get_news()
    {
    $result_set = $this->connection->query('SELECT * FROM news');
    return $result_set->fetch_object();
    }
    }
    
    
    $db=new DB('host', 'un', 'pass', 'db');
    $connection=$db->connect();
    $news=new News($connection);
    
    $news_list=$news->get_news();
    
    
    var_dump($news_list);//операции с объектом, то бишь вывод и т.д. и всякие foreach()


    Изначально может показаться что кода стало больше, но при росте проекта это будет наоборот - короче.

    Вы так же можете использовать и процедурный стиль, но в каждую функцию придется передавать $connection, в ООП же - только классу.

    Кроме того в процедурном стиле у вас будет куча таких функций:
    get_news();
    get_user_id();
    get_id_by_email();
    get_user_id_by_news_id(); и т.д.

    При ООП же всё структурируется согласно классам,

    $news->get_user();
    $user->get_news();

    и т.д.
    Это не тема для тостера, это надо читать хотя бы про MVC
    Ответ написан
    3 комментария