- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
/**
* @param array $input
* @return array
* @throws Exception
*/
protected function makeParams($input)
{
if (!is_array($input))
{
throw new \Exception('argument should be array');
}
$params = array();
foreach ($input as $k=>$v)
{
$params[] = $v;
}
return $params;
}
И зачем из массива в массив перекладывать? Или есть шанс что is_array вернет true для чего-то что не массив на самом деле?
При нажатии на сабмит JS собирает JSON из значений формы в определенном порядке, отправляет на веб-сервер. Веб-сервер это дело валидирует, затем с помощью makeParams собирает JSON из значений и через jsonrpc кидает на сервак с бизнес-логикой.
Так вот, если собрать не в том порядке, или забыть какое значение \ добавить лишнее, то сервак выкидывает экзепшен.
Вообще я жаловался на реализацию, а не архитектуру, архитектура как раз для проекта выбрана удачно.
Ну и конечно нужно гуглить и читать замечательную статью "фрактал плохого дизайна")
>> PHP is inconsistent. It is verbose. It does have a lot of weird behavior. It does have a lot of >>problems. It can be ugly. It can be really awkward to work around. It can leave a lot to be
>>desired.
После этого было бы логично услышать что остальные еще хуже, но вместо этого мы слышим:
>>But it's also incredibly powerful.
В чем измеряется поуерфульность языков? Я считаю что perl на 3.442% более поверфул чем пхп.
>>It's really easy to write working applications.
Верно-ли я понимаю что на python или ruby it is very hard to write working applications?
>>It's really easy to create a large scale project
Совершенно не понятно чем на PHP это сделать легче чем не на ПХП.
>>Be useful to non-developers
Нондевелоперу пофиг на чем написан проект: на PHP или на Brainf*ck. Причем же тут язык?
>>You don't need a library or a framework to talk HTTP.
Это _ПЛОХО_. Это называется "засирание глобального неймспейса" и провоцирует писать код, завязанный на HTTP.
>>That means that transitioning code from CLI to a server API is trivial (it's just changing how it gets the request variables)
Человек зашивается в своем коде на переменные, полученные по HTTP и не стесняется этого!
>>Absolutely gigantic user base. Sure, other languages have large followings, but few are as large as PHP.
Если выкинуть из этой базы откровенно плохих программистов, то ничем она от рубей или пайтона не отличается.
Впрочем "Ideally, don’t tell me anything! This is my one big shot; if this list doesn’t hurt your opinion of PHP, nothing ever will" :)
http://habrahabr.ru/post/142195/
потому что что?
я ем говно, но не потому что я не могу попробовать что-то другое и не потому что мне нравится это делать (возможно, совсем не нравится), просто мне лень тянуться к чему-то другому
Вот, что на это отвечает автор каноничной статьи "PHP: a fractal of bad design" (на нее выше Анонимус ссылается)
> Do not tell me that “good developers can write good code in any language”, or bad developers blah blah. That doesn’t mean anything. A good carpenter can drive in a nail with either a rock or a hammer, but how many carpenters do you see bashing stuff with rocks? Part of what makes a good developer is the ability to choose the tools that work best.
Мнения фанатиков можно не учитывать*, продолжая писать на том языке, который позволит яснее и естественней выразить свои мысли в рамках задачи. А то добрые люди сначала посоветуют оставить PHP, потом JS, потом про C++ и Haskell плохое скажут, потом распнут твои жизненные идеалы, заставят жениться на той, кого не любишь, ради денег и успеха, а в конце и вовсе выпнут из программирования, лишив возможности творить.
* Разве что, писать на навязанных троллями-программистами языках за еду, когда уже выхода совсем нет, когда либо писать на их языке, либо бомжевать.
[...]- это злые формалисты-тролли с нездоровой долей фанатизма и твёрдой уверенностью в своей правоте, готовые раздавить любого, кто [..] по их мнению неправильный [..]
-------
Но это конечно не повод не указывать на объективные минусы некачественных инструментов.
А вот тут не всё так просто. Одно дело - когда производитель экономит на металле и делает мягкую отвёртку. Другое дело - когда отвёрткой закручивают гвозди и говорят, что это плохой инструмент.
В программировании же гораздо больше путей (и инструментов) для того, чтобы получить один и тот же результат. Тут вполне возможна отвёртка с металлическим набалдашником для забивания гвоздей. Её легко и удобно носить в кармане каждый день; стоит лишь повернуть руку, как отвёртка заменится на молоток. И у такого инструмента существуют лишь характеристики, большинство недостатков же надуманны и относительны. Скажем, большая масса позволит легко забивать гвозди, но малая масса позволит всегда держать инструмент при себе хоть в космосе; объединение в один предмет позволит легко потерять молоток, потеряв отвёртку, но разделение потребует использования лишней руки/карманов/ассистента, который будет держать инструмент. Все реальности минусы здесь сводятся к тому, что лак на ручке быстро отслаивается у продукции производителя А.
По-моему, в программировании объективные минусы - это что-то отдалённое от суровой реальности вроде неполноты по Тьюрингу. Остальное же - следствие "я не пользуюсь, поэтому не нужно", "я пользуюсь, следовательно без этого нельзя", "мне неудобно, поэтому всем тоже" и "если язык не решает моих задач, он говно".
В итоге все друг друга ненавидят, холиварят и сжигают на кострах неверных, если вдруг собралась достаточно большая толпа для того, чтобы не испугаться и поймать одного человека.
Глупо ругать жс за прототипы и сборку мусора, а плюсы - за невозможность добавления метода к существующему объекту и ручное управление памятью. Надо стараться изводить в себе это непонимание других ОС, других языков, других парадигм. Если Вася может качественно и с удовольствием написать нужную для дела программу на языке А, Пете, любителю языка Б, лучше помолчать.
PHP это именно что мягкая отвертка. Точнее говоря ею удобно закручивать шуруп размером в одну страничку, весь код которой помещается на экране.
Но такие задачи возникают раз в 12 лет.
>> большинство недостатков же надуманны и относительны
Скажите, Вы читали статью, которую я тут приводил?
>> вроде неполноты по Тьюрингу.
BrainFuck и ook полны по Тюрингу. Хотите на них писать? Хотите писать под саму машину Тюринга, кстати?
Аналогия с JS и C++ тут неверна совершенно. Отсутствтие статической типизации и GC это фичи, и они могут быть хорошими или плохими, нужными или не нужными, но это -- фичи.
Отсутствие неймспейсов и каша в стандартной библиотеке это не фича а бага.
Понимаете?
Существуют ситуации когда на JS можно написать код элегантнее, чем на C++.
Но не существует ситуации когда на PHP можно написать код элегантнее чем на Python или Ruby (кроме той самой ситуации с выводом результатов одного запроса в одну страничку)
Всеми плюсами, которые есть у PHP, обладают так же пайтон и руби.
А вот минусами его не обладают.
Именно потому я и считаю его плохим.
Точно так же и с MySQL, например: у MySQL нет ни одного приимущества перед PostgreSQL, а вот у постгри перед мускулем -- есть. Потому я считаю MySQL плохой базой данных.
А вот SQLite не считаю, потому что у него есть свои приимущества.
Впрочем, холиварить тут и правда смысла нет: это тот самый случай, когда "если надо объяснять, то не надо объяснять".:)
+ Стоит на любом бесплатном говнохостинге.
+ Умеет делать count(*) за O(1) для MyISAM таблиц.
А один сайт даже снежинки рисовал на новый год, и вот количество снежинок было равно количеству пользователей.
Ну в моем случае речь шла о php 3, там особо было из памяти-то и не взять.
На самом деле MyISAM в любом случае нельзя использовать ни на чем, кроме бесплатных гостевых книг ввиду отсутствия ACID
Я слишком ленив для этого. Может, когда-то видел перевод, который здесь привели. Но всё же хотя бы его перечитаю.
Комментарий писал, думая об угнетении поклонников жс и распространяя его на остальные языки, рассуждал об общей толерастии в программировании.
Я тоже считаю что писать на JS чаще всего не следует, кроме разве что фронтенда (тут выбора нет, если не считать что-то, что компилируется в JS).
Но у JS была/есть своя идеология: они попытались сделать прототип ориентированный язык.
Это казалось крутым.
Но оказалось что это вовсе не круто, и за 20 лет существования JS так и не обзавелся качественными бест-практисами. Ну тут уж они не виноваты: попробовали -- не получилось)
А Вы поклонник JS? Вам нравится отсутствие в языке неймспейсов, модульности, нормального ООП и чехарда с типизацией?
Да. Я очень люблю жс, на нём получается легко излагать свои мысли.
Отсутствие неймспейсов бугурта не вызывает, т.к. всегда можно спрятать всё тайное в замыкание (и без отдельных плясок это снаружи вообще никто не увидит) или в объект. Тут и модульность близко, если нет Node.js.
"Нормальное" ООП мне меньше нравится, чем прототипы. Нормальное ООП - это ограничение, прототипы - удобство и свобода.
Из чехарды с типизацией меня раздражает typeof null === 'object'. Приходится писать "if(typeof x === 'object' && x)", чтобы проверить на объект. Сумму числа и строки и преобразование в число унарным плюсом считаю счастьем (когда питон мешает мне это сделать, я с грустью закрываю его интерпретатор и открываю интерпретатор жс). Массивы в строку нигде кроме отладочной печати не привожу, а в число - только случайно. И всё работает.
Чего мне очень не хватает, из-за чего я обижен на жс - так это перегрузки операторов (хочу метатаблицы как в Lua) и шаблонов с макросами как в C/C++. И конечно же функций из Array.prototype в массивоподобных объектах.
Как выглядит API? У Вас есть какие-то примеры на гитхабе или еще где?
В браузере бы я написал
Ну или я бы вынес в один объект то, что для браузера.
Серьёзные примеры - это надо смотреть у людей уровня Борманда, я же до таких высот не дорос. Больших библиотек, которые зависят от библиотек, которые зависят от других библиотек, предназначенных для запуска в браузере, я не писал, и мои потребности в модульности ограничены.
Лолшто :)
Мой гитхаб стыдно показывать... А проекты по работе - само собой NDA.
Писать про != иметь много годных проектов, которые не стыдно показать.
Он, емнип, вообще никакого не показал.
Тем более на клиент-сайде:)
Хотя имидж серьезного программиста обязывает разбираться во всем;)
Бейте их, унижайте их! Поклонники - не люди.
Не надо выбирать язык исходя из фанатичной любви к нему. Всё-таки это всего лишь инструмент. А над фанатиками можно и нужно стебаться - в конце концов они от этого могут изучить какой-нибудь другой язык и перестанут замыкаться в своём уютном пыхо/жсо/крестомирке...
В юности я регулярно наблюдал споры между любителями продуктов Microsoft и Linux (или FreeBSD), и обе стороны совершенно не хотели друг друга слышать, даже не понимали о чем говорит оппонент, и только обкладывали друг друга хуйами.
А брейнфак - это не асм под машину Тьюринга?