Здравствуйте. Есть вопрос по структуре php кода.
У меня есть подключение к БД с использованием PDO.
$pdo = ...; //сохраним подключение в переменной pdo
Далее есть класс User
class User {
function __construct() {
//тут нужно сделать запрос к БД
}
}
Проблема в том, что не пойму как оптимальнее делать запрос в классе User, а точнее -- как получить доступ к переменной $pdo
Делать через $GLOBAL['pdo']? Или в каждой функции прописывать global $pdo;? Или есть что-то более эффективное?
PHP
Структура PHP кода
function __construct($pdo) {
/$pdo = bla bla bla
}
/$pdo = bla bla bla
}
Евгений Гущин
а как-нибудь без передачи в параметрах функции можно? )
Евгений Гущин
спасибо =)
Я не пробовал, но, может быть, завести функцию, которая возвращает этот объект?
Что-то вроде синглтона.
При первом вызове функция создает объект и сохраняет его для последующего использования.
А при последующих вызовах — просто достает готовый объект, который сама же и создала.
При таком подходе объект не будет создаваться, если его ни разу не используют.
Что-то вроде синглтона.
При первом вызове функция создает объект и сохраняет его для последующего использования.
А при последующих вызовах — просто достает готовый объект, который сама же и создала.
При таком подходе объект не будет создаваться, если его ни разу не используют.
Евгений Гущин
дело в том, что подключение к базе будет всегда
Для этого используют паттерн регистри который возвращает сохраненные значения но если тебе в каждой функции, классе юзер, надо использовать соединение с базой данных то это уже хреновый подход к разработке класса
Евгений Гущин
понимаю, что класс юзер не должен ничего знать про базу данных, но это не nodejs и тут идет борьба за максимальное сокращение кода =)
да просто функцию сделай, любая программа это множество подпрограмм, в данном случае функций. а вообще если для себя делаешь рекомендую быстренько копировать "нехилый" код скрипта в новый документ и просто переписать переменные или что то в этом роде, бывают случаи когда нужно по тому же самому алгоритму проделать еще какие либо действия, а продумывать для себя оптимизацию кода.... ну в общем и программа делается сложней и код и времени уходит немало.
Евгений Гущин
спасибо, но я привык всё делать качественно и оптимизировано =)
Cделать функцию а-ля
protected function connect() {
$db = require ROOT . '/config/db.php';
$model = new PDO($db['dsn'], $db['user'], $db['password']);
$model->exec('SET CHARSET utf8');
return $model;
}
и в других функциях применять, например
public function findAll() {
$db = $this->connect();
$query = $db->query("SELECT * FROM " . $this->tableName);
$className = get_class($this);
return $query->fetchAll(PDO::FETCH_CLASS,$className);
}
Но лучше такие функции описывать в базовом классе - а-ля class Model, а в более частных случаях наследоваться типа User extends Model, ну чтоб удобнее и приятнее было, ну хотя тут на вкус и цвет товарищей нет)
protected function connect() {
$db = require ROOT . '/config/db.php';
$model = new PDO($db['dsn'], $db['user'], $db['password']);
$model->exec('SET CHARSET utf8');
return $model;
}
и в других функциях применять, например
public function findAll() {
$db = $this->connect();
$query = $db->query("SELECT * FROM " . $this->tableName);
$className = get_class($this);
return $query->fetchAll(PDO::FETCH_CLASS,$className);
}
Но лучше такие функции описывать в базовом классе - а-ля class Model, а в более частных случаях наследоваться типа User extends Model, ну чтоб удобнее и приятнее было, ну хотя тут на вкус и цвет товарищей нет)
Евгений Гущин
а на кой классу User наследовать от какой-то модели? это неверно
Похожие вопросы
- Помогите с PHP кодом! Где косяк?
- При написании php кода для отправки записи в базу данных выходит ошибка
- Помогите с php кодом, плиз) хотел функцию транслитерации написать, только ошибка выходит и все :(
- Допиливать самописный движок на PHP, код к которому писали 14 лет - стоит ли соглашаться на такую работу?
- СРОЧНО! ЧТО ВЫПОЛНЯЕТ ЭТОТ PHP КОД?
- Как оптимизировать структуру сайта php. на готовом шаблоне
- Как заменить html код с помощью php файла.
- Изучаю php. В книжке дан код программы, объясните для чего строка? (код внутри)
- Помогите с кодом PHP
- Что означает "%0A" в коде php?