Какая Платформа PHP MVC для предприятия; CakePHP или Symfony? [закрытый]

Нет необходимости в переопределениях или настройках. DRF обрабатывает это автоматически. Взгляните на метод to_representation из FileField:

def to_representation(self, value):
    if not value:
        return None

    use_url = getattr(self, 'use_url', api_settings.UPLOADED_FILES_USE_URL)

    if use_url:
        if not getattr(value, 'url', None):
            # If the file has not been saved it may not have a URL.
            return None
        url = value.url
        request = self.context.get('request', None)
        if request is not None:
            return request.build_absolute_uri(url)
        return url
    return value.name

Обратите внимание, что он не будет работать, если контекст сериализатора не установлен должным образом. Если вы используете ViewSet, не беспокойтесь, все делается тихо, но если вы создаете экземпляр сериализатора вручную, вы должны передать запрос в контексте.

context = {'request': request}
serializer = ExampleSerializer(instance, context=context)
return Response(serializer.data)

https://www.django-rest-framework.org/community/3.0-announcement/#file-fields-as-urls

7
задан tereško 9 October 2013 в 12:28
поделиться

8 ответов

IBM опубликовала здесь статью об обеих этих средах вместе с Zend для сравнения, см .:

http://www.ibm.com/developerworks/opensource/library/os-php -fwk1 /? S_TACT = 105AGX44 & S_CMP = ART

Я лично использую CakePHP, это довольно круто по сравнению с простым PHP. Легко встраивать, очень ориентирован на MVC, разумная интеграция со сторонними компонентами. Однако у меня были некоторые проблемы с отсутствием какого-либо заметного пути обновления между версиями. Я не могу говорить от имени Symfony, но я считаю, что он более тяжелый, чем CakePHP.

Взгляните также на скринкасты для CakePHP, они дают хороший обзор:

http://cakephp.org/screencasts

6
ответ дан 6 December 2019 в 12:53
поделиться

Я рекомендую прочитать правильный ответ на этот вопрос . В нем упоминается Zend Framework как лучший выбор и приводятся некоторые правильные аргументы в его обоснование.

3
ответ дан 6 December 2019 в 12:53
поделиться

Я хотел бы опровергнуть некоторые из приведенных выше аргументов. Я много работал с Zend Framework и symfony, и я кратко ознакомился с CakePHP.

Прежде всего, по сравнению с symfony, документация ZF не «обширна» - с другой стороны, она довольно поверхностна. Во-вторых, я думаю, что сообщество Symfony намного более доступно и полезно, чем структура ZF в целом, и процесс разработки намного более прозрачен.

Однако я согласен с тем, что Zend Framework пользуется преимуществом поддержки Zend, что может быть весомым аргументом для корпоративных проектов.

По моему опыту, Symfony - это скорее фреймворк. чем ZF. В symfony вы используете весь пакет - или весь фрейм, в то время как в ZF вы можете использовать инструменты по своему вкусу, делая его больше похожим на «набор инструментов», чем на фреймворк.

Также помните, что если вам нравятся некоторые из инструментов в ZF, вы сможете использовать их в проектах symfony (и, возможно, также CakePHP), наряду с symfony / CakePHP.

Это не совсем ответ, а скорее общий комментарий к приведенным выше ответам.

что может быть веским аргументом в пользу корпоративных проектов.

По моему опыту, symfony - это больше фреймворк, чем ZF. В symfony вы используете весь пакет - или весь фрейм, в то время как в ZF вы можете использовать инструменты по своему вкусу, делая его больше похожим на «набор инструментов», чем на фреймворк.

Также помните, что если вам нравятся некоторые из инструментов в ZF, вы сможете использовать их в проектах symfony (и, возможно, также CakePHP), наряду с symfony / CakePHP.

Это не совсем ответ, а скорее общий комментарий к приведенным выше ответам.

что может быть веским аргументом в пользу корпоративных проектов.

По моему опыту, symfony - это больше фреймворк, чем ZF. В symfony вы используете весь пакет - или весь фрейм, в то время как в ZF вы можете использовать инструменты по своему вкусу, делая его больше похожим на «набор инструментов», чем на фреймворк.

Также помните, что если вам нравятся некоторые из инструментов в ZF, вы сможете использовать их в проектах symfony (и, возможно, также CakePHP), наряду с symfony / CakePHP.

Это не совсем ответ, а скорее общий комментарий к приведенным выше ответам.

5
ответ дан 6 December 2019 в 12:53
поделиться

