Страницы

Поиск по вопросам

Показаны сообщения с ярлыком zend-framework. Показать все сообщения
Показаны сообщения с ярлыком zend-framework. Показать все сообщения

среда, 29 января 2020 г.

Zend vs .NET

#net #zend_framework #php


Какой фреймворк лучше учить для создания небольших и не очень больших проектов? Опишите
все плюсы и минусы, которые Вы видите в asp.net,ado.net и php, а именно zend. Представьте
пожалуйста результат сравнения их трудности в обучении и востребованности на рынке. 
Заранее спасибо!    


Ответы

Ответ 1



.NET (дотнет) платформа, вкупе с технологией доступа к данным ADO.NET - одно из лучших решений для разработки с точки зрения программиста. Очень удобна в разработке и отладке. Продуманная в смысле обновления отдельных элементов проекта. Огромная библиотека классов. Работа на ней более высокооплачиваемая (обычно раза в два). Лучшая из испробованных мной IDE - MS Visual Studio звточена как раз под .NET. Достаточно востребован. Но. Это дорогая в смысле развертывания платформа. Учитывая стоимость Windows-сервера и родного для ADO.NET MSSQL - очень дорогая. MONO (линуксовая альтернатива .NET) вряд ли когда догонит оригинал в плане производительности, укомплектованности и стабильности работы. PHP. Что язык, что платформа, что инструменты разработки оставляют желать сильно лучшего. Если C# я мог бы назвать одним из лучших языков, то PHP - один из худших, начиная недоделанным ООП и заканчивая странными конструкциями. Тем не менее. PHP + Linux + Apache + PostgerSQL - это вполне работоспособная и совершенно бесплатная платформа с неслабым комьюнити (что немаловажно). Не привожу в качестве альтернативного решения MySQL, так как не вижу в данной СУБД ни одного плюса, а минусов в ней просто море. Самый существенный плюс PHP - очень низкий порог вхождения в технологию. В разы ниже чем для .NET или Java. Соответственно, вы намного быстрее можете приступить к работе, если начинать с нуля. Весьма востребован на рынке. PHP фреймворки. Zend, Codeigniter, Kohana, Yii и прочие производные MVC-паттерна. Разница между ними довольно относительная. Про Zend хорошего можно сказать только то, что в нем уйма всяких библиотек, значительно больше чем в остальных (но он очень громоздкий). Во всем прочем Zend ничем не лучше альтернатив. Лично я много работал с Kohana и немного меньше с прототипом коханы - CodeIgniter. Довольно неплохие решения, быстрое ядро, имеются все необходимые для решения большинства задач библиотеки, CI отличается большим упором в быстродействие, Kohana - большим удобством API. Все упомянутые фреймворки пользуются спросом. Zend и CI чаще других. Java. Где-то между двумя выше рассмотренными категориями. По быстродействию сравним с .NET, по хроническому хаосу в библиотеках и решениях - с PHP (ибо бесплатен и вообще опенсорс). Что неудивительно, так как дотнет делался как конкурент джаве с учетом всех ошибок второй. Но если вам нужна бесплатная платформа и хорошее быстродействие, то других альтернатив просто нет. Главный минус Java - найти толковый хостинг, или настроить свой сервер, что несколько сложнее, чем в случае с PHP и даже .NET. Востребован наравне с .NET. RoR (Ruby on Rails) - тоже как Джава похож на гибрид .NET и PHP, но наоборот. Здесь почти исключительная ситуация, когда в бесплатном решении мы имеем хорошо продуманный язык и богатую библиотеку классов. Active Records из RoR - это несбывшаяся мечта пхп-ешника. Недостатки: плохо с хостингом, медленный. По разным тестамм один из самых медленных интерпретаторов (местами даже медленнее PHP). Менее востребован. Python. Подобно Руби и ПХП - скриптовый (а значит медленный в выполнении) язык. Есть несколько популярных фреймворков : Django, TurboGears, Pylons, Zope. Каждый имеет свой спектр задач, которые решает достаточно хорошо. Универсального пожалуй нет. Тут все так же хаотично как в PHP и Java. Востребован на равне с RoR. Это то, как вопрос видится мне лично. Надеюсь, кому-то мое оформленное в текст мнение окажется полезным. Понимая принципиальную холиварность темы на положительную реакцию "гуру" не рассчитываю :)

вторник, 10 декабря 2019 г.

CRUD генератор для zend2 / zend1

#php #zend_framework #zend_framework_2 #crud


Интересуют готовые модули-хелперы для Zend1 / Zend2 , для генерации админок. В идеале
проект-пример где используется какой-то CRUD фреймворк совместно с ZF. Надоело велосипедить
каждый раз с этими админками, тогда как в других фреймворках это уже в коробке есть.

Хотелось бы не редактор БД вроде phpmyadmin , а именно фреймворк - который для любой
таблицы БД(или группы таблиц) даст универсальный бекенд, привелегии к которому можно
регулировать кодом, а также валидаторы/фильтры полей, и стандартный фронтенд, который
можно менять, менять отображение полей, делать видовые трансформации данных поля. И
желательно посовременнее, вроде http://crudkit.com .

