Новички юзают уродливые способы не из какого-то там принципа; а просто потому, что способы, которые решают задачу более правильно, имеют более сложное API, чем уродливые; вот и всё.
и чем это отличается от моего высказывания — «известные решения кажутся слишком сложными из-за непонимания базовых принципов»?
бред же, известные решения кажутся слишком сложными из-за того, что они слишком сложны;
Не решения сложны, а порог входа в php не очень высокий. Можно сделать как в старые темные времена прям в странице sql-запрос и вывод в браузер и это будет работать. Просто же. А вот чтоб понимать чем такие действия грозят и как трудно это потом поддерживать будет — нужно чуток знать как в целом все работает. Потому поначалу и кажется, что шаблонизаторы, контейнеры зависимостей, orm и т.п. — лишние звенья. Зачем они нужны, если в конце все равно пользователь получил страницу?
И при определенных допущениях, по всем показателям лучше эквивалентного на симфони. Он прозрачен как на ладони, он быст и еще много чего. Там много кошерных классных решений.
а что если я вас скажу, что можно написать без строки стороннего кода и так, что у тех, кто будет читать ваш код, не будут литься кровавые слезы и не появится желания высверлить себе мозг перфоратором? Только для этого нужно немного попрактиковаться и почитать парочку книжек, тыкнуть какие-либо сторонние решения чтоб понять, зачем они так сделали.
Какие у вас там кошерные вещи зарыты в ядре? Пока что все ваши суждения похожи на «всю жизнь ел палочками, даже суп, ложки не нужны, не используйте ложки»
Мое кошерное решение: композер на входе должен иметь PHP парсер кода и БД уникальных имен классов и интерфейсов, дирректорий внутри папки vendor.
— зачем?
Сейчас в современном php принята структура наименований классов — имя вендора/имя пакета/пространство имен пакета/название класса
Пример: Aura\SqlQuery\Mysql\Delete
Ваша идея — бессмысленна. Почитайте про psr-4 — что тут непрозрачного? Всегда понятно что и где находится.
Фреймворк должен иметь приложение DEV, как есть в DEV.SKY. Есть зачаток такого приложения в Yii с генерацией файлов CRUD
Посмотрите что произошло с введением NAMESPACE: в институтах ввели новую лабораторную работу по NAMESPACE
беда то какая, придется потратить полчаса чтоб прочитать документацию и применить на практике
Код PHP стал менее прозрачный и медленее работать.
Сравните скорость работы php5.2 и php5.6, а лучше 7.0
Надеюсь мое кошерное решение с NAMESPACE более значимо и прозрачно чем то что я пишу в глобальную область? Уберите огонь из души и настройтесь на чистый разум, может быть вы поймете, что мое решение хорошее?
Нет, не хорошее.
Это пример как витающие тренды вредят
Что к примеру из таких трендов вредит? Возможность подключить в свой проект компоненты фреймвокров, библиотеки и все это ценой правки одного файла? Появление стандартов, которые облегчают понимание стороннего кода? Или то, что полностью весь код содержит phpdoc-секции, из которых понятно что и куда передавать и что получим на выходе?
Я считаю, что должно быть так: один автор сделал класс и положил на композер. Другому класс понадобился он его скачал, но увидел что он плох. Модифицировал его, использовал в своем проекте, свое гениальное дополнение прокомментировал и положил на композер новую версию, добавился там автором.
Ну а как сейчас происходит — вот собрал я для своего мелкого домашнего проектика некоторые библиотеки, и все хорошо, но не хватает мне какой-то фишки. Я делаю pull-request, его принимают и все пользуются новой фишкой быстро и безболезненно. Если же не принимают — юзаю свой форк с модификациями и радуюсь жизни, так же переподключая в следующие проекты.
Конечно, при условии что я как-то владею инструментом которым пользуюсь и понимаю что делаю. Если же у меня очень ограниченный запас знаний и практики — я запилю свое решение, в котором проигнорирую все лучшие практики и которым смогу пользоваться только я. А все потому, что без базовых знаний не применить все трендовые вещи, которые при понимании оказываются довольно простыми.
Обожаю подобные посты про самописные cms и фреймворки. Особенно когда автор положил огромный болт на какие-либо правила и общеизвестные приемы и всерьез считает что именно его решение кошерно, а все остальные могут лососнуть тунца.
А причина простая — вместо того, чтоб изучить инструмент, с которым работаешь (в данном случае php), люди бросаются писать решение под себя, потому что порог вхождения невысок и позволяет получить результат быстро, пусть и кривыми способами, а известные решения кажутся слишком сложными из-за непонимания базовых принципов. Ну а после — так и используют свое решение, не пытаясь даже смотреть в сторону других, с большим сообществом, оттестированных и проверенных временем.
Если автор не тролль, что маловероятно, то пусть почитает: http://getjump.me/ru-php-the-right-way/ https://getcomposer.org/ http://www.php-fig.org/psr/
Как работает http — делаем запрос -> получаем ответ
php заточен под web
как работает php — получили запрос -> отдали ответ -> умерли
стоит вспомнить про php-fpm, который не все время умирает
и такие вещи как https://github.com/reactphp, https://github.com/amphp — если нужно не умирать
Приятно осознавать, что не только я считаю, что фреймворки зло.
зло — не фреймворки, а кривые руки. доводилось патчить код одного противника фреймворков, и в нем была куча переменных вида $u, $uid, $tid, $o и т.п… Что не дай человеку — чистый php, symfony, phalcon — все превратится в нечитаемый поток ужаса. И всегда есть вариант собрать по отдельности из библиотек, почитав код перед этим.
Не вижу никаких проблем кроме того, что именованные подготовленные выражения не поддерживаются.
Вместо
$write_connection->q(
[
"DELETE FROM FROM `[prefix]articles` WHERE `id` = ?",
"DELETE FROM FROM `[prefix]articles_comments` WHERE `article` = ? OR `date` < ?",
"DELETE FROM FROM `[prefix]articles_tags` WHERE `article` = ?"
],
[
$article_to_delete,
time() - 24 * 3600
]
);
было бы
$write_connection->q(
[
"DELETE FROM FROM `[prefix]articles` WHERE `id` = :article_id",
"DELETE FROM FROM `[prefix]articles_comments` WHERE `article` = :article_id OR `date` < :clear_time",
"DELETE FROM FROM `[prefix]articles_tags` WHERE `article` = :article_id"
],
[
"article_id"=>$article_to_delete,
"clear_time"=>time() - 24 * 3600 //коряво, но так все равно лучше и понятнее
]
);
The query objects do not execute queries against a database. When you are done building the query, you will need to pass it to a database connection of your choice.
В каждой публикации про самопальные Query builder'ы скидываю эту ссылку. Компонент от ауры я могу одной строкой подключить в свой проект, Ваш — не знаю как долго и имеет ли смысл выдирать его
Взять хотя бы insert
<?php
$insert = $query_factory->newInsert();
$insert->into('foo') // insert into this table
->cols(array( // insert these columns and bind these values
'foo' => 'foo_value',
'bar' => 'bar_value',
'baz' => 'baz_value',
));
?>
Можете уточнить для чего конкретно такое может быть нужно, что нельзя вручную сформировать ссылку?
допустим, генерация ссылки на комментарий или на какую-либо страницу/раздел/статью/путь к api и т.п
Или же генерация ссылки для карты сайта
Генерация ссылки в шаблоне для почтовой рассылки. Много сценариев можно придумать, и переименование модуля не приведет к тому, что придется вручную переписывать уже захардкоженные ссылки во всех местах с их упоминанием.
Где clean_cache выступает в роли аналога HTTP метода, а System/optimization в роли аналога пути страницы.
Почему бы не сделать консольные команды по человечески, например:
/usr/bin/php /path/to/bin/console cache:clear //symfony
php app/cli.php main test world universe //phalcon
php artisan make:console SendEmails //laravel
Мне кажется сомнительным решением писать роуты к cli-модулям, а не оформлять их как консольную команду
И как такое чудо вешать на крон?
Ни в одном популярном фреймворке такого вопроса и не возникнет.
И не описан способ получения ссылки по интересующему роуту с передачей параметра, как это делается почти везде. Как в вашей системе получить ссылку на комментарий к созданному мной элементу каталога?
мне хотелось бы, чтобы скачав себе чужой проект, найти все файлы ровно там, где я ожидал бы их увидеть
в php-проектах так будет с simfony — все будет на своих местах + интерфейсы на каждый чих, что позволит быстро и безболезненно реализовывать кастомный функционал
>«крутые» и разнообразные ООП фреймворки на PHP жутко тормозят
Согласен. Я это постоянно говорю. Но илита загоняет меня в минуса и ридонли :)
http://govnokod.ru/19878
Ваше мнение и гроша ломанного не стоит, т.к. вы некомпетентны совсем, или же уже 3 аккаунт тупого тролля (не жирного, именно тупого, который показывает недостаток наличия аккаунтов без инвайта с возможностью что-то комментировать)
и чем это отличается от моего высказывания — «известные решения кажутся слишком сложными из-за непонимания базовых принципов»?
Не решения сложны, а порог входа в php не очень высокий. Можно сделать как в старые темные времена прям в странице sql-запрос и вывод в браузер и это будет работать. Просто же. А вот чтоб понимать чем такие действия грозят и как трудно это потом поддерживать будет — нужно чуток знать как в целом все работает. Потому поначалу и кажется, что шаблонизаторы, контейнеры зависимостей, orm и т.п. — лишние звенья. Зачем они нужны, если в конце все равно пользователь получил страницу?
а что если я вас скажу, что можно написать без строки стороннего кода и так, что у тех, кто будет читать ваш код, не будут литься кровавые слезы и не появится желания высверлить себе мозг перфоратором? Только для этого нужно немного попрактиковаться и почитать парочку книжек, тыкнуть какие-либо сторонние решения чтоб понять, зачем они так сделали.
Какие у вас там кошерные вещи зарыты в ядре? Пока что все ваши суждения похожи на «всю жизнь ел палочками, даже суп, ложки не нужны, не используйте ложки»
— зачем?
Сейчас в современном php принята структура наименований классов — имя вендора/имя пакета/пространство имен пакета/название класса
Пример: Aura\SqlQuery\Mysql\Delete
Ваша идея — бессмысленна. Почитайте про psr-4 — что тут непрозрачного? Всегда понятно что и где находится.
для симфони вы можете сделать так:
А для phalcon так — https://blog.phalconphp.com/post/dont-like-command-line-and-consoles-no-problem
беда то какая, придется потратить полчаса чтоб прочитать документацию и применить на практике
Сравните скорость работы php5.2 и php5.6, а лучше 7.0
Нет, не хорошее.
Что к примеру из таких трендов вредит? Возможность подключить в свой проект компоненты фреймвокров, библиотеки и все это ценой правки одного файла? Появление стандартов, которые облегчают понимание стороннего кода? Или то, что полностью весь код содержит phpdoc-секции, из которых понятно что и куда передавать и что получим на выходе?
Ну а как сейчас происходит — вот собрал я для своего мелкого домашнего проектика некоторые библиотеки, и все хорошо, но не хватает мне какой-то фишки. Я делаю pull-request, его принимают и все пользуются новой фишкой быстро и безболезненно. Если же не принимают — юзаю свой форк с модификациями и радуюсь жизни, так же переподключая в следующие проекты.
Конечно, при условии что я как-то владею инструментом которым пользуюсь и понимаю что делаю. Если же у меня очень ограниченный запас знаний и практики — я запилю свое решение, в котором проигнорирую все лучшие практики и которым смогу пользоваться только я. А все потому, что без базовых знаний не применить все трендовые вещи, которые при понимании оказываются довольно простыми.
А причина простая — вместо того, чтоб изучить инструмент, с которым работаешь (в данном случае php), люди бросаются писать решение под себя, потому что порог вхождения невысок и позволяет получить результат быстро, пусть и кривыми способами, а известные решения кажутся слишком сложными из-за непонимания базовых принципов. Ну а после — так и используют свое решение, не пытаясь даже смотреть в сторону других, с большим сообществом, оттестированных и проверенных временем.
Если автор не тролль, что маловероятно, то пусть почитает:
http://getjump.me/ru-php-the-right-way/
https://getcomposer.org/
http://www.php-fig.org/psr/
php заточен под web
как работает php — получили запрос -> отдали ответ -> умерли
стоит вспомнить про php-fpm, который не все время умирает
и такие вещи как https://github.com/reactphp, https://github.com/amphp — если нужно не умирать
зло — не фреймворки, а кривые руки. доводилось патчить код одного противника фреймворков, и в нем была куча переменных вида $u, $uid, $tid, $o и т.п… Что не дай человеку — чистый php, symfony, phalcon — все превратится в нечитаемый поток ужаса. И всегда есть вариант собрать по отдельности из библиотек, почитав код перед этим.
Чтоб быстро и безболезненно установить нужную часть и использовать если она норм
Вместо
было бы
Это к тому, что тут только собираются запросы, для их исполнения можно использовать https://github.com/auraphp/Aura.Sql/
Вы привели пример получения результата запроса через PDO, можно сделать это же через Aura.Sql:
Как мне выдернуть Ваше творение в свой проект не на CleverStyle Framework?
Взять хотя бы insert
и Ваш вариант
Наверно потому что вы автор. Лично для меня связь не настолько явная.
допустим, генерация ссылки на комментарий или на какую-либо страницу/раздел/статью/путь к api и т.п
Или же генерация ссылки для карты сайта
Генерация ссылки в шаблоне для почтовой рассылки. Много сценариев можно придумать, и переименование модуля не приведет к тому, что придется вручную переписывать уже захардкоженные ссылки во всех местах с их упоминанием.
Почему бы не сделать консольные команды по человечески, например:
В чем смысл именно такой реализации?
И как такое чудо вешать на крон?
Ни в одном популярном фреймворке такого вопроса и не возникнет.
И не описан способ получения ссылки по интересующему роуту с передачей параметра, как это делается почти везде. Как в вашей системе получить ссылку на комментарий к созданному мной элементу каталога?
в php-проектах так будет с simfony — все будет на своих местах + интерфейсы на каждый чих, что позволит быстро и безболезненно реализовывать кастомный функционал
http://govnokod.ru/19878
Ваше мнение и гроша ломанного не стоит, т.к. вы некомпетентны совсем, или же уже 3 аккаунт тупого тролля (не жирного, именно тупого, который показывает недостаток наличия аккаунтов без инвайта с возможностью что-то комментировать)
https://hex.pm/
http://synrc.com/apps/mad/
жду сравнения с этим — https://github.com/auraphp/Aura.Filter