Позвольте мне начать с того, что у меня нет опыта работы с CakePHP или Zend, за исключением того, что я просматривал код фреймворка и их документацию. Я начал использовать Symfony около 15 месяцев назад и перед тем, как исследовать, какой фреймворк использовать. Я решил выбрать Symfony, потому что я обнаружил, что ядро ​​Symfony написано красиво и упорядоченно. Мне казалось, что я легко могу понять структуру, прочитав сам код. Кроме того, я нашел огромное количество документации, которая действительно сосредоточена на работе с фреймворком для реализации определенных функций. Очень прагматично так сказать. CakePHP, похоже, не подходит моему личному стилю, и я считал ядро ​​очень хакерским. Опять же, я могу ошибаться, но я так думал об этом в прошлом. После 15 месяцев написания кода на Symfony я все еще очень доволен. Часто вы читаете комментарии или блоги, в которых говорится, что это слишком сложно. Я считаю, что эти люди оскорбляют собственный разум. На самом деле требуется некоторое время, прежде чем вы получите четкое представление о внутреннем устройстве фреймворка и подходах к решению проблем, но как только вы пройдете этот этап, это действительно отличный инструмент. Сообщество очень полезно, и будущее выглядит светлым. В общем, я могу только посоветовать вам действовать интуитивно, когда вы смотрите на подходы, используемые фреймворками, их кодом и стилями кодирования. Вы будете проводить много времени в этих фреймворках, поэтому вы должны чувствовать себя непринужденно, глядя на их код и их решения для общих проблем. Любой фреймворк ужасен, если вы начнете с ним бороться, и если вы будете следовать ему, каждый из них станет отличным инструментом. Некоторые в конце концов могут оказаться лучше, чем другие. Я полагаю, ты'

2
ответ дан 6 December 2019 в 12:53
поделиться

Вероятно, Zend Framework. Если вам нужно что-то другое, попробуйте codeigniter.com

или это oo-версия на php5 www.kohanaphp.com

0
ответ дан 6 December 2019 в 12:53
поделиться

Я не использовал другие фреймворки, но использую Zend Framework , и это здорово. преимуществами являются:

  1. чистая и стандартная библиотека, стиль кодирования, соглашения и т. д.
  2. поддержка предприятия: она поддерживается Zend, компанией, которую знает каждый программист PHP.
  3. подробное руководство, множество сообщений в блогах и руководств по адресу По крайней мере, в 2 хорошо написанных книгах
  4. есть пакеты для большинства операционных систем с открытым исходным кодом, так что легко установить и поддерживать
  5. очень живой проект с открытым исходным кодом, обновления приходят так скоро, что вы не успеваете за ними.
  6. open лицензия: ZF использует лицензию, подобную BSD, поэтому у вас не будет много проблем с лицензированием
0
ответ дан 6 December 2019 в 12:53
поделиться

У меня был минимальный опыт работы с обоими фреймворками, но все, что я когда-либо слышал о Symfony, - это жалобы (хотя кажется, что она используется очень часто!). Вероятно, просто люди не тратят время на полное изучение фреймворка.

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

0
ответ дан 6 December 2019 в 12:53
поделиться

Мои решения по фреймворку сводятся к следующему (обратите внимание, что я в основном использую Cake, маленький Zend и возился с CodeIgniter и symfony).

Zend - самый предприимчивый. У вас есть люди в @ Zend, которые его поддерживают - я думаю, что график разработки - самый надежный шаг вперед. Он также имеет несколько отличных модулей, таких как программы чтения PDF-файлов и т. Д.

CakePHP (IMO) специализируется на быстрой разработке. Но это неизменно одно из худших с точки зрения производительности - если вы собираетесь иметь интенсивно используемое приложение, я думаю, что у Пола М. Джонса есть несколько сообщений о тестах. Zend примерно в 2-2,5 раза быстрее, чем Cake, IIRC. Если у вас нет опыта работы с MVC, Cake может быть хорошим выбором b / c it def. блокирует вас в MVC. Тем не менее, я обнаружил, что мне постоянно нужно мыслить не по их шаблону - вот почему я медленно перехожу к Zend.

У других фреймворков тоже разные сильные стороны. На PHP | Tek в Чикаго о CodeIgniter говорили участники конференции, так что в ближайшие год или два он может получить большой импульс.

Cake и Zend также имеют суперсильную интеграцию с некоторыми другими корпоративными вещами, такими как модульные тесты, и т. д.

0
ответ дан 6 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: