Поругайте Static wrapper

Зачем новый файл для одной строчки?
грубо так, (конечно там много сервисов, не одна команда дай по id)
PHP:
<?= {new UserForm( $service->getById( $_GET['user_id']) )}->rende(); ?>
вроде логичные вещи, построй форму по индификатору пользователя. а откуда пользователя брать?
или еще проще, всего 2 буквы DB а засрали весь сервис
 
Последнее редактирование:
изменим немного подход
PHP:
// на уровне создания того или иного сервиса мы определим адаптер
$service = new UsersService( DB::getAdapter('users_database') );
$service2 = new UsersService( DB::getAdapter('workers') );
PHP:
// этот кусок работает какбы всегда
public function getById($id){
    return new User ($this->adapter->getRow( 'select * from users ...', $id) );
}

PHP:
<?= {new UserForm( $service->getById( $_GET['user_id']) )}->rende(); ?>
<?= {new UserForm( $service2->getById( $_GET['user_id']) )}->rende(); ?>
 
Последнее редактирование:
  • Like
Реакции: Dez
Не, ну давайте все-таки рассмотрим предположение, что на похапе пишут не только в стиле оопе
 
Фанат, возможно ты прав, мне тоже порою хочется забыть все и писать просто. но я такойже как ты
"почемуб не написать один раз правильно" (с) Фанат или его девушка
один раз написал сервис и он работает. на сколько хорошо у меня это получается с этими ООП выкрунтасами совершенно другой вопрос
 
Зачем вообще варпер нужен ?
Для PDO - например хотим кешировать запросы, мерять время их выполнения.
Нeжен ли варпер на варпер (как для safemysql) ? Скорей всего нет.

2-10 разных баз данных это как-то мало с реальностью связано. Обычно там уже фасады или свое апи. Хотя может, я не в теме.

Имхо, варпер нужен не для много баз данных, а совсем для других целей.
 
Последнее редактирование:
Но вообще да - такой подход сильно проще. И для нескольких бд подходить идеально
Это делает код грязнее, но использование удобнее.

Почему бы не сделать менеджер баз (если база одна или их мало - то просто базу) и инжектить его автоматически в модель?
И просто использовать $this->dbManager/$this->db?
 
Покажи пример кода с работой с тремя базами.
Absinthe, а если нету его, значит ли это что такой вариант невозможен ???
Примера нету.

У меня вот гостевуха есть, там в админке нет правки постов (не нужна была тогда, не нужна и сейчас, 5 лет уже прошло, и так и не понадобилось) даже самой админки по сути нету. Значит ли это что правки постов и админки не существует ?
 
Vladson, мы знаем, что ты продвинутый пользователь и используешь phpMyAdmin
 
Код:
db()->query();
vs.
DB::query()
на два движения больше! :)

Но вообще да - такой подход сильно проще. И для нескольких бд подходить идеально
И автокомплит с function db работает.

Кстати, class DB со статиками прекрасно сводится к function db со статической переменной:

PHP:
/**
 * @return SafeMysql
 */
function db(array $init_params = null) {
   static $instance = null;
   if (null !== $init_params) $instance = new SafeMysql($init_params);
   if (!instance) throw new Exception("Not initialized");
   return $instance;
}
 
Нормально всё, только на static переписать и реализоваться facade как в laravel, либо вариант fixxxer с функцией.
 
Моё личное мнение. Я бы стал пользоваться вариантом:

PHP:
//инициализация (один раз, где-то в загрузке проекта):
DB::initHandle('first_base', $params);
DB::initHandle('second_base', $params);

//использование
DB::$handle->query(...); //использует по-умолчанию first_base
DB::handle('second_base')->query(...); //обращаемся ко второй базе

(написал "handle" т.к. не знаю как по другому обозвать)

При всём уважении, но "db()->query()" выглядит, эммм, эээ, нууу, не красиво, + сообщение под пунктом 1.
 
Последнее редактирование:
Ё-моё!
Вот это будет ещё проще!
PHP:
function init () {
 mysql_connect(...) or die("Can't"); 
}
// Your model code
$res = mysql_query(....);
 
Сверху