Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (34)

Лучшие ответы пользователя

Все ответы (24)
  • Как фронтендиру создать хорошее веб приложение не зная php?

    В последнее время стало модно использовать на стороне сервера NodeJS, то есть тот же JavaScript. Это обусловлено тем, что стало возможно обходится без чуваков, которые пишут серверную часть на других серверных языках, и это сражу подхватили работодатели, оно то и понятно почему, зачем ещё содержать этих чуваков, если можно напрячь верстальщика, чтобы тот сварганил ему и back-end. Если выкинуть из NodeJS такие возможности как "асинхронность" и "многопоточность", то эта реализация ничем не лучше других, даже в некоторых местах хуже. Есть место и для NodeJS, где среди других он вне конкуренции, но полностью переписать и поддерживать back-end на JavaScript - это нужно быть либо фанатом JavaScript, либо упоротым!
    Ответ написан
    Комментировать
  • Обьсните пользу многочисленных абстракций на примере zfcUser?

    1. ZF2 - это "чистый" PHP на основе php-patteens. В нём нет готовых решений для реализации того или иного функционала, всё надо делать вручную. Чтобы понять его низкоуровневый слой абстракции, нужно на очень высоком уровне знать сам PHP, его тонкости и нюансы, встроенные особенности, и понимать php-patteens, ибо их там немереное количество. Я очень люблю сравнивать PHP-framework с музыкой, и ZF2 у меня асоциюеться с Rammstein, то есть ну ОООчень жесткий (hardcore), к чему я это всё виду - к тому, что у этого framework-а очень большой порог вхождения, и в изучении затруднительный даже для продвинутых разработчиков. Это не значит что он плох, да - он сложный, но web-приложение на нём будет будет радовать вас своей производительности, с которой не сравнится ни один PHP-framework. (при условии, что вы не используете готовые сторонние решения, такие как объектно-реляционное отображение, шаблонизаторы, и т.д.)
    2. Насчёт слоёв абстракции, в большинстве случаев вы будете иметь дело с ServiceManager - это всего лишь контейнер других экземпляров классов. То есть если вы создали форму, то вы можете поместить её в этот контейнер, а позже, когда она вам понадобится, просто извлечь её оттуда. (по умолчанию возвращается один и тот же объект, но вы можете это изменить, возвратить конкретно для какого то случая новый объект). Так же вы можете определить какой то класс бизнес-логики как службу, и использовать её на уровне всего приложения (так же можете её настроить как хотите). Можете ещё к всему этому подключить в дело компонент EventManager - и делать какие то действия, когда произойдёт любое событие в web-приложении.
    3. Гидратор - это процесс заполнение объекта данными, или наоборот - извлечение этих данных из объекта. Данные - это в большинстве случаев обычные свойства класса, и на выходите вы получите объект в виде массива, то есть объект без методов, лишь с одними свойствами. Вот как это работает в ZF2: пользователь вводит данные в форму и отправляет их на сервер, система их получает, преобразует обычные строковые данные с помощью гидратора в объект-прототип (то, что я выше писал, в объект в виде массива). Что же этот объект-прототип из себя представляет?! Как выше писалось, это обычный класс с одними свойствами. Свойства должны быть либо защищёнными, или приватными, а также в этом классе допускается использовать методы доступа к этим свойствам (get и set). После того, как наш объект-прототип наполнился данными, мы можем с ними манипулировать, например поместить в базу данных (разумеется мы должны данные фильтровать и проверять на валидность как при получение с формы, так и помещении в БД). Процессом заполнения данных в БД тоже занимается гидратор.
    4. Если вы работали с ORM, то наверняка заметили большое сходство. По большому счёту, то что я выше описал, реализовано в самой DoctrineORM. Получается что ZF2 реализовал свой "собственный велосипед", какой пока ещё не доведён до совершенства. Хотя если сравнять производительность, то ZF2 вне конкуренции. Но если надо будет реализовать крупную систему, то альтернатива ZF2 ещё пока не подходит, она не сможет проявить весь ваш потенциал системы. Можно попытаться дописать этот "велосипед", или на его основе создать собственную систему объектно-реляционного отображения, но для этого надо иметь очень большие знания в этой области. К стати, чтобы добиться производительности, надо использовать расширение mysqli, а не PDO.
    5. На основе выше мною сказанного, вы должны понимать, что возможно для ваших задач вполне подойдёт Symfony, ибо вам придётся очень много потратить ресурсов, чтобы хоть как то сделать что-то стоящее на ZF2. Ведь если добавить в ZF2 DoctrineORM и шаблонизатор-Twig, то сам framework станет не лучше SF2, я бы сказал что ещё хуже, ибо упадёт производительность и будет очень сложно поддерживать. Поэтому я лично для себя решил, если мне надо что-то сделать действительное стоящее, с большой производительностью, и чтобы это был сугубо только чистый PHP, то я выберу Zend Framework; а если мне нужно web-приложение с умеренной производительностью, и сделать его приложив при этом минимальные усилия, то я выберу Symfony. В любом случае, выбирайте то, что подходит лучше для вашей задачи, выбор за вами.
    Ответ написан
    Комментировать
  • Что изучать: Ruby или Node.js?

    Вы что, любитель экзотики??? Чем вам PHP не угодил? Он прекрасно подходит для этих задач.
    Ответ написан
    2 комментария
  • Как правильно организовать структуру приложения?

    Во-первых, зачем использовать в Zend Framework 2 Doctrine ORM 2? Вся идея и фишка самого ZF2 в том, что это чистый PHP. Именно поэтому он лучше всех показывает себя в производительности. Наверное ещё и шаблонизатор какой то используете, например twig...
    Во-вторых, если вы и вздумали использовать ORM, тогда используйте framework Symfony 2, там она очень хорошо интегрирована, и предоставляются всевозможные решение той или иной задачи.
    В-третьих, насчёт организации, действительно сущность должна хранить защищённые/приватные свойства, и методы доступа к ним. Все операции над получением данных, вы можете поместить в директорию Repository, и поместить методы в класс EntityRepository (вместо Entity вставьте наименование вашей сущности), так это делается в SF2. На самом деле вы вольны в выборе организации, и вы можете делать так, как того пожелаете. Например можете поместить всё это дело либо в Model, или в Service. Разумеется можно просто это дело запихнуть в Controller, но так делать не следует.
    Выбор за вами...
    Ответ написан
    4 комментария
  • Установка MacOS High Sierra/Mojave рядом с Windows и Linux?

    Оправдана ли эта "дрочка" с установкой macOS? Если вам хочется пощупать саму ОС, то как ее пользователь могу сказать, что там нет ничего такого, из-за чего стоит так извращаться с установкой.
    Единственное, что может вас заинтересовать, так это тот вариант, когда вам нужны способности юникса (хотя я в этом плане могу поспорить, потому что macOS - это ближе к Windows, нежели к unix-like, один костыль "brew" чего стоит) и вместе с этим возможность запускать различный софт, тот же Photoshop, или After Effects.
    Как всем известно на unix-like надо сношаться с вайном, чтобы что-то из этого установить, и это уже реально надо иметь стальные нервы, и не только, чтобы запустить этот софт... Это даже слишком для меня, поэтому, собственно, это одна из причин, почему я использую макбук.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (11)