«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.

Чат изучающих PHP #70 Аноним 2016/02/10 19:59:42  №649329 [Просмотреть]
14551235823870.png (33, 500x500)
500x500
14551235823881.jpg (157, 1024x683)
683x1024
14551235823912.jpg (34, 650x384)
384x650
14551235823923.jpg (118, 1024x768)
768x1024
Добро пожаловать в наш уютный чатик. Тут мы ~~флудим~~ изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>639138 (OP) (больше 1000 постов!)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Для начала установи Апач + PHP (советы ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, хотя бы основы
- Далее простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Ответы 22 февр Аноним 2016/02/24 07:29:12  №664780
>>663444

> $returnText = "";
лишняя строчка

> $pattern = array(
> "/^\w/u",
> "/\.\s*\w/u"
Можно объединить в одну регулярку

>>663720

Здесь можно упростить функцию замены заглавных букв - просто брать первую букву в строке и переводить в врехний регистр.

> $splitSentence
$sentences

> $wordsSentence
$words

> $result = $result.
.=

В остальном верно.

>>663742

> https://jsfiddle.net/kxh8b4pm/
Верно

> 5. https://jsfiddle.net/qpcrgpyk/

> var innerArguments = [].concat(outerArguments);
Можно просто outerArguemtns.slice().

В остально верно.

> 6. https://jsfiddle.net/92kh90af/
> var fn = arguments[0];
Лучше прописать fn в заголовке функции в скобках

> } else {
> innerArguments.push(outerArguments);
> } else {
> innerArguments.push(outerArguments);
Попробуй убрать повтор кода.

В остальном верно

> 8. https://jsfiddle.net/p0bsypcw/
Верно
Ответы 23 февр Аноним 2016/02/24 07:29:33  №664781
>>663790

Через командную строку

>>664386

> ^([а-яё]|[a-z]|\\s){1,}.$
У нее привязка к началу и концу строки. То есть она может либо захватить всю строку целиком либо ничего. Ну и квантификаторы жадные то есть {1,} стремиться получить как можно больше повторений.

>>664493

Откуда ты знаешь что не пригодится?


>>664498

Ты на ideone в stdin что-нибудь написал?
Миграция - тред закрыт Аноним 2016/02/24 07:44:25  №664786
Аноны, переходите в новый тред >>664784 (OP)

Этот тред закрыт. Если вам не ответили, пропустили вас - напомните о себе в новом треде.

Не пишите здесь больше.

Клуб изучающих PHP с нуля 69 Аноним 2016/01/31 09:40:30  №639138 [Просмотреть]
14542224305260.png (33, 500x500)
500x500
14542224305261.jpg (157, 1024x683)
683x1024
14542224305302.png (187, 853x480)
480x853
14542224305343.jpg (194, 1024x768)
768x1024
Добро пожаловать в наш уютный тредик. Потеплело ли у вас? Тает ли снег? А тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>629822 (OP) (почти 1000 постов!)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2016/02/13 13:26:51  №652222
>>647805

Я написал выше, надо проверить на большом списке телефонов.

>>648440

Мой недописанный урок по HTTP, может что полезное найдешь https://github.com/codedokode/pasta/blob/master/network/http.md
Урок по ссылкам: https://github.com/codedokode/pasta/blob/master/network/urls.md

>>648554
>>648543

Найти макс. длину строки можно проще. Допустим у нас есть массив строк. Функцией array_map + mb_strlen ты можешь получить из него массив длин строк. После чего остается найти максимальное число в массиве стандартной функцией.

> array_push($countedLetters, $count);
короче писать $countedLetters[] = $count;

> for ($i = 0; $i <= count($letters); $i++) {
Для обхода массива удобнее исплоьзовать foreach. Также, если тебе надо обработать массив функцией count, то можно вместо цикла использовать array_map.


>>648581

Не бойся, разберешься.

>>648635

> Если бы сейчас сам начинал учить, пошел бы в PHP или в питон/ноду, скажем? Думаю, туда ли направил стопы.
Вполне возможно, Питон хороший язык, рекомендую, а вот ноду для больших приложений не посоветую - там же ни классов ни тайп хинтов ни ООП нормального. Разве что использовать расширения вроде TypeScript, добавляющие строгости.

> И вообще, меня ужасно бесит внешне этот язык, я совсем его хуево понимаю со всеми этими бесконечными цепочками анонимных функций и прочим.
Потому что ты его плохо знаешь. Пройди наш курс задач на JS/DOM.

> Есть какой-то может простой способ вкатиться и на каком его уровне необходимо знать - хеллоуворлда, надо понимать, недостаточно?
Ну вот наши задачки наверно нужный уровень и дают. Ну или пройди задачи с сайта learn.javascript.ru, они тоже хорошие.

>>648647
>>648648

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

Обговаривать стоимость и условия оплаты работы (по часам, по дням, за все) надо до ее выполнения.
Аноним 2016/02/13 13:27:45  №652223
>>648735

> foreach($pieces as $key => $piece) {
> $symbols[$key] = ...
Тут $key не нужен, можно писать $symbols[] = ...

> Считаем количество символов во всех вложенных массивах
Используй array_map вместо цикла.

> @$symbols[$i];
Это быдлокодинг. Надо проверять есть ли символ в массиве, а не делать ошибки, а потом глушить их.

> $count = count($count);
Неправильно использовать одну переменную для разных вещей: массива символов и числа

> array_push($countedSymbols, $count);
можно как $countedSymbols[] = $count

> Сверяем количество символов в других массивах с самым большим массивом, пропускаем через цикл в цикле все массивы, наполняя пробелами те, которые по количеству символов не дотягивают до самого большого массива
Можно (нужно) сделать проще: при выводе просто смотреть, есть ли символ в масиве, если нет то выводить пробел вместо него.

> Выводим построчно первые и последующие символы в массиве
Тут незачем писать результат в переменную, можно сразу выводить через echo

> Интерпретатор выводит строки вниз, а не накладывает строку на строку, как я почему-то думал раньше.
Да, текст выводится слева направо и сврху вниз.

> Потом нашёл непонятное решение в Сети: $count = @$symbols[$i]; - ставим "собаку" перед массивом,определяем его таким вот образом именно как массив
Нет, не так, @ подавляет вывод сообщений об ошибках в выражении: http://php.net/manual/ru/language.operators.errorcontrol.php (я нагуглил по слову "php at operator")

Не используй его.

>>648835

> а что такое неявный сброс буфера?
Когда ты что-то выводишь через echo,для повышения производительности PHP копит данные в буфере, а например по символу перевода строки или по превышению размера буфера отдает данные на вывод (в консоль или апачу для передачи в браузер). Это помогает повысить производительность так как вывести/передать 1 раз 100 символов выгоднее чем 100 раз отдать по 1 символу.

Это не совсем особенность PHP, буферизация работает и в стандартных функциях языка Си, а интерпретатор PHP тоже ведь на нем написан.

Но это иногда вредно. Например если ты в консоли выводишь точку, ждешь 1 с, выводишь еще точку, и через 100 точек выводишь перевод строки, то из-за буферизации точки выведутся только через 100 секунд, одновременно, когда будет получем перевод строки. В таком случае ты можешь явно сбросить данные из буфера командой flush().

http://php.net/manual/ru/function.ob-implicit-flush.php

Эта функция включает неявный брос буфера, то есть сбрасывает буфер (делает flush()) после каждого эхо. Фактически она отключает буферизацию. Не очень понимаю, где это может пригодиться.

В твоем примере кода, мне кажется ob_implicit_flush(false); не нужна, так как там с помощью ob_start() включено сохранение всех выводимых данных в другой, вышестоящий буфер - ты можешь поменять false на true и скорее всего ничего не изменится.

>>648966

Хорошее решение, только я бы еще пробел справа от вертикальной черты добавил.

>>648982

Погугли.

>>648997

Заходит иногда

>>649122

Для начала неплохо, но надо доработать. Твоя программа ищет латинские буквы в русских словах, а как насчет русских букв в латинских словах? Вроде hеllо где E и O - русские.




Аноним 2016/02/13 13:30:40  №652227
Ну все, я всех проверил, всем дал ответы. Если вас забыли или пропустили - напомните о себе в новом треде >>649329 (OP)

Этот тред закрыт окончательно.

Клуб любителей изучать PHP 68 Аноним 2016/01/20 06:43:59  №629822 [Просмотреть]
14532614398610.png (33, 500x500)
500x500
14532614398621.jpg (157, 1024x683)
683x1024
14532614398652.png (364, 1920x1080)
1080x1920
14532614398733.jpg (135, 1280x720)
720x1280
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>619873 (OP) (почти 1000 постов!)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.

Нажмите Просмотреть, чтобы открыть.
ответы 27-31 Аноним 2016/02/03 01:40:26  №641541
>>638432

> throw new Error("Аргумент "+ arguments+" не является элементом сети");
Подставлять объект в строку не стоит, так как если его не удастся преобразовать к строке, то будет ошибка. Лучше указывать номер аргумента.

> if (this._elements.getPowerProduction) {
Что-то мне не очень нравится, что функция может быть, может не быть. Не проще ли в базовом классе сделать эту функцию и возвращать ей ноль? Ну или если у тебя все завязано на классы Generator/Consumer то сделать проверку что объект является их наследником. Хотя мне кажется проще функции сделать в базовом классе.

>>638457

Пруфы?

>>638469

> Его нужно применять чтобы классы как бы не пересекались с друг другом, а как бы первый класс передавался на вход другого,
Это называется зависимости - одному объекту для работы нужен другой. Вполне обычная ситуация. Идея DI в том что объект не должен сам искать или создавать свои зависимости, а в том что ему передает их снаружи тот кто его создал. Обязательные зависимости через конструктор, необязательные через метод-сеттер (необязательные - это например объект-логгер - работать можно и без него, только логи никуда не пишутся).

> Точнее сказать, не могу понять как применить это к конкретно моей проблеме со статическими методами
Отказаться от статических методов.

> В этом классе делать метод setRegistrationHelper(RegistrationHelper $reghelper) и вызывать его далее:
> Мне все равно придется писать где-то в начале $reghelper = new RegistrationHelper()
Верно, где-то нам все равно надо создать объекты. Тут есть такие варианты:

1) создавать их в скрипте инициализации, bootstrap или init, если их немного
2) сделать контейнер или сервис локатор, который умеет их создавать. Создать контейнер в скрипте инициализации и передавать в контроллер. А контролллер из контейнера получает нужные ему объекты-сервисы. Только не злоупотребляй этим - не надо контейнер передавать везде, иначе мы опять получаем что неясно от чего зависит класс.

> Я не хочу так делать, я хочу чтобы я вызвал одну единственную функцию и все было готово как я это сделал здесь
Тогда тебе нужен контейрнер, который умеет сам создавать нужные объекты.

> Это вообще входит в рамки задачи?
Конечно, полезно разобраться. Ты должен в своей программе понимать каждую строчку, почему и зачем она так написана.

> Неужели я обречен всегда пользоваться инъекциями и забыть про статические методы?
Неужели ты обречен писать хороший код, а не спутанную лапшу?

> Зачем их тогда вообще сделали,
Сделали чтобы отвязать классы друг от друга. Чтобы в классе не были жестко прописаны его зависимости. Чтобы было можно их подменять, чтобы было удобнее тестировать по отдельности, чтобы код был лучше.

Смотри как статические методы отравляют код. Если тебе в RegisterHelper нужен например маппер, тебе придется его создавать там внутри. А тому нужен ПДО - надо опять же его создавтаь. Вот так все получается намертво спутано - мы не можем взять и вместо PDO передать какой-нибудь объект который например логгирует все походящие через него запросы.

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

Я же писал в уроке, DI позволяет нам разделить классы, это как устройства с разъемами, которые соединены проводами и которые можно переподключать. А статические методы это когда все намертво припаяно друг у другу.

> будут ли от них избавляться(или уже избавились)?
Нет. Избавляться мы будем от засилия статических методов и спутанного кода.

> Извиняюсь что так много вопросов, просто я совсем не понимаю это.
Задавай еще. Важно разобраться.

>>638474
> Здесь мне тоже нужно будет пользоваться инъекциями зависимостей?
> public function addStudent(Student $student, Container $container) {
Это какая-то странная зависимостей. Ты пока не понял принцип. Какой смысл в addStudent передавать какие-то лишние объекты? Контейнер всегда один и тот же, значит незачем его передавать каждый раз, можно один раз его передать при создании объекта.

Вторая ошибка - ты передаешь слишком много. Вот я смотрю на этот метод и не понимаю: что я должен передать ему? То есть я вижу, что контейнер, а что в нем должно быть? Непонятно. Надо указывать конкретные сервисы которые нужны, а не передавать контейнер непонятно с чем.

То есть должно быть ясно видно, какие зависимости есть у класса.

То есть давай я попробую повторить принципы хорошего кода:

- класс не должен сам создавать или искать нужные ему объекты (зависимости) - создавать их это задача того, кто создает объект
- класс должен позволять подсунуть ему объект с другими настройками. например если классу нужен объект PDO, мы должн иметь возможность задать для него произвольные настройки, или вообще сделать наследника этого класса и передать объект-наследник PDO вместо PDO
- должно быть четко обозначено, какие есть зависимости у класса - нельзя указывать контейнер
- зависимости надо разделять на обязетельные и необязательные (без которых класс может работать)
- должно быть сделано так, что нельзя создать неработоспособный объект. Например, если объекту для работы нужен PDO, то надо передавать его через конструктор, чтобы нельзя было создать объект не передав ему все нужное для работы. То есть если я смог создать объект - он должен работать

Часть этих принципов не относится к контроллеру. Например, в контроллер можно передавать конейтнер и не обозначать четко его зависимости (хотя есть и те кто считает что это плохо).
Ответы 27-31 Аноним 2016/02/03 01:41:11  №641542
>>638595

Поставь echo который выводит ситуацию на каждом месяце, чему равны все переменные, и попробуй разобраться.

>>638647

Хорошо, а теперь убери еще строчки которые повтряются 2 раза:

> $paymentTotal = $paymentTotal + $creditBalance;
> $creditBalance = $creditBalance - $creditBalance;

>>638700

Решено верно. Но можно еще улучшить код, если проверку на то что набран миллион поставить в шапку цикла (внутрь круглых скобок), а вывод информации поставить после цикла.

>>638849

Норм, хотя проверку на достижение миллиона можно бы поставить в шапку цикла.

>>639092

Нет, не одно и то же. Видимо, плоховато знаешь. Куки - данные, которые хранятся в браузере пользователя. Сессия- данные, которые хранятся на сервере, а идентификатор сессии хранится у пользователя в куке.

>>639114

> PHP Notice: Undefined variable: paymentTotal in /home/LwUcTo/prog.php on line 9
> PHP Notice: Undefined variable: paymentTotal in /home/LwUcTo/prog.php on line 9
Ошибка из-за обращения к еще не существующей переменной. Надо исправить.

Выражение ($credit * $percent) + $commission повторяется 3 раза, надо бы избавиться от повтора.

Если поставить сумму в 1000 р то считает неправильно - во втором банке должно быть 2030 р, а не 2940: http://ideone.com/kzHxKh

Пока не годится.
Тред закрыт Аноним 2016/02/03 01:43:42  №641543
Все, тред закрыт. На все вопросы даны ответы. Если кого-то пропустиили или забыли - напомните о себе в новом треде >>639138 (OP)

Не пишите здесь. Никто вам не ответит. Идите в новый тред.

Клуб изучающих PHP 67 Аноним 2016/01/06 08:09:59  №619873 [Просмотреть]
14520569993670.png (91, 500x500)
500x500
14520569993691.png (979, 1024x683)
683x1024
14520569993722.png (333, 1920x1080)
1080x1920
14520569993793.png (718, 843x1200)
1200x843
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>612122 (OP)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2016/01/20 06:37:57  №629821
>>628112

Для айпишников наверно незачем таблицу делать.

>>628119

Это делается через создание анонимного пользователя при первом лайке. При регистрации анонимный пользователь просто получает логин и пароль.

>>628125

На идеоне неудобно писать больше 20 строк. В ОП посте есть уроки по установке апача и пхп, и поставь себе редактор или ИДЕ. Саблайм текст и нотепад++ оба очень легкие и работают даже на слабом железе.

>>628281

> var fn = [].shift.apply(arguments);
arguments это не настоящий массив и не переменная, а псевдопеременная. Не стоит ее менять, только читай из нее. fn лучше указать в скобках.

Ошибки у тебя есть. Например если в arguments много аргуменитов, а в args мало (названия кстати не очень удачные, лучше inner/outer наверно) то лиишние аргументы из arguments должны идти в конец списка, а у тебя не идут:

partialAny(fn, 1)(2, 3, 4, 5) -> fn(1, 2, 3, 4, 5)
Тред закрыт Аноним 2016/01/20 06:48:32  №629827
Этот тред закрыт. Переходите в новый >>629822 (OP)

Не пишите здесь больше.

Ответы на посты с 18 по 20 января будут здесь сегодня или завтра. ответы на посты по 17 января идут выше. Если вас пропустили - напомните о себе в новом треде.

Этот тред закрыт.
Аноним 2016/01/23 08:39:41  №632587

Клуб изучающих PHP 66. Предновогодний часть три. Аноним 2015/12/25 16:35:20  №612122 [Просмотреть]
14510505203380.jpg (113, 360x352)
352x360
14510505203391.jpg (1816, 1800x768)
768x1800
14510505203532.jpg (220, 604x396)
396x604
14510505203543.png (431, 800x500)
500x800
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>597909 (OP) (OP)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
http://integer64.github.io/ Аноним 2016/01/08 12:27:14  №621519
>>619554

>>>Почему width 100%?
> Гугль дал такое решение для адаптивности картинок
Мне не нравится то что с width 100% мы в теории можем получить ситуацию когда картинка будет увеличена. Надо бы посмотреть нельзя ли заменить это на max-width: 100%;

В остальном если ты исправил предыдущие замечания, то все ок.

> Задача 11:
>>>перемещаться с клавиатуры, клавишами Tab, Shift + Tab, стрелками, пробелом.
> Реализовал, добавил для checkbox на :focus бордер тень,что бы было видно.
Это хорошо, я вижу тень на нижнем переключателе. А на верхнем - нет. Нужен скриншот/гифка?

Также, я заметил что при клике по нижнему переключателю он обводится рамкой. А вот если сделать обычные чекбоксы https://jsfiddle.net/n6f37jna/1/ - то они обводятся рамкой только при навигации с клавиатуры, при клике не обводятся. Почему так? я решил сам разобраться, сделав такой пример:

https://jsfiddle.net/n6f37jna/3/

Тут в Хроме как при клике, так и при клавиатурной навигации чекбокс становится большим (то есть получает фокус). Но только в случае клавиатурной навигации появляется синяя рамка. Видимо дело в свойстве

:focus {
outline: -webkit-focus-ring-color auto 5px;
}

Которое встроено в браузер. Видимо этот focus-ring появляется только при навигации с клавиатуры. Соответственно у меня возникла мысль: нельзя ли сделать аналогично. То есть не ставить стили на фокус, а засунуть инпут под кнопку, чтобы при навигации с клавиатуры стала видна синяя рамка. Не знаю, можно ли такое реализовать и будет ли это работать не под вебкитом. Наверно, не стоит, пусть лучше тень остается.

Так, в общем хорошо сделано, надеюсь теперь ты научился делать простые виджеты на CSS3.

Задача 12
> Переделал, совсем без id у меня не получилось, надо было как то input с label связать. Может быть есть другое решение.
Можно через классы, можно через атрибуты. Без них можно таким интересным способом: http://chikuyonok.ru/2009/04/dl-tabs/ но он не поддерживает вывод заголовков вкладок в несколько рядов.

http://integer64.github.io/site-layout/exercise/exercise12.2/index.html
Это выглядит хорошо. Только с фоном страницы косяк - если сильно уменьшить масштаб или взять большой монитор то фон плохо стыкуется. Советую заменить фоновую картинку на CSS3 градиент, а то жалко хорошую работу таким багом портить.

> data-header="Tab 1"
Лучше наверно просто data-tab="1", зачем тут слово Tab?

Ну и если делать совсем идеально, я бы еще для имен классов применил БЭМ. Ну это не обязательно, меня и в нынешнем виде устраивает, хорошее решение. Старайся и дальше при верстке продумывать такие вещи как: независимость блоков (стили не должны конфликтовать с другими блоками страницы, блоки должны иметь возможность вкладываться друг в друга), слишком длинные или слишком короткие заголвоки, отображение на маленьких экранах.
Аноним 2016/01/08 12:28:04  №621520
>>619583

> Первая http://pastebin.com/Q5CLkzck
Все правильно.

> Вторая http://pastebin.com/6w0GqbW
Тоже верно.

> Третья http://pastebin.com/G4kUKzeL

> if ($anonSum > $compSum) {
> if ($anonSum < $compSum) {
> If ($anonSum == $compSum) {
Тут лучше все ифы в программе объединить в один блок if ... elseif ... elseif .. .else чтобы было видно что возможен только один из 4 вариантов. А exit убрать за ненадобностью.

> Стоило ли их вообще тут постить,
Ну видишь, совет получил полезный.

>>619650

Код бы запостил.

>>619651

Отвечал вроде в новом треде - давай конкретные примеры.

>>619742

undefined index значит что ты пытаешься получить индекс массива котрого там нет, то есть не передан id. Надо переделать, чтобы обращаться к этому индексу только если он там есть.

Насчет 502 ошибки - не знаю, это что-то другое.

>>619807

Легко. Ищи случаи когда идет запятая, за ней слово но, за ним граница слова.

[^\\s] значит «один любой символ кроме пробела». Это наверно не то что требуется.

>>619816

Вроде в новом треде прокомментировал? Если нет, запости в новый тред.


Аноним 2016/01/08 12:29:17  №621522
Все задачи проверены. Если я кого-то не проверил - пишите в новом треде >>619873 (OP)


Клуб изучающих PHP 66. Предновогодний часть два. Аноним 2015/12/17 03:04:08  №605630 [Просмотреть]
14503106484290.jpg (430, 1024x768)
768x1024
14503106484311.jpg (1238, 1680x1050)
1050x1680
14503106484442.png (518, 800x500)
500x800
14503106484463.png (388, 800x600)
600x800
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>597909 (OP)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2015/12/27 01:50:30  №613296
>>612071

По коду в таблице utf-8 либо вставив символ.

if ($char == '-'_) ...
if ($char == "\x12\x34") ... где 12 34 - шестнадцатеричный код тире в кодитровке utf-8. Коды можно глянуть тут http://unicode-table.com/ru/
Аноним 2015/12/27 01:51:05  №613297
>>612099

Можно, смотри пост выше.
Аноним 2015/12/27 01:52:30  №613298
Этот тред закрыт Не пишите в нем. Если вас не проверили, не ответили, не заметили - переходите в новый тред и напомните о себе там: >>612122 (OP)

Все в новый тред >>612122 (OP)

Клуб изучающих PHP 65. Предновогодний. Аноним 2015/12/07 11:48:09  №597909 [Просмотреть]
14494780894900.png (53, 512x512)
512x512
14494780894911.png (407, 1920x1200)
1200x1920
14494780895012.png (472, 850x315)
315x850
14494780895043.png (1568, 1920x1080)
1080x1920
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>578124 (OP) (OP) ( не OP)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2015/12/19 07:14:08  №607193
>>604113

Паттерны надо учить после или параллельно с фреймворком, так как понять их по описанию, не видя примера кода очень трудно. Вообще совсем начинающему их учить бессмысленно, паттерны для тех кто имеет какой-то опыт.

>>604233

Заказчик имеет право предложить любую цену.

>>604257

> Там ведь при втором вызове функции, когда isThrottled будет равно true, аргументы и контекст запомнятся и при следующем вызове setTimeout должна вызваться обёртка именно с этими аргументами, но на деле он их игнорирует и переходит к следующему вызову.
А ты посмотри на код:

if (isThrottled) { // (2)
savedArgs = arguments;
savedThis = this;
return;
}

Допустим что у нас isThrottled = true и поставлен таймер (на 2-м вызове). Если мы (в 3-й раз) вызовем функцию до его срабатывания, то аргументы и контекст перезаписываются. И при срабатывании таймера функция вызовется с самыми последними аргмуентами.

>>604541

Ты в своей тестовой программе выводишь только первые 3 аргумента. Выводи все, что получила функция, например через console.log(arguments);

Тест проверяет не только переданы ли требуемые аргементы, но и не пришло ли что-то лишнее.

Также, в силе остаются все предыдущие советы. Сейчас твой код понять довольно сложно, так как ты там модицифируешь arguments и как-то сложно в него вставляешь новые данные. Я бы тебе не советовал этого делать, я не уверен вообще разрешено ли что-то писать в arguments и не вызовет ли это плохих последствий. Я советую сделать новый пустой массив и в него складывать аргументы.

Также, ты можешь просмотреть исходный код тестов, если не понимаешь что именно проверяется: https://github.com/dKab/jasmine-tests/blob/gh-pages/6.js

Однако помни что главное это условие задачи. Не надо подгонять программу под тесты, особенно если в них ошибка. Надо сообщить мне об ошибке и я ее исправлю.

Я взял код отсюда http://jsfiddle.net/hyzuh3zt/ и вставил в проверялку. Давай разберем например эту оши,ку:

> должна подставлять undefined если аргумент не передан в partialAny(fn, a, undefined, undefined, b)
В тесте делается такая проверка:

partialAny(test2, undefined, 1, undefined, 2, undefined, 4)(7) === {a: 7, b: 1, c: undefined, d:2, e:undefined, f: 4}

А теперь запустим твой код и посмотрим что он вернет в такой ситуации: http://jsfiddle.net/ccww7ets/1/

[7, 1, 2]

Совсем не то, что надо. Надо вернуть [7, 1, undefined, 2, undefined, 4]
Аноним 2015/12/19 07:14:28  №607194
>>604953

Свойство новое в модель добавил?

>>604965

Наверно никак, это на JS делается

>>605088

Поиск сделан верно.

> Я сделал его в 2х вариантах: с делением на каждое слово (ищет только первую изменённую букву/ы, формально под постановку задачи подходит) и вариант без разбиения (тогда под раздачу попадает английское слово с русскими буквами, но выглядит красивее и ищет ошибки в обоих языках).
Тут можно сделать по-другому. Разбить текст на массив слов, и каждое слово проверять на наличие букв противоположного алфавита. Тогда выделены будут все замененные буквы.

> замена букв

> function($matches){
> global $replacementRus;
Лучше так: function($matches) use ($replacementRus), мануал http://php.net/manual/ru/functions.anonymous.php

> Второй меняет всё подряд, но я так и не смог написать регексп, который на ходу понимал бы, с какой буквы начинается слово, при этом без побочных эффектов. И главное - непонятно, как регекспом и менять несколько букв подряд.
Возможно тут лучше разбить текст на массив слов и обрабатывать каждое отдельно. Исправлять просто заменой букв на латинские или русские в зависимости от языка слова.

> $pattern = '/([а-яё]+)([a-z]+)/ui';
> if ($matches[2] == $engLetter){
Тут явно ошибка так как если идет 2 или более английских букв, замена не сработает. Заменить проще через strtr, которой дать массив букв: $x = strtr($x, $replacementArray);

>>605101

Быстро - нет.

>>605151

В телнете есть какая-то комбинация клавиш для выхода, вроде тильды и точки или как-то так. Погугли, почитай мануал, я не помню.

>>605541

Алгоритм такой. Попробуй переписать код внутри цикла примерно так:

- прибавляем проценты и комиссию к остатку долга (!не вычитаем ничего пока!)
- если остаток маленький, выплачиваем сколько осталось и уходим
- иначе платим 5000

«Платим» здесь значит уменьшаем долг и увеличиваем общую сумму выплаченного.

>>605638

Он пока основы изучает, без библиотек. И у тебя в коде ошибка:

> $socket->setBlocking(false);
....
> $socket->write("GET {$uri} HTTP/1.1\r\n\Host: {$host}\r\n\r\n");
> var_dump($socket->read(8192));
Нет гарантий что ответ успеет придти, это же асинхронный сокет. Надо убрать setBlocking из кода.

С асинхронным сокетом должно быть что-то вроде

$socket->on('write', function () {
...
});

или

$socket->write(..)->then(function () { .. })

Но эта библиотека так не умеет, как я понял. Там фактически нет поддержки асинхронной работы. А в ratchet - есть.

Плюс еще подробности ошибки не репортятся: https://github.com/clue/php-socket-raw/blob/master/src/Socket.php#L306

Лучше уж racthet.
Аноним 2015/12/19 07:15:17  №607195
Этот тред закрыт. Не пишите здесь ничего, переходите в новый тред: >>605630 (OP)

Если я вам не ответил или пропустил - напомните о себе в новом треде.

Клуб изучающих PHP 64 Аноним 2015/11/25 08:47:55  №588512 [Просмотреть]
14484304752150.jpg (275, 1658x851)
851x1658
14484304752161.png (134, 1245x756)
756x1245
14484304752192.png (331, 800x436)
436x800
14484304752203.png (1657, 1920x1200)
1200x1920
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>578124 (OP) ( не OP)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2015/12/09 05:34:38  №599713
>>596892

Это отвратительно сделанная страница. Вот почему:

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

Посмотри как сделаны мобильные версии маазинов, например http://lamoda.ru

То, что у тебя -это не адаптивная версия, а бессмысленное нагромождение блоков. Посмотри как сделаны известные магазины (ламода, ситилинк, юлмарт, эльдорадо и тд) и просто скопируй структуру страницы у них.

>>596966

> Но школьник может заплатить только 5000 рублей. Я имею ввиду StrawberryBank требует 7777 единоразово, так что школьник просто не сможет взять у них кредит. Или я что-то неправильно понял?
Банк не требует платить 7777 сразу, они просто добавляются к сумме долга, то есть в первый же день школьник должен 47776 (39999 + 7777) р.

По коду:

> $creditsum x $per ) + $komission;
> $paymentTotal = $paymentTotal + $LastTransact;
избавься от повтора кода

Число 39999 повторяется 3 раза - избавься.

> PHP Notice: Undefined variable: paymentTotal in /home/Xd2SZt/prog.php on line 14
Это надо исправить, ты обращаешься к переменной ктоторой в тот момент еще не существует.

> softBank: 60260.891466803
А должно быть 61270.

Вот еще пример, я подставил сумму долга 4000, должно получиться 6123 во втором банке, у тебя 5120: https://ideone.com/S93B6o

>>596967

По моему ничем не плох.

>>597320

У тебя как я понимаю, задача пока не дорешена (не все виды номеров поддерживаются), потому пока проверять особо нечего.
Аноним 2015/12/09 05:35:18  №599714
>>597420

Вообще, HTML лучше бы вынести в отдельный файл-шаблон

> <?php echo
<?= короче будет

> if ($op2 == 0) {
> echo 'На ноль делить нельзя!';
неправильно выводить текст до <html>. Лучше сделать чтобы ошибка выводилась в специально отведенном месте страницы.

> <br>
Неправильно верстать с помощью br. Гораздо правильнее поместить 2 блока в 2 отдльных дива:

<div>input, select, input</div>
<div>Result: .... </div>

Также, обрати внимание, у нас в ОП посте есть задания по HTML/CSS если ты хочешь разобраться в них лучше.

> <input type="submit" value="calc!" />
Слеш в конце одиночного тега в HTML не нужен. Это не XML.

> <?php if(isset($res)): ?>
Неправильно когда переменная может существовать, а может и нет. как писать надежный код если непонятно есть ли такая переменная?


>>597719

Если открыть консоль (Ctrl + Shift + J) то причина ошибки видна ясно:

> Uncaught SyntaxError: Unexpected token +=
Нельзя писать var x += 1, можно только var x = 1;

Яваскрипт пока не запрещает дважды объявлять переменную, хотя по моему должен бы запрещать - это может быть опечаткой или ошибкой.

Еще чуть-чуть про объявление переменных ты можешь прочесть у меня: https://gist.github.com/codedokode/ce30e7a036f18f416ae0#Порядок-создания-переменных

> Вроде бы перед выполнением скрипта интерпретатор проводит какой-то анализ и собирает объявления всех функций и переменных, казалось бы он должен просто проигнорировать второе объявление одной и той же переменной, ан нет.
он так и делает

> ошибки он теперь не выводит
Используй консоль в отладчике: http://learn.javascript.ru/debugging-chrome
Тред закрыт Аноним 2015/12/09 05:35:48  №599715
Этот тред закрыт. Переходите в новый, 65-й >>597909 (OP)


Клуб изучающих PHP 63 Аноним 2015/11/11 04:45:22  №578124 [Просмотреть]
14472063225470.jpg (5, 204x204)
204x204
14472063225471.jpg (58, 1366x768)
768x1366
14472063225482.jpg (663, 1920x1080)
1080x1920
14472063225583.jpg (108, 1024x780)
780x1024
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>569049 (OP) ( не OP)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2015/12/06 10:10:20  №596954
14493858203230.png (551, 600x509)
509x600
У кого нибудь была проблема что хром подгружает какую то вашу страничку если просто написать ее в адресной строке? У меня из за этой хуйни вызвался скрипт который добавляет данные в базу.
Какие есть способы для борьбы с этим?
Аноним 2015/12/06 14:09:51  №597074
14494001917290.jpg (47, 444x472)
472x444
что не так делаю? Надо чтобы каждое предложение начинались с заглавной буквы.
http://ideone.com/0lwFWs
Аноним 2015/12/06 15:42:47  №597158

Клуб изучающих PHP 62 Аноним 2015/10/30 10:00:23  №569049 [Просмотреть]
14461884236270.png (32, 500x500)
500x500
14461884236271.jpg (132, 1024x683)
683x1024
14461884236302.png (184, 853x480)
480x853
14461884236333.jpg (118, 1280x720)
720x1280
Добро пожаловать в наш уютный тредик. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.

Это тред для начинающих. Не написал за свою жизнь ни одной программы? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>558058 (OP)

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП отвечает даже на самые нубские вопросы. ОП заходит где-то раз в день-два, не жди его, решай задачки дальше.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Учебник дает основы языка PHP, но чтобы делать сайты, этого недостаточно. Если ты его прошел, то надо переходить в более серьезным задачкам, которые научат тебя как выдавать страницы в браузер, работе с таблицами в БД, работе с формами, MVC.

- Простая, но полезная задача сделать список студентов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Yii2: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование
- Если ты все решил, переходи к Symfony 2/Doctrine 2

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://gist.github.com/codedokode/10774100
https://gist.github.com/codedokode/7054af4a03865c4cc863

Может тебе понадобится пользоваться командной строкой, вот гайд https://gist.github.com/codedokode/10539568

Вот небольшой туториал по тому как начать использовать PHP на сервере для отдачи странички в браузер: https://php.net/manual/ru/tutorial.php Увы, уроков плавно подводящих к тому, как сделать задачи выше, пока нет, так что если что, задавай вопросы.

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://gist.github.com/codedokode/58ebc90bd006baf4b35c
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://gist.github.com/codedokode/10539213

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Нужен ли ООП, фреймворки, MVC? — Да, однозначно. Посмотри любую вакансию.
Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.net/45000175 и получи личную немного устаревшую копию сайта
Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.
Нажмите Просмотреть, чтобы открыть.
Аноним 2015/11/12 03:58:16  №578913
>>577910

> Можно ли вызвать метод класса foo?
Для этого класс bar должен где-то иметь ссылку на класс foo (что за привычка писать классы с маленькой буквы? сбивает с толку). Такое часто бывает, что 2 класса содержат ссылки друг на друга (например начальник на подчиненных, а подчиненные на начальника), но система получается сложнее.

Как передать ссылку? Ну можно например в конструкторе foo внедрить ее в $a через какой-то метод $a->setFoo($this);

>>577946

У тебя 7 языков программирования или 7 языков народов мира? В первом случае, думаю, все будет в порядке. Спрос на грамотных разработчиков высок. Поиски можешь начать с geekjob, moikrug, hh.ru

>>578117

Слушай, тут слишком много кода чтобы разбираться. Упрости пример до минимума, чтобы там было не больше 3-4 тегов и залей на jsfiddle или подобный сайт, чтобы сразу можно было посмотреть. Также напиши свое видение ситуации: какие методы позиционирования тут можно бы применить и что в них не устраивает тебя.

Ну и держи ссылку на хороший учебник по позиционированию, читать снизу вверх: http://softwaremaniacs.org/blog/category/primer/

И у нас в ОП посте есть хорошие задания на HTML/CSS которые помогут тебе разобраться с версткой. Обрати на них внимание.

>>578125

Ну ты торопыга. Тред создан всего 10 дней назад и в нем даже 650 постов не набили еще.
Аноним 2015/11/12 03:59:18  №578914
>>578842

Это хорошо, что ты занимаешься тестами производитльности. ab это конечно самый простой и примитивный инструмент, но для начала сгодится. Например его недостаток в том что он долбит одну страницу, данные могут закешироваться, в то время как реальные посетители будут слать разные запросы к разным старницам.

Смотри, на что надо смотреть:

> Requests per second: 3.49 [#/sec] (mean)
3 запроса в секуду обрабатывается. Это очень мало. Смотри, допустим 1 человек просматривает в среднем 15 динамических страниц (это зависит от специфики сайта, на форуме например эта цифра значительно больше, на новостном сайте может быть меньше). Твой сайт сможет обработать в сутки 86400 x 3.5 = 300 000 запросов или 20 000 посетителей. Это очень мало.

> Failed requests: 0
Это хорошо, что не было ни одной ошибки. Скорость не имеет смысла если ответ отдается с ошибкой.

> Time per request: 1430.804 [ms] (mean)
Время обработки запроса: слишком долго. Надо стремится к 50-200 (в зависимости от сложности сайта).

> Transfer rate: 236.08 [Kbytes/sec] received
Скорость передачи данных - очень маленькая из-за маленького числа обработанных запросов

> Connection Times (ms)
по этим данным можно попробовать понять какой этап обработки запроса долгий, например установка соединения или ожидание ответа. Установка соединения у тебя быстрая, а вот обработка и ожидание ответа очень медленны.

> Percentage of the requests served within a certain time (ms)
Сколько процентов запросов в какое время укладывается

Надо искать узкие места. Почему так долго обрабатывется запрос? Используется ли например ресурс процессора на полную мощность или процессор простаивает и ждет медленного диска? Если у тебя Линукс то для него есть куча полезных утилит: http://habrahabr.ru/post/114082/

Я советую применить htop, iotop, mytop. Если у тебя Windows, то попробуй диспетчер задач, начиная с семерки он неплох.

Замерь потребление процессора, используется ли он на 100% или простаивает? Какие процессы его используют и насколько? Достаточно ли памяти? Не идет ли своп? Сколько памяти занимают разные процессы? Как нагружен диск? Сколько трафика/IOPS? Не нагружена ли сеть, не идет ли обращение к внешним медленным ресурсам?

И кстати какое у тебя железо? Ты случайно не в вирутальной машине на китайском андроидофоне сервер поднял?

Для ОП-кешера стоит смотреть статистику его исплоьзования, много ли hits/misses, сколько занято памяти.

После этого можно спускаться на уровень приложения и смотреть запросы (часто неэффективный запрос может тормозить весь скрипт), и профайлер.

Я вижу в профайлере вызов CActiveRecord->findAll() который занял 74 мс, что-то много. Сколько ты там записей выбираешь? Эффективно ли? И еще вижу EAVACtiveRecord->findAll, который занимает около 40 мс внутри CListView->init

И еще у тебя 3600 вызовов Twig_template->getAttribute, не многовато ли? Это большая страница?

В общем, у меня ощущение, что кроме описанных выше нескольких функций, все остальное время размазано по куче мелких функций. И может быть система в общем медленно работает, что-то я там не вижу ничего особо длинного.

> Не знаю, о чем говорят тесты, но судя по логам yii, страница генерировалась 1.4 секунды, а по моему глазомеру даже дольше. Многовато что-то.
По глазомеру может быть больше, если браузер ждет пока загрузятся какие-то скрипты. График загрузки есть на вкладке Network инспектора.

> Что еще можно оптимизировать или закешировать?
Нужно для начала понять на что тратятся ресурсы системы, как загружен процессор. Кеширование это больше костыль, там и так много уровней кеширования (кеширование в БД например) и лишние слои могут только усложнить систему.

Тред закрыт Аноним 2015/11/12 04:00:42  №578916
Аноны, давайте переходить в новый тред >>578124 (OP)

Этот тред закрыт.

Если я кому-то не ответил, напомните о себе в новом треде.