Существует ли такое в природе для зенда? Если да, то посоветуйте пожалуйста лучший.
Если нет - может быть у кого-то был опыт впиливания, поделитесь пожалуйста ссылкой
на репу. 

Простите за топик, к которому не может быть однозначного ответа - тем не менее ничего
не нагуглил на данную тематику.
    


Ответы

Ответ 1



Zoeken : Для ZF1, вы можете использовать Zoeken, она предоставляет полные интерфейсы Crud. Для ZF2 находится в разработке. https://code.google.com/p/zodeken/ (https://code.google.com/archive/p/zodeken/downloads) https://code.google.com/p/zodeken2/ (https://code.google.com/archive/p/zodeken2/downloads) Zend Framework Tool (ZFTool) Восможности : создать проект ZF2, установка скелета приложения создать новый модуль внутри существующего приложения ZF2 получить список всех модулей, установленных внутри приложения получить файл конфигурации приложения ZF2 установить библиотеку ZF2 выбирая конкретную версию Тут вам придется немного попотеть,документация хреновая (Может в дальнейшем улучшат) :).Eсть мощный пакет в ZF2 для отражения кода, сканирования и генерации. http://framework.zend.com/apidoc/2.2/namespaces/Zend.Code.html https://github.com/zendframework/Component_ZendCode

Ответ 2



Вот что обнаружил - прекрасный портал https://zfmodules.com/?query=crud , где есть 700 модулей для Zend 2. В том числе там есть несколько реализаций CRUD

пятница, 12 июля 2019 г.

Сброс настроек Zend_Controller_Front

Здравствуйте! Переписываю проект на SOA и перевожу public/index.php в демона, который умеет принимать сообщения из RabbitMQ, обрабатывать их и отправлять дальше по цепочке в кролика. Столкнулся с проблемой, когда хочу сделать запрос на свой контроллер и экшен, то происходит только 1 вызов, а потом всё зацикливается и не получается установить новый контроллер/экшен... Код коллбека, который дергается при приходе сообщения из кролика: /** @param $msg PhpAmqpLib\Message\AMQPMessage */ $callback = function ($msg) { $dataIn = json_decode($msg->body); $bodyStr = $body = '';
$auth = Zend_Auth::getInstance();
$front = Zend_Controller_Front::getInstance();
if (isset($dataIn->user_id) && !empty($dataIn->user_id)) { $storage = $auth->getStorage(); $data = new stdClass(); $data->user_id = $dataIn->user_id; $storage->write((array)$data);
$request = $front->getRequest(); $request->setParams((array)$dataIn->param); $request->setRequestUri($dataIn->url); $response = $front->getResponse();
$front->dispatch($request, $response);
print_r(array( "getActionKey" => $request->getActionKey(), "getActionName" => $request->getActionName(), "getControllerKey" => $request->getControllerKey(), "getControllerName" => $request->getControllerName(), ));
$body = json_decode($response->getBody()); } $front->clearParams();
$body->client_id = $dataIn->client_id; $bodyStr = json_encode($body);
/** @var $msgChannel PhpAmqpLib\Channel\AMQPChannel */ $msgChannel = $msg->delivery_info['channel']; $msgChannel->basic_ack($msg->delivery_info['delivery_tag']);
//echo "
[x] Обработано " . $msg->delivery_info['routing_key'] . ' : ' . $bodyStr . "
"; $sender = new SenderSysEventToOutox(); $sender->send($bodyStr, $dataIn->client_id); $auth->getStorage()->clear(); }; В сообщении содержится информация о пользователе, который совершает действие $dataIn->user_id В демоне мы устанавливаем ему "авторизацию" на время выполнения запроса, после сбрасываем. Получаем инстанс фронт контроллера $front = Zend_Controller_Front::getInstance(); и после установки параметров делаем вызов на контроллер/экшен, который пришел в сообщении. $request->setParams((array)$dataIn->param); $request->setRequestUri($dataIn->url); $response = $front->getResponse(); $front->dispatch($request, $response); И в конце очищаем все установленные ранее параметры $front->clearParams(); После прихода нового сообщения, по идее, должен происходить все как с чистого листа, так как параметры очищены, но беда бедовая в том, что оно так не происходит, я уже что только не пробовал, и такие комбинации: $front->getResponse()->clearAllHeaders()->clearRawHeaders()->clearBody(); И делал $front->resetInstance(); // тут вообще муть начинается, так как он сбрасывает очень много всего и заново воспользоваться получение инстанса пока не получается. В общем вот... такая лабуда, есть ли у кого мысли, как сбросить все настройки Фронт-контроллера, чтобы при каждом новом вызове все было как будто "в первый раз"? Заранее спасибо.


Ответ

$front = Zend_Controller_Front::getInstance(); $clonedFront = clone $front; работаем с клоном. По окончании убиваем клона. UPD: clone не будет работать, т.к. singleton.. сорри. Попытка номер 2: Вручную создавать обьект Zend_Controller_Request_Http. $request = new Zend_Controller_Request_Http(); //Здесь он сам подхватит новый URI, либо в параметрах указать его Zend_Controller_Front::getInstance()->setRequest($request); ...