<?php
namespace Procedural\Models;
// в душе не ебу на самом деле как работать с этим расширением, пример чисто абстрактный
$mysqli = mysqli_connect("example.com", "user", "password", "database");

function getAllUsers($mysqli)
{
	$sql = "SELECT * FROM users";
	$sth = mysqli_query($mysqli, $sql);
	$res = mysqli_fetch_assoc($mysqli);
	return $res;
}

function gettUserById($mysqli, $id)
{
	$sql = "SELECT name, secondName, email FROM users WHERE id = $id";
	$sth = mysqli_query($mysqli, $sql);
	$res = mysqli_fetch_assoc($mysqli);
	return $res;
}

//данные получаем так:
$users = getAllUsers();
$user  = getUserById($id);

namespace OOP\Models;

//пилим класс-модель для юзера

class User
{
	public $name;
	public $secondName;
	public $email;
}

//пилим класс-шлюз для доступа к БД

class UsersTableGateaway
{
	protected $dbh;

	public function __construct()
	{
		//пилим подключение
		$this->dbh = new \PDO('mysql:host=localhost;dbname=test', $user, $pass);
	}

	public function getAllUsers()
	{
		$sql = "SELECT * FROM users";
		$sth = $this->dbh->prepare("sql");
		$sth->execute();
		return $sth->fetchAll(\PDO::FETCH_CLASS, 'User');

	}

	public function getUserById($id)
	{
		$sql = "SELECT name, secondName, email FROM users WHERE id = $id";
		$sth = $this->dbh->prepare($sql);
		$sth->execute();
		return $sth->fetchAll(\PDO::FETCH_CLASS, 'User');
	}
}

//данные получаем так:
$gateaway = new UsersTableGateaway();
$users = $gateaway->getAllUsers;
$user = $gateaway->geatUserById($id);