[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите по symfony
Ron
Здравтвуйте, профи!

Тут недавно обсуждались преимущества фреймворков и возникла жаркая дикуссия под давлением которой хотелось бы плотно изучить один из них. Очень уважаемые люди заступались за фреймворки. Игнорировать их точку зрения было бы неправильно.

Поэтому выбрал один из наиболее распространенных - symfony 2.

Вопрос заключается в следующем. В MVC привык видеть модели как основное место бизнес логики. Там же и запросы к СуБД. Из контроллера подключаешь нужную модель, дальше один или несколько вызовов и результат передаешь во View. Ничего подобного в symfony не обнаружил. Присутствуют entity+doctrine сверху.

Хочу нормальные модели! С ванильными SQL запросами. Как этого добиться? Поговаривают надо создавать сервисы и регистрировать в конфигах. Наверняка есть способ более прямой, что ли...

Bolik
Попробуй привинтить doctrine к своей mvc. Заодно и узнаешь что это такое, там все довольно просто. Я так и начинал учить симфони, собирал все по частям.

Мне больше всего понравились аннотации и работа с ними в entity. Все красиво и в одном месте. тут тебе и валидация, и база данных. Сюда можно и грид, и пр. подтянуть. Одно удольствие.

Razzwan
Цитата (Ron @ 1.10.2015 - 20:55)
Хочу нормальные модели! С ванильными SQL запросами. Как этого добиться?

Никак. Симфони не дает прямого доступа к SQL запросам. Так ты меньше ошибок допустишь. Типа, для твоего же блага.

_____________
Youtube канал WebDeveloper->Run()
Сайт для души
Gitter
Invis1ble
Цитата (Razzwan @ 1.10.2015 - 23:34)
Симфони не дает прямого доступа к SQL запросам.

она как бэ и к SQL вообще не имеет отношения

Цитата (Ron @ 1.10.2015 - 20:55)
Поговаривают надо создавать сервисы и регистрировать в конфигах.

ну да, пишешь сервис
namespace KuchaGovna;

class MoyGovnoservis
{
// ...

public function budMuzhikomVypolniEtotNativnyyZaprosBleat()
{
// ...
}

// ...
}

регистрируешь его
moy.govnoservis:
class: KuchaGovna\MoyGovnoservis

и достаешь из контейнера
$moyGovnoservis = $container->get('moy.govnoservis');
$moyGovnoservis->budMuzhikomVypolniEtotNativnyyZaprosBleat();


Цитата (Ron @ 1.10.2015 - 20:55)
Наверняка есть способ более прямой, что ли...

конечно есть, и вот он:
$moyGovnoservis = new \KuchaGovna\MoyGovnoservis; // поздравляю, теперь твоя карма упала до отрицательной отметки и гореть тебе в аду!
$moyGovnoservis->budMuzhikomVypolniEtotNativnyyZaprosBleat();


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Ron
Цитата (Bolik @ 1.10.2015 - 23:01)
Попробуй привинтить doctrine к своей mvc. Заодно и узнаешь что это такое, там все довольно просто.

Да понять бы для начала нафига она вообще нужна? Ну что она дает? Может быть мне не нужна совершенно. Не могу себя замотивировать изучать то, в чем профит не очевиден. Посмотрел на ютюбе несколько нудных лекций про доктрину, но вдохновения не почувствовал.

Если можно, хотя бы в 2-х словах, какой тут профит?

Цитата (Razzwan @ 1.10.2015 - 23:34)
Никак. Симфони не дает прямого доступа к SQL запросам.

Так не может быть. =) В любом фреймворке есть возможность дёрнуть объект для работы с СуБД. Например, PDO тот же.

Invis1ble, текст примера просто убил! ))) Только я не понял, судя по иронии создавать свои сервисы не нужно? Забить и юзать Doctrine? Или тут без контекста? )))

Ок, с сервисами понятно. Я получаю объект PDO, например, делаю запрос какой нужно и дела в шляпе. Как результат упихать в entity? Или это не нужно?

Хочется создать свои сущности entity, не связанные напрямую с таблицами. Просто некоторые шаблоны данных, на которые легко натравить валидатор. А потом просто взять из этого объекта поля и руками вставить в запрос, чтобы сохранить.

Или это неправильный подход?

Invis1ble
Цитата (Ron @ 2.10.2015 - 01:40)
Только я не понял, судя по иронии создавать свои сервисы не нужно?

Сервисы создавать нужно, когда это необходимо. Не нужно вручную создавать объекты. Для этого есть контейнер и инъекция зависимостей.

Цитата (Ron @ 2.10.2015 - 01:40)
Забить и юзать Doctrine?

Хочешь - юзай, не хочешь - не юзай. Есть Propel, например, есть другие штуки.

Цитата (Ron @ 2.10.2015 - 01:40)
Как результат упихать в entity?
Хочется создать свои сущности entity, не связанные напрямую с таблицами. Просто некоторые шаблоны данных, на которые легко натравить валидатор. А потом просто взять из этого объекта поля и руками вставить в запрос, чтобы сохранить.

Это php, а не что-то сверхъестественное
$normalnayaModel = $container->get('normalnaya_model'); // entity, чёрт_лысый, etc...
$normalnayaModel->ustanovitSvoysctvo('какое-то значение');
// ...
$normalnayaModel->poluchitSvoystvo(); // какое-то значение

или
public function cheToTam(\KuchaGovna\MoyaMimimishnayaModel $model)
{
// ...

$model->ustanovitSvoysctvo('какое-то значение');

// ...

$model->poluchitSvoystvo(); // какое-то значение

// ...

}

или
namespace KuchaGovna;

class KakayaToHren
{
protected $mimimishnayaModel;

public function __construct(\KuchaGovna\MoyaMimimishnayaModel $model)
{
$this->mimimishnayaModel = $model;
}

public function cheToTam()
{
// ...

$this->mimimishnayaModel->ustanovitSvoysctvo('какое-то значение');

// ...

$this->mimimishnayaModel->poluchitSvoystvo(); // какое-то значение

// ...

}
}

как хочешь - так и устанавливаешь/получаешь/крутишь-вертишь

Вопрос только в том, нахрена тебе вообще фрейм тогда, если ты не следуешь устоявшимся практикам и не используешь готовые решения, а ваяешь свои велосипеды.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.