<?php
namespace Procedural\Models;
// в душе не ебу на самом деле как работать с этим расширением, пример чисто абстрактный
$mysqli = mysqli_connect ( "example.com" , "user" , "password" , "database" ) ;
function getAllUsers( $mysqli )
{
$sql = "SELECT * FROM users" ;
return $res ;
}
function gettUserById( $mysqli , $id )
{
$sql = "SELECT name, secondName, email FROM users WHERE id = $id " ;
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 ) ;
PD9waHAKbmFtZXNwYWNlIFByb2NlZHVyYWxcTW9kZWxzOwovLyDQsiDQtNGD0YjQtSDQvdC1INC10LHRgyDQvdCwINGB0LDQvNC+0Lwg0LTQtdC70LUg0LrQsNC6INGA0LDQsdC+0YLQsNGC0Ywg0YEg0Y3RgtC40Lwg0YDQsNGB0YjQuNGA0LXQvdC40LXQvCwg0L/RgNC40LzQtdGAINGH0LjRgdGC0L4g0LDQsdGB0YLRgNCw0LrRgtC90YvQuQokbXlzcWxpID0gbXlzcWxpX2Nvbm5lY3QoImV4YW1wbGUuY29tIiwgInVzZXIiLCAicGFzc3dvcmQiLCAiZGF0YWJhc2UiKTsKCmZ1bmN0aW9uIGdldEFsbFVzZXJzKCRteXNxbGkpCnsKCSRzcWwgPSAiU0VMRUNUICogRlJPTSB1c2VycyI7Cgkkc3RoID0gbXlzcWxpX3F1ZXJ5KCRteXNxbGksICRzcWwpOwoJJHJlcyA9IG15c3FsaV9mZXRjaF9hc3NvYygkbXlzcWxpKTsKCXJldHVybiAkcmVzOwp9CgpmdW5jdGlvbiBnZXR0VXNlckJ5SWQoJG15c3FsaSwgJGlkKQp7Cgkkc3FsID0gIlNFTEVDVCBuYW1lLCBzZWNvbmROYW1lLCBlbWFpbCBGUk9NIHVzZXJzIFdIRVJFIGlkID0gJGlkIjsKCSRzdGggPSBteXNxbGlfcXVlcnkoJG15c3FsaSwgJHNxbCk7CgkkcmVzID0gbXlzcWxpX2ZldGNoX2Fzc29jKCRteXNxbGkpOwoJcmV0dXJuICRyZXM7Cn0KCi8v0LTQsNC90L3Ri9C1INC/0L7Qu9GD0YfQsNC10Lwg0YLQsNC6OgokdXNlcnMgPSBnZXRBbGxVc2VycygpOwokdXNlciAgPSBnZXRVc2VyQnlJZCgkaWQpOwoKbmFtZXNwYWNlIE9PUFxNb2RlbHM7CgovL9C/0LjQu9C40Lwg0LrQu9Cw0YHRgS3QvNC+0LTQtdC70Ywg0LTQu9GPINGO0LfQtdGA0LAKCmNsYXNzIFVzZXIKewoJcHVibGljICRuYW1lOwoJcHVibGljICRzZWNvbmROYW1lOwoJcHVibGljICRlbWFpbDsKfQoKLy/Qv9C40LvQuNC8INC60LvQsNGB0YEt0YjQu9GO0Lcg0LTQu9GPINC00L7RgdGC0YPQv9CwINC6INCR0JQKCmNsYXNzIFVzZXJzVGFibGVHYXRlYXdheQp7Cglwcm90ZWN0ZWQgJGRiaDsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQoJewoJCS8v0L/QuNC70LjQvCDQv9C+0LTQutC70Y7Rh9C10L3QuNC1CgkJJHRoaXMtPmRiaCA9IG5ldyBcUERPKCdteXNxbDpob3N0PWxvY2FsaG9zdDtkYm5hbWU9dGVzdCcsICR1c2VyLCAkcGFzcyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldEFsbFVzZXJzKCkKCXsKCQkkc3FsID0gIlNFTEVDVCAqIEZST00gdXNlcnMiOwoJCSRzdGggPSAkdGhpcy0+ZGJoLT5wcmVwYXJlKCJzcWwiKTsKCQkkc3RoLT5leGVjdXRlKCk7CgkJcmV0dXJuICRzdGgtPmZldGNoQWxsKFxQRE86OkZFVENIX0NMQVNTLCAnVXNlcicpOwoKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlckJ5SWQoJGlkKQoJewoJCSRzcWwgPSAiU0VMRUNUIG5hbWUsIHNlY29uZE5hbWUsIGVtYWlsIEZST00gdXNlcnMgV0hFUkUgaWQgPSAkaWQiOwoJCSRzdGggPSAkdGhpcy0+ZGJoLT5wcmVwYXJlKCRzcWwpOwoJCSRzdGgtPmV4ZWN1dGUoKTsKCQlyZXR1cm4gJHN0aC0+ZmV0Y2hBbGwoXFBETzo6RkVUQ0hfQ0xBU1MsICdVc2VyJyk7Cgl9Cn0KCi8v0LTQsNC90L3Ri9C1INC/0L7Qu9GD0YfQsNC10Lwg0YLQsNC6OgokZ2F0ZWF3YXkgPSBuZXcgVXNlcnNUYWJsZUdhdGVhd2F5KCk7CiR1c2VycyA9ICRnYXRlYXdheS0+Z2V0QWxsVXNlcnM7CiR1c2VyID0gJGdhdGVhd2F5LT5nZWF0VXNlckJ5SWQoJGlkKTs=