ФорумСообществоФлейм → Связь между пекейджем и базой данных в фреймворке

Связь между пекейджем и базой данных в фреймворке

  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 27 января 2012 г. 8:06

    Есть фреймворк, есть пекейджи (Packages).
    Package - почти независимый reuse-код, который может быть использован в качестве модуля для проекта.
    Package зависим от фреймворка.

    Иногда Package может потребовать работы с бд
    Предположим Package UserAuth

    Вопрос: как передать "пакету" объект базы данных или что-то ещё чтобы он не был зависим от какой-то бд/orm/etc и просто молча сделал свою работу, например сделал
    select * from users where login="Ivan" and password="asdu9asjda9sdjasduas9dju9"


    Я придумал такой выход:
    Раз Package зависим от фреймворка - нужно создать какой-то контейнер с инструментарием в самом фреймворке и передавать его по необходимости в Package.

    Например:
    DBContainer
    в нём - DBContainer/Crud с функциями select/insert/update/delete, не зависимый от специфичной бд
    и в нём же драйвера DBContainer/Drivers/* со специфичным интерфейсом, которые использует crud

    Показал своё решение в конференции симфони в скайпе, там меня обосрали сказав что я пытаюсь написать Doctrine, и что надо использовать Doctrine и передавать в Package сущности. Но тут есть другие проблемы, которые лично я вижу:
    1. Привязанность кода Package и фреймворка в целом к Doctrine
    2. А что если мне в проекте не надо ORM? А тупо надо "mysql_query" да-да, и что тогда? Как я буду с этой сущностью работать? Откуда я её возьму то.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 27 января 2012 г. 8:17, спустя 10 минут 54 секунды

    интересная тема

    да-да, и что тогда?

    соснуть хуйца, очевидно же)

    Такая тема уже есть, реализована в доктрине2. \Doctrine\Common\Persistence\ObjectManager https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Persistence/ObjectManager.php
    Спустя 71 сек.
    https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md
    Спустя 149 сек.
    Меня больше другое интересует: вот есть модуль блогов. Там у топика есть завязка на автора (сущность юзер). Я хочу подменить эту сущность своим пользователем, как в рамках Doctrine2+Symfony2 это реализовать попроще, не прибегая к http://www.doctrine-project.org/docs/orm/2.0/en/reference/php-mapping.html#static-function
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 27 января 2012 г. 8:18, спустя 1 минуту 47 секунд

    соснуть хуйца, очевидно же)

    И как, помогает?)
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 27 января 2012 г. 8:21, спустя 2 минуты 32 секунды

    не знаю, мы используем орм и не хотим mysql_query писать, ггг
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 27 января 2012 г. 8:23, спустя 1 минуту 52 секунды


    не знаю, мы используем орм и не хотим mysql_query писать, ггг


    mysql_query это я формально показал, просто допустим может быть ситуация когда можно обойтись и без орм
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 января 2012 г. 8:26, спустя 2 минуты 58 секунд

    может быть ситуация когда можно обойтись и без орм

    всегда :D
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 27 января 2012 г. 8:28, спустя 1 минуту 49 секунд


    может быть ситуация когда можно обойтись и без орм

    всегда :D


    попробуй это доказать сообществу симфони
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 27 января 2012 г. 9:13, спустя 45 минут 28 секунд

    Лучше подумайте как можно решить эту проблему
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 27 января 2012 г. 9:35, спустя 21 минуту 31 секунду

    если нет нагрузок, вообще без разницы, есть орм или нету
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 27 января 2012 г. 9:39, спустя 4 минуты 25 секунд

    Короче решил юзать Doctrine2/DBAL, теперь я тоже в рабстве у доктрины
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 27 января 2012 г. 10:10, спустя 31 минуту 22 секунды

    1. Делать свои модули/пакеты конфигурируемыми
    2. Один из параметров конфигурации - подключение к базе
    3. При инициализации модуля передавать ему рабочую конфигурацию вместе с этим самым подключением к базе
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 января 2012 г. 10:59, спустя 49 минут 9 секунд


    если нет нагрузок, вообще без разницы, есть орм или нету
    ага. закешировать и хуй с ним вообще :D
    Сапожник без сапог
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 27 января 2012 г. 11:31, спустя 31 минуту 5 секунд

    я примерно про это и писал в первом посте, но вот симфонисты почему-то это не одобряют =)

    Либо симфонисты далпайопы, либо ты неточно изложил проблему, как и в первом посте, потому что там "примерно про это" я не вижу.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 27 января 2012 г. 14:31, спустя 3 часа 20 секунд

    vasa_c, +1
    да, начальные условия всегда одни и те же, например при одном инстансе бд, он всегда один и тот же, так что потерять независимость от фреймворка в целом, которые и являются проблемой топика, и получить нужную гибкость можно, принимая лишь начальные условия. Хули тут думать, а что там дальше орм или нет - похуй, а вот интерфейсы фреймворка уже позволяются использовать его…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!