Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
приделывать костыли к велосипеду, чтобы он ехал :)
В итоге я получаю Лексус ручной сборки. :)
Граблей нету, так как я их не расставлял.
В своих проектах костылей не держу.
К сожалению на фреймворках костыли приходится использовать, так как настаивает заказчик.
какой PHP фреймворк вы выберете для создания среднего или крупного проекта (корпоративный портал, магазин и т.п.) в 2016 году?
подразумевается, что стадия сравнения, споров и выбора уже прошла, и тимлид или команда или бизнес решили: по факту будем писать на
Я же маленькие личные проекты я скорее буду делать на Ayres шутки ради
Просто, я как-то не заметил развития php в сторону асинхронности.
А вот разные, сторонние костыли пытающиеся реализовать асинхронность
<?php // basic server
require __DIR__ . '/vendor/autoload.php';
use Amp as amp;
use Amp\Socket as socket;
amp\run(function () {
$socket = socket\listen("tcp://127.0.0.1:1337");
$server = new socket\Server($socket);
echo "listening for new connections ...\n";
while ($client = (yield $server->accept())) {
amp\resolve(onClient($client));
}
});
// Generator coroutine is a lightweight "thread" for each client
function onClient(socket\Client $client) {
$clientId = $client->id();
echo "+ connected: {$clientId}\n";
while ($client->alive()) {
$data = (yield $client->readLine());
echo "data read from {$clientId}: {$data}\n";
$bytes = (yield $client->write("echo: {$data}\n"));
echo "{$bytes} written to client {$clientId}\n";
}
echo "- disconnected {$clientId}\n";
}Ок. И как по вашему `yield` относится к асинхронности?
Генераторы и итераторы не имеют отношения к асинхронности или многопоточности. Они вообще о другом.
event loop. Да есть. Но это еще не асинхронность.
stream_select. Вы серьезно? Вы еще форки вспоминте. Это вообще не юзабельно.
1 из 10К пэхапешников имел опыт и честь отважно этим пользоваться.
Не так просто существует устойчивое мнение, что в php нет асинхронности и многопоточности.
Пока что нет. Как будет, я очень обрадуюсь.
Интересно, а вы и сокеты будете на PHP подымать?
чтобы не пришлось его преодолевать
А вот если задачи очень уж нестандартные, то стоит подумать о самописном проекте
Мне не нравится трактование MVC во фреймворках.
I don't like MVC because that's not how the web works. Symfony2 is an HTTP framework; it is a Request/Response framework. That's the big deal. The fundamental principles of Symfony2 are centered around the HTTP specification.
User::getAll() для получения объектов всех пользователей из ресурса (таблицы, в случае с БД) пользователей и не париться. По этому его так называют те, кто смог с ним поработать и понять, что очень жирная модель, приближённая к божественному объекту — это не всегда хорошо. Хотя никто не мешает опять же разделить эти области ответственности, превратив AR модель в своеобразный репозиторий, а энтити иметь кристально чистыми, заточенными под бизнес-логику непосредственно.$user->name = 'Vasya'), вместо работы с бизнес-логикой ($user->rename('Vasya')). fesor давеча открыл мне глаза на подобную вроде как мелочь, которая в реальности поменяла мою картину мира.class User {
private $attributes;
private function __construct($email, $password) {
// тут есть варианты что бы можно было подменять реализацию
$this->attributes = UserGateway::create();
$this->attributes->email = $email;
$this->attributes->password = $password;
}
public static function register($email, $password) {
$user = new static($email, $password);
$user->attributes->save();
}
public function makeSomeBuisnessStuff() { /** ... */ }
}что AR — антипаттерн.
Развелось так званых программистов, не умеющих писать SQL.
Мне не нравятся активрекорды, доктрины и прочий мусор.
Может у вас нищебродный интернет и ноут? :)
Какие еще зависимости?
Будто mysql так сложно поставить :)
Предложите ему перейти на Ubuntu и то, что Вы ставили
PHP на винде практичезки из коробки работает
Web Platform Installer
Microsoft Web Platform Installer — бесплатное приложение, которое упрощает загрузку, установку и обновление всех компонентов веб-платформы Microsoft, включая Internet Information Services (IIS), SQL Server Express, .NET Framework и Visual Web Developer
Но по факту большинство не меняет базу. Да и есть PDO. :)
но мне как-то не хотелось писать для чужих либ автозагрузчик в композере
для чужих либ автозагрузчик в композере
связано с параноидальной безопастностью начальства
а для слабой связности компонентов и низкого оверхеда, чтобы интегрировать в имеющийся код.
Мне показалось проще допилить Silex до этой комплектации
негарантированная поддержка php 5.3, что опять же существенно для меня в настоящий момент, увы.
Заведётся ли Laravel на VPS 0.25GHz/128Mb или не очень…
теперь там не экземпляры FormType, а FormType::class
измененными валидаторами объектов
измененными Yaml конфигами
Redirect::route().class Redirect extends Facade
{
protected static function getFacadeAccessor()
{
return 'redirect';
}
}php composer.phar create-project --stability="dev" zendframework/skeleton-application path/to/installпротестировать временем
Вы ничего не пишите, вы только берете готовые компоненты и связываете их вместе через тот же php-di.
То есть реально сделать простенький фреймворк за пару часов, просто под задачу
Composer + Github помогут для проекта любого размера
В целом же я лично ленивый и потому просто для мелких проектов беру sf3.0 в режиме микроядра а для проектов побольше — просто свою сборку sf3
созданию архитектуры приложения?
Про конфигурирование, взаимодействие, системное тестирование и подобную муть вы решили не упоминать?
А какую модель роутинга вы выбирите?
А ваше приложение будет поддерживать RESTful API, или только классические GET/POST HTTP запросы с возвратом HTML?
А как вы будете решать проблему дублирования кода представления?
А если в приложении планируется рендеринг ответа в виде HTML кода, но будет много JS на странице, как вы это решите?
подставьте любой другой архитектурный вопрос
А давно архитектура приложения = фреймворк? Это ж совершенно разные вещи.
Архитектура — это то как вы например организуете работу с платежками, или систему скидок прикрутили и т.д. То есть это болше влияет на уровне бизнес логики
По остальным ответам — видите, если есть опыт в сборке фреймворка из кусочков то дело идет быстрее
Архитектура — это то что дорого менять
Но ему еще и не нужно
то этот кусок стал архитектурой?
Тобишь архитектура это то как вы построили приложение
Тобишь архитектура это то как вы построили приложение
В них тестируется код, но не архитектура или взаимодействие с другим кодом
Или тот-же FastRoute мешает написать поддержку RESTful API?
А что это за проблема?
Использованием отдельных вьюх/рендера? В чем проблема-то?
Когда вы собираете свой первый фреймворк, этот вопрос часто не дает покоя.
фрейморки — это то, за что здесь голосовалось
Многие путают фреймворки с библиотеками, поэтому такая вырезка:
Нормальные фреймворки, вроде Zend, Symfony или Laravel, вообще ничего нам не диктуют
На каком фреймворке вы будете писать PHP приложение в 2016 году?