ФорумПрограммированиеPHP для идиотов → Нубские вопросы по Symfony 2

Нубские вопросы по Symfony 2

  • adwo

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

    Spritz 27 декабря 2011 г. 14:06, спустя 5 минут 11 секунд

    а еще у нас есть djangodash. уже 2 года наблюдаю =)
  • Ivan

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

    Spritz 27 декабря 2011 г. 15:57, спустя 1 час 50 минут 37 секунд

    тема не про джангу, тема про сф2, флудеры!
  • Sinkler

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

    Spritz 27 декабря 2011 г. 16:14, спустя 16 минут 37 секунд

    Ivan, Ivan, ты новогоднюю тему видел?
  • Flare

    Сообщения: 284 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2011 г. 10:18, спустя 18 часов 4 минуты 30 секунд

    как говориться "от нашего стола Вашему"
    сравниваю джанго 1.x и симфони 2.x коробки.
    Роутинг. Хотя еще компонент не идеален еще, но в том виде что сейчас роутинг, как минимум не уступает. Описание роута более гибкое чем в джанго.
    Вот такое извращение я нашел что проверяет POST или GET это запрос, мега говнокод после симфони -
    # urls.py

    from django.conf.urls.defaults import *
    from mysite import views

    urlpatterns = patterns('',
    # …
    (r'^somepage/$', views.some_page),
    # …
    )

    # views.py

    from django.http import Http404, HttpResponseRedirect
    from django.shortcuts import render_to_response

    def some_page(request):
    if request.method == 'POST':
    do_something_for_post()
    return HttpResponseRedirect('/someurl/')
    elif request.method == 'GET':
    do_something_for_get()
    return render_to_response('page.html')
    else:
    raise Http404()


    Шаблонизатор. Не уступает по основной функциональности (наследование, фильтры, экстеншены, теги)
    Генерация админки. Стандартного бандла для этого нету, но есть сторонняя разработка, которая работает по аналогичному принципу как джанговская.
    Формы. Джанго подсасывает.
    Кеширование. В стандартной поставке нету пока сравнимого по функционалу компонента, но есть бандл портированого Zend_Cache, и он по функциональности в некоторых моментах даже лучше джанговского.
    Развертывание. Capifony и дело в шляпе.
    Модель. В джанго смесь логики представления с моделями (Meta), Active Record (фу)
    Конфигурирование более гибкое.
    Интернационализацией не уступает как минимум.

    Ну че вам там еще сравнить?

    Теперь покажите хоть один сайт на джанго, что сделан по методологии DDD, я вообще сомневаюсь что сейчас там такое сделать возможно.
    IoC, DI я даже не видел чтобы использовали.

    Джангодрочеры зайдите на сайт документации симфони второй и уделите полчаса своего внимания поверхностной документации, чтобы понять что не такие уже у этого фреймворка плохи дела. За последние пол года очень много чего поменялось в мире PHP. Вот уже сейчас будет 5.4. Набирает популярность Meta программирование, AOP, кодогенерация. Причиной тому, что сейчас только это все появилось, есть то что вот буквально год-два последних в PHP усилились возможности в функциональности языка, чтобы такое наваять. Во всех гонках всегда есть лидирующий и догоняющий. В случае с джанго, этому способствовало стартовые возможности языка. Я уверен что скоро PHP в качестве и удобстве кодинга не будет уступать, если даже не опережать своих соперников. А почему столько говнокода много на php, в отличие от питона, я думаю вы и так знаете.
  • adwo

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

    Spritz 28 декабря 2011 г. 10:22, спустя 4 минуты 28 секунд

    Flare, прошелся по всем пунктам. не нашел ни одного обоснованного.

    Формы. Джанго подсасывает.

    детский сад
  • adwo

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

    Spritz 28 декабря 2011 г. 10:38, спустя 15 минут 43 секунды

  • Ivan

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

    Spritz 28 декабря 2011 г. 10:38, спустя 14 секунд

    Авторитетный обзор- джанга опущена!
  • Troy

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

    Spritz 28 декабря 2011 г. 10:58, спустя 19 минут 39 секунд

    Flare, аж прослезился) Ну чо, гопота, выкусили, да?) 3 на 2 теперь))
  • adwo

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

    Spritz 28 декабря 2011 г. 11:38, спустя 40 минут 20 секунд

    def some_page(request):
    if request.method == 'POST':
    do_something_for_post()
    return HttpResponseRedirect('/someurl/')
    elif request.method == 'GET':
    do_something_for_get()
    return render_to_response('page.html')
    else:
    raise Http404()


    Так может только пхпшник написать. Обычно POST-запросы используются совместно с формами. Вот пример:

    def post(request):
    if request.method == 'POST':
    form = PostForm(request.POST)
    if form.is_valid():
    form.save()
    return redirect(reverse('posts_path'))
    else:
    form = PostForm()

    return render(request, 'posts/add.html', {
    'form': form,
    })


    Покажи мне, как это будет на симфони
    Спустя 60 сек.
    Flare, аж прослезился) Ну чо, гопота, выкусили, да?) 3 на 2 теперь))

    Да хоть против 10. Меня защищает питон с кинжалом.
  • Абырвалг

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

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

    Spritz 28 декабря 2011 г. 11:53, спустя 6 минут 16 секунд

    Оно красивее джанговского?
  • Абырвалг

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

    Spritz 28 декабря 2011 г. 11:57, спустя 3 минуты 45 секунд

    не скажу за красоту, но оно логичнее. Здесь нет стремления написать на строку меньше кода
  • Flare

    Сообщения: 284 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2011 г. 11:57, спустя 32 секунды

        public function newAction()
       {
           $post = new Post();
           $form = $this->get('form.factory')->create(new PostType(), $post);
           if ($this->get('request')->getMethod() == 'POST') {
               $form->bindRequest($this->request);
               if ($form->isValid()) {
                   $this->em->persist($post);
                   $this->em->flush();
                   return new RedirectResponse($this->generateUrl('posts_path'));
               }
           }
          return $this->render('AcmeBlogBundle:Post:new.html.twig', array(
               'form' => $form->createView(),
           ));
       }

    Это по аналогии с твоим кодом. Если проект большой, тогда логику по обработке формы можно выделить в отдельный класс.
  • adwo

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

    Spritz 28 декабря 2011 г. 11:59, спустя 2 минуты 22 секунды


    не скажу за красоту, но оно логичнее. Здесь нет стремления написать на строку меньше кода
    ткни пальцем, где оно есть в представленном мной коде.

    Это по аналогии с твоим кодом. Если проект большой, тогда логику по обработке формы можно выделить в отдельный класс.

    В джанге есть CBGV(https://docs.djangoproject.com/en/dev/topics/class-based-views/).
  • Абырвалг

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

    Spritz 28 декабря 2011 г. 12:14, спустя 14 минут 23 секунды

    form.save()

    почему форма себя сохраняет? почему вообще привязка именно к ней а не к модели пост/топик?

    form = PostForm(request.POST)

    опять же, у вас форма выступает в роли модели. Мешанина.
    Спустя 58 сек.
    и каким макаром в эту вашу форму передается хранилище?

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