«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP #107 Аноним 2019/01/21 02:53:29  №1331378 1
php-noob-01-new-year.png (88, 500x500)
500x500
cat-cafe-osaka.jpg (157, 1024x683)
683x1024
cat-sad.jpg (194, 1024x768)
768x1024
imoto-cosplay.jpg (59, 400x539)
539x400
Ну что, у кого-то начался рабочий год, у кого-то - учебный. А мы по-прежнему изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки, печем печенье и даже делаем простые сайты! Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

Да, в нашем треде отвечают почти на все вопросы, только бампайте каждые 5 дней. И не разводите флуд, если вам скучно, лучше сходите померзните на улице, например.

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

Предыдущий тред был тут: >>1305368 (OP) . Остальные треды есть в архиве: https://phpclub.tech/ (там есть поиск, так что можно легко найти обсуждение какой-то задачи или ответы на свой старый пост) или ищутся в гугле по словам "клуб изучающих php" и в архиваче.

Мейлач лежит, модератор зверствует? Есть запасной тред на доброчане: /s/res/23225.xhtml#i46467

Форматируй свой код, если хочешь, чтобы его читали (как, написано во втором посте).

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

С чего начать

У нас есть свои уроки по основам PHP, они собраны и выложены по адресу http://codedokode.github.io/phpbook (вас отредиректит на другой домен, не читайте, не сохраняйте, не запоминайте его, он временный). Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то можно начать с него. Он простой и понятный. Там есть задачи, их нужно решать (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению. С другой стороны, если этот учебник тебе не нравится, можно читать любой другой. Или официальный мануал. Или все сразу.

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

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

Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP, этого недостаточно. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL, PDO, работа с таблицами в БД, работа с формами, MVC, git, composer, JS, фреймворки, автоматизированное тестирование.

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

- для начала прочти урок https://github.com/codedokode/pasta/blob/master/soft/web-server.md
- установи Апач + PHP (советы выше и ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, PDO, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony 3/Doctrine 2
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.

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

https://github.com/codedokode/pasta/blob/master/soft/php-install.md
https://github.com/codedokode/pasta/blob/master/soft/apache-install.md

Может тебе понадобится пользоваться командной строкой, вот гайд https://github.com/codedokode/pasta/blob/master/soft/cli.md

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

Параллельно стоит подучивать английский, на первых порах можно без него, но по мере развития придется все чаще сталкиваться с англоязычными статьями, так что лучше не откладывать. Читать можно news.ycombinator.com - это что-то вроде их хабра. Также можно начинать смотреть фильмы и видео на английском.

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

- HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- 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://github.com/codedokode/pasta/blob/master/db/databases.md

Что почитать

- Мануал по 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
- Новости IT на англ. https://news.ycombinator.com/
- какой-то древний, устаревший, но большой и на русском справочник по веб-разработке, посоветованный аноном: https://starcat.dp.ua/doc/wdh/

Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492

У ОПа нет аккаунтов и групп вконтакте, в фейсбуке, в твиттере, все "пхп-треды" там поддельные.

Платиновые вопросы

- Почему PHP? Потому что вакансий море, и учить легко.
- Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.ru/6bfCY9lfl и получи личную немного устаревшую оффлайновую копию сайта (можно читать хоть на андроиде без интернета)
- Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery. У нас в треде были люди, которые практически с нуля учились и смогли найти работу.
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
Аноним 2019/01/21 02:54:24  №1331380 2
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

Если тебе лень выравнивать код руками, закачай его на http://beta.phpformatter.com/ и нажми «format». Робот исправит выравнивание и отступы в мгновение ока (да, прогресс не стоит на месте). Если ты используешь мощную IDE вроде PhpStorm, там тоже есть функция форматирования кода.

Горячие клавиши для форматирования кода в разных IDE: https://gist.github.com/codedokode/8759492

Вообще, в PHP долгое время не было единого стандарта оформления кода, все писали как попало и было много бардака, но сейчас дело лучше — есть стандарты PSR-1 и 2. Вот как надо оформлять код:

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт или slovari.yandex.ru и найди название для переменной там
- в именах классов используется CamelCase, первая буква большая, «_» может использоваться
- мы предпочитаем подстановку переменных вместо конкатенации строк: "I am $age years old" — хорошо, 'I am ' . $age . ' years old' — плохо из-за обилия точек и кавычек
- мы используем для отступов 4 пробела (можно настроить редактор, чтобы при нажатии Tab он вставлял 4 пробела)

Вот ссылка на стандарты, где все это описано подробнее и даны примеры оформления:

PSR-1: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-2-coding-style-guide.md
Аноним 2019/01/21 02:57:50  №1331382 3
Напомню себе проверить: 16/01/19 >>1328089 https://github.com/asdasdasdasddasasdasdas/StudentList

Кроме этого, я в прошлом треде ответил на все вопросы, проверил все задачки. Зайдите и посмотрите, если вы что-то спрашивали: >>1305368 (OP)

Если вас пропустили, напомните о себе в этом треде.
Ответы: >>1333958 >>1339036 >>1339037
Аноним 2019/01/21 03:05:20  №1331383 4
АЛЛИЛУЙЯ АЛЛИЛУЙЯ АЛЛИЛУЙЯ АЛЛИЛУЙЯ АЛЛИЛУЙЯ АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
АЛЛИЛУЙЯ
Аноним 2019/01/21 03:24:09  №1331384 5
Как новичок должен относиться к людям, которые пишут, что ООП это антипаттерн и он должен самоискорениться из мира проектирования програмного обеспечения?
Ответы: >>1331389 >>1331397
Аноним 2019/01/21 03:50:06  №1331389 6
>>1331384
Никак. У этого молодца просто работы нет, вот и путается под ногами.
Ответы: >>1331392
Аноним 2019/01/21 04:03:35  №1331392 7
>>1331389
Хочешь сказать, что ООП и паттерны это самое важное в программировании, верх мастерства разработчика?
Ответы: >>1331394
Аноним 2019/01/21 04:05:38  №1331394 8
>>1331392
Тащемта, разговор не про программирование, а про проектирование ПО.
Ответы: >>1331396
Аноним 2019/01/21 04:06:57  №1331396 9
>>1331394
Хорошо, хочешь сказать ООП и паттерны это верх мастерства проектирования ПО?
Ответы: >>1331402
Аноним 2019/01/21 04:14:07  №1331397 10
>>1331384
В том виде, в котором это существует сейчас - да, антипаттерн, дешевый понт, не являющийся чем-то выдающимся, хотя адепты поют об обратном. Современное ООП и паттерны - не более чем лозунги, а кто им следует - не более чем сектанты. Потому что оно ничего выдающегося из себя не представляет, с точки зрения грамотного инженера, но хайп такой огромный, как будто это лучшее изобретение человечества.
Ответы: >>1331400 >>1331402
Аноним 2019/01/21 04:26:21  №1331400 11
>>1331397
Так никто и не говорит про современное оопэ, где пишут процедурный код в классах. Я лично читаю старые книжки 20 века и черпаю идеи оопэ оттуда. Вот это действительно годнота, вот тогда реально умели люди программировать.
Ответы: >>1331410
Аноним 2019/01/21 04:34:59  №1331402 12
>>1331397
>>1331396
КАКАЯ НАХУЙ РАЗНИЦА, КТО КАК ПИШЕТ???

Люди, программисты, составляют договоренности по написанию кода. Так рождаются конвенции. Им нравится так писать, здесь нет правильного или неправильного подхода, как у врачей, здесь царит полная свобода действий.
А всякие сектанты, как вы, навязываете людям, которым удобно писать в стиле ООП, свою маниакальную идею отказа от современного ООП в угоду хуй пойми чему. Что вы забыли в треде языка, который может писать любыми способами? Идите в джаву и сисярп навязывайте свое мнение этим лохам, у которых в основе языка уже ООП-подход.
Ответы: >>1331406 >>1331411
Аноним 2019/01/21 04:41:12  №1331404 13
Вот если я допустим занимать одно временно фронт и эндом, то что мне нужно учить?
Ответы: >>1331409
Аноним 2019/01/21 04:44:56  №1331405 14
Кто-нибудь совмещает с основной работой? Если да, то как, удачно? Кто-то уже ушёл со своей специальности на кодера?
Ответы: >>1334852
Аноним 2019/01/21 04:48:16  №1331406 15
>>1331402
Ну попробуй откажись от активрекорда или датамапера или или адаптеров в любой dbal или фасадов в ларавеле, от декораторов которые используются повсюду, от эвентлисенеров.
Ответы: >>1331407 >>1331412
Аноним 2019/01/21 04:51:23  №1331407 16
>>1331406
По-русски можно? Ненавижу проггеров за то, что они смешивают инглиш и русиш. Учись, блять, разговаривать на русском, а не на неологизмах.
Аноним 2019/01/21 04:54:01  №1331409 17
Аноним 2019/01/21 04:54:57  №1331410 18
>>1331400
Идея ООП изначально была глупой. Алан Кей же был биологом, и еще очень любил громкие высказывания, якобы он все понимает лучше других. В математике насколько мне известно он ничего не открыл. Из этого следует, что у него была прочная профессиональная деформация в сторону биологии. Биология имеет мало общего с техническими науками, и инженерией. Но Кей все равно решил скрестить бульдога с носорогом. И насколько мне известно не реализовал свои громкие заявления. Его модель ООП так и осталась никому не известной, но из-за него появились другие модели, которые еще более провальны.

Поэтому книги по ООП, старые или новые, априори содержат в себе чепуху. Так как сама идея чепуха, а реализация еще хуже. И не стоит забывать, что ООП на классах не единственная модель. Есть еще прототипное ООП из языка Self, и якобы тру-модель из языка Smalltalk, которая потом (в Smalltalk-80 и далее, а может чуть раньше) тоже была сильно извращена.
Ответы: >>1331413 >>1331415 >>1337215
Аноним 2019/01/21 04:57:32  №1331411 19
>>1331402
Разница в том, что грамотного инженера сразу видно по темам, которые его интересуют. Если интересуется паттернами и ООП, значит априори кодер без знаний математики, без желания осваивать науки, без способности отличать хорошее от плохого. Человек вроде тебя, громкие истерики с матами, нежелание учиться, и т.д. и т.п.
Ответы: >>1331415 >>1331683
Аноним 2019/01/21 05:04:06  №1331412 20
>>1331406
Что ты сказать хотел? То что есть некий activerecord не означает, что ООП и паттерны это центр вселенной. Подходы могут быть и другие, не основанные на ООП, на объектах, и т.д. Ты цепляешься за слова, не понимая их сути. Ведь что такое объект? Вопрос не простой. Кто сказал, что объект это экземпляр класса? В ФП языках функции - объекты.

То есть, пересматривая ООП, нужно пересматривать и все термины. Потому что они уже как паразиты.

То что ты пишешь, можно назвать "Гради Буч головного мозга". Красивые термины, много слов, а смысла под ними никакого. Просто заучил и все. Это глупость, антинаучно, не может инженер быть таким, как обезьяна повторять одно и тоже. Он должен уметь мыслить.
Аноним 2019/01/21 05:04:25  №1331413 21
>>1331410
Да давайте в пхп треде филиал рентв устроим! Идея ООП глупая. Альберт Эйнштейн мошенник. Древние гиперборейцы умели летать в стратосфере. Как лечить геморрой огурцами...
Аноним 2019/01/21 05:08:39  №1331415 22
>>1331410
Обезвоженный вариант твоего поста: "мне не нравится ООП".

А почему, знаешь? Ты не привел еще ни одного доказательства того, что ООП это говно. Нет никаких тру в программировании и проектировании. Для компьютера это всего лишь единицы и нули. А проекты пишут люди так, чтобы им было удобно. Если бы идея ооп была говном, она бы уже давно провалилась, как ты выразился.

>>1331411
Я вообще считаю, что программа (любая) должна иметь одну точку входа и одну точку выхода. Программа должна выполняться построково, линейно, без гото и прочей мешанины классов. Программа, которая находится в одном файле и каждая строчка выполяется последовательно - это идеальная программа. А то, как разрабатывают современные разрабы это спагетти ебаное, в котором разбираться придется не один месяц.
Ответы: >>1331416 >>1331431 >>1331432
Аноним 2019/01/21 05:10:01  №1331416 23
>>1331415
Да ладно его кормить. Он тут уже черт знает сколько времени подвывает круглосуточно.
Ответы: >>1331419
Аноним 2019/01/21 05:13:46  №1331419 24
>>1331416
Покушать-то я сам хочу.
Аноним 2019/01/21 05:15:27  №1331421 25
Друзья, как закрепляете пройденный материал? И заучиваете ли вы наименования команд?
Аноним 2019/01/21 05:46:47  №1331431 26
>>1331415
>Если бы идея ооп была говном, она бы уже давно провалилась, как ты выразился.
Все наоборот. Глупые идеи всегда выстреливают, потому что умных людей, хорошо понимающих науку и инженерию единицы. Кто отвергнет ООП? Школьники, кодеры без образования? Только тот кто понимает математику, науку, и инженерию. Таких очень мало. Кто использует ООП? Все кому не лень. Но у них у всех есть общая черта, они не знают и не понимают математику. Так как не понимают математику, то не понимают и науку с инженерией в целом.

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

Математики и инженеры начала, середины, и немного конца 20-го века, были последними кто мог создавать шедевры. Делать вещи простые, компактные, функциональные, но без лишнего. Как пример Лямбда-исчисление Чёрча, и комбинаторная логика Шейнфинкеля-Карри. Кто из современных кодеров додумался до подобной идеи? Никто. Все только плодят бездумно лишние абстракции. Да еще и гордятся этим, задирают нос, думая что они умные.
Ответы: >>1331433 >>1331441 >>1337215
Аноним 2019/01/21 05:50:06  №1331432 27
>>1331415
>Я вообще считаю, что программа (любая) должна иметь одну точку входа и одну точку выхода. Программа должна выполняться построково, линейно, без гото и прочей мешанины классов. Программа, которая находится в одном файле и каждая строчка выполяется последовательно - это идеальная программа.
Не идеальная. Как тогда быть с параллельностью, если все линейно и построчно? В математических вычислениях нет течения времени, нет хранимого изменяемого состояния. А ты предлагаешь подход противополжный, где состояние будет постепенно изменяться, моделируя ход времени. Такие программы трудно параллелить, они ограничены по возможностям.
Ответы: >>1331441
Аноним 2019/01/21 05:50:36  №1331433 28
>>1331431
>Лямбда-исчисление Чёрча, и комбинаторная логика Шейнфинкеля-Карри
бесполезная хуета как впрочем и вся маняматика.
Ответы: >>1331444 >>1331459
Аноним 2019/01/21 06:05:30  №1331441 29
>>1331432
В математике нет параллельности. Соответственно, нет времени, которое бы эту параллельность имитировала.
>нет хранимого изменяемого состояния
Для этого и была придумана динамическая память.

>>1331431
Глупые идеи выстреливают не потому что все люди долбоебы, а потому что эта идея этим долбоебам подходит. Ведь почему сейчас все пользуются ООП? Потому что эти паттерны решают задачи большинства людей. А непонятые гении, как ты, сидят на задворках науки и пытаются что-то кукарекать. Но нуда им до голоса со стороны параши.

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

Ну это вообще ПУШКА. Ты похоже не выспался совсем.
Аноним 2019/01/21 06:11:03  №1331444 30
>>1331433
Вот так определяются быдло-кодеры.
Аноним 2019/01/21 06:14:05  №1331447 31
>>1331441
Любое математическое вычисление можно распараллелить. Так как нет течения времени. Время не имитирует параллельность. Время течет едино, как оно может быть параллельным? Наоборот, когда есть течение времени как в императивных и ООП программах, становится сложно выполнять параллельные вычисления. А так как архитектура компьютера без параллельного выполнения не может уже выдать больше мощности, программы приходится параллелить.
Ответы: >>1331457 >>1331460
Аноним 2019/01/21 06:16:07  №1331449 32
>>1331441
>Для этого и была придумана динамическая память.
Что? О какой памяти идет речь? Я говорил о том, что изменяемое состояние не позволяет параллелить, и приносит много других ограничений. Это решается очень просто, декларативными языками программирования, а все манипуляции с состоянием происходят на уровне уже процессора, после трансляции кода из декларативного языка.
Ответы: >>1331457 >>1331460
Аноним 2019/01/21 06:18:43  №1331451 33
>>1331441
>Глупые идеи выстреливают не потому что все люди долбоебы, а потому что эта идея этим долбоебам подходит. Ведь почему сейчас все пользуются ООП? Потому что эти паттерны решают задачи большинства людей.
Вот именно, большинство это просто пользователи. Они пользуются не задумываясь. Создать свое они не могут, они не умеют этого делать. А других создателей уже нет. За последние годы ничего не создано нового. Все основы Computer Science были заложены в 20-ом веке. Те кто формировал CS уже умерли, либо уже не у дел.
Ответы: >>1331460
Аноним 2019/01/21 06:19:46  №1331452 34
>>1331441
>Ну это вообще ПУШКА. Ты похоже не выспался совсем.
Покажи что в математике является лишним. Это та сфера, где все создано и используется для решения задач. Ничего лишнего. В отличие от программирования.
Ответы: >>1331460
Аноним 2019/01/21 06:30:42  №1331457 35
>>1331447
Ты понимаешь принцип параллелизма? Это значит, что программа начала выполняться в одной точке, из которой вызвались еще две программы, например, подключение к двум базам данных, а может и не из этой, а из другой программы, и пока эти процессы не завершатся, программа не продолжит выполнение. Это два процесса, которые могут зависеть друг от друга, а могут и не зависеть. И вторая программа может ждать первую, когда она завершится. Вопрос времени налицо.

>>1331449
> говорил о том, что изменяемое состояние не позволяет параллелить
Зачем по-твоему процессору кэш? Он ведь так же распараллеливает задачи и хранит временные данные, которые изменяются.

Ответы: >>1331460 >>1331461
Аноним 2019/01/21 06:44:27  №1331459 36
>>1331433
>бесполезная хуета как впрочем и вся маняматика.
Если бы не было математики, не было бы и программирования. Не было бы Лямда-исчисления, скорее всего не было бы и работ Тьюринга. Несколько математиков (Тьюринг, Чёрч, и другие) конкурировали между собой, поэтому родилось несколько фундаментальных основ программирования и вычислительной техники. Не будь конкуренции, у нас бы не было компьютеров.
Ответы: >>1331460
Аноним 2019/01/21 06:57:40  №1331460 37
Ответы: >>1331465 >>1331491
Аноним 2019/01/21 06:59:26  №1331461 38
>>1331457
Ты все запутываешь. Изменяемое состояние на уровне кода программы не позволяет просто и эффективно распараллелить. Потому что данные нужно как то синхронизировать. Если состояния нет, то и синхронизировать ничего не нужно. Поэтому ФП сейчас пошло в мейнстрим. Все ФП языки позволяют легко параллелить программы.

Причем тут кэш процессора? Кэш не параллелит, и не для этого вообще создан и используется.
Ответы: >>1331464 >>1331468
Аноним 2019/01/21 07:05:29  №1331464 39
Ответы: >>1331466 >>1331471
Аноним 2019/01/21 07:05:33  №1331465 40
>>1331460
Еще один быдло-кодер определился. С чего ты взял что я пишу на PHP? Это для начала, второй вопрос, чем PHP хуже других языков? Язык это инструмент. Грамотный инженер может писать код с помощью любого инструмента. Быдло-кодеру дай даже самый лучший инструмент, все равно он будет быдлокодить.

Не инструменты красят инженера, а инженер инструменты. Вот дадут тебе самый лучший язык, что изменится? Ты же так и будешь чепуху писать, называть всех дибилами, и писать говнокод.
Аноним 2019/01/21 07:06:29  №1331466 41
>>1331464
Еще один порвался. Измельчал нынче программист. Даже позицию свою отстоять не может.
Ответы: >>1331471
Аноним 2019/01/21 07:08:17  №1331467 42
>>1331465
>С чего ты взял что я пишу на PHP?
>чем PHP хуже
Пыходебил ну совсем не палится, ох лол.
Ответы: >>1331471 >>1331472
Аноним 2019/01/21 07:08:27  №1331468 43
>>1331461
>Изменяемое состояние на уровне кода программы не позволяет просто и эффективно распараллелить.

Я тебе об этом и пишу. Есть два состояния: до распараллеливания и после него. В первом случае данные рассекаются на потоки и обрабатываются программой, во втором - данные синхронизируются и образуют единое целое. Такой принцип работает в видеокартах, например, и в ЦП.
А кэш нужен для того, чтобы эти переходные значения хранить. Я и не говорил, что кэш параллелил что-то.
Ответы: >>1331470 >>1331474 >>1331478
Аноним 2019/01/21 07:10:07  №1331470 44
>>1331468
>Есть два состояния: до распараллеливания и после него.
А вот этот - обычный шизик.
Аноним 2019/01/21 07:10:21  №1331471 45
Ответы: >>1331473
Аноним 2019/01/21 07:11:54  №1331472 46
>>1331467
Я могу писать почти на любом языке. Когда я был таким как ты, мне тоже не нравился PHP. В основном потому что такие как ты его поливают грязью. С опытом, увидев много других языков, я понял что язык это инструмент, и можно писать и на PHP в том числе. Все зависит не от инструмента, а от того кто его использует.

Назови 3-5 хороших языков по твоему мнению.
Ответы: >>1331475
Аноним 2019/01/21 07:12:59  №1331473 47
>>1331471
>это замшелое говно для ограниченного быдла
Ясно.
Аноним 2019/01/21 07:13:41  №1331474 48
>>1331468
Ты говоришь об императивной модели, а я о декларативной. В ней все под другому. Посмотри на математические вычисления. В них в принципе нет состояния, а значит и синхронизации. Можно распараллелить любой кусов вычисления.
Ответы: >>1331476 >>1331484
Аноним 2019/01/21 07:13:52  №1331475 49
>>1331472
>Я могу фантазировать на сосаке
Поправил эту мечтательную маню.
Ответы: >>1331477
Аноним 2019/01/21 07:14:56  №1331476 50
>>1331474
Это ты, гнида, хаскель форсила?
Ответы: >>1331490
Аноним 2019/01/21 07:17:06  №1331477 51
>>1331475
Вали нахуй отсюда, если бы ты знал что-то кроме жиквери и фреймворка пыховского, то ты бы тоже умел писать на всех языках. Ибо все языки, как бабы - одинаковые.
Ответы: >>1331481
Аноним 2019/01/21 07:19:22  №1331478 52
>>1331468
Зачем вообще смотреть на процессор? Есть ОС, которая дает абстракции процессов и прочего, есть язык программирования, который дает языковые абстракции. На этих уровнях нужно решать задачи. А на уровне процессора пусть решает ОС и компилятор.
Ответы: >>1331484
Аноним 2019/01/21 07:23:15  №1331481 53
>>1331477
>КУДАХ БАБАХ КУКАРЕКУ
Ясно.
Аноним 2019/01/21 07:31:17  №1331484 54
>>1331478
Напрямую ты, конечно, не повлияешь на работу процессора, но сможешь сильно упростить ему жизнь, если оптимизируешь свой код. Компилятор - машинка простая, она все переведет в инструкции для проца, а ебстись с утечками какими-нибудь тебе. Поэтому важно знать работу проца, ящитаю.

>>1331474
Я тебя понял. Мне как раз декларативная и не нравится тем, что там нельзя снаскоку понять, что происходит и сколько памяти затребует программа. При кажущейся краткости кода, куча неоптимизированных рекурсий может запросто засрать всю память. Собственно, как и циклы в импере, поэтому циклы - зло. Но зато более изящно решаются некоторые задачи, матан твой тот же самый.
Ответы: >>1331485 >>1331488
Аноним 2019/01/21 07:32:36  №1331485 55
>>1331484
>там нельзя снаскоку понять, что происходит
Просто ты тупой пыхыпыдаун
Аноним 2019/01/21 07:41:47  №1331488 56
>>1331484
Вот есть к примеру Haskell. На нем легко писать параллельные программы. И не нужно ни о чем заботиться, потому что всю грязную работу делает компилятор.
Ответы: >>1331490 >>1331503 >>1331510
Аноним 2019/01/21 07:44:23  №1331490 57
Ответы: >>1331505
Аноним 2019/01/21 07:45:13  №1331491 58
Аноним 2019/01/21 08:03:45  №1331503 59
>>1331488
Писать функциональный код можно на любом языке.
Как сказано - "программист на Фортране может написать программу на Фортране на любом языке программирования".
Первый язык определяет все. Поэтому ты мне тут и доказываешь, что функциональщина лучше ООП, с чего и начался наш спор, собственно.
Ответы: >>1331508
Аноним 2019/01/21 08:04:29  №1331505 60
>>1331490
Ничего ты не угадал. Это пример декларативного языка с возможностью легко писать параллельный код. Еще один пример Erlang.
Аноним 2019/01/21 08:10:13  №1331508 61
>>1331503
На Фортране нельзя. В нем нет даже рекурсии (раньше не было, сейчас может и есть). Писать можно, если в языке есть ФВП хотя бы. Только этот код все равно будет сложно параллелить. Так как транслятор языка не ориентирован на это.

ООП создавали люди далекие от науки. Поэтому имеем то что имеем. Сравнивать его с ФП глупо, потому что ФП имеет математический базис, и очень долгую историю, фактически почти 100 лет. По сравнению с этим ООП детская поделка.
Ответы: >>1331509 >>1331511
Аноним 2019/01/21 08:12:37  №1331509 62
099.gif (610, 480x228)
228x480
>>1331508
>ФП имеет математический базис
Ответы: >>1331515
Аноним 2019/01/21 08:17:51  №1331510 63
>>1331488

Хаскелл - прекрасный язык и полезен для расширения кругозора любому программисту. Непонятно только, зачем ты тут разводишь флуд вместо того, чтобы писать на нем свои прекрасные программы.

Не нравится PHP - не пишите. А вы разводите тут флуд на полтреда, что намекает на то, что вы в последнее время ничего не пишете, раз у вас так много свободного времени. Это тред для изучающих веб-программирование, так что выкатывайтесь обратно.

Алсо, https://habr.com/ru/post/315152/
Ответы: >>1331521
Аноним 2019/01/21 08:18:16  №1331511 64
>>1331508
Ты же понимаешь, что делать интернет-магазин на ФП это все равно что ездить на работу на ламборгини? Не тот это язык, чтобы пилить программы с простыми вычислениями %%и даже без оных%. Людям, далеким от науки, нужен был подход, который бы решал их задачи бизнеса. Вот они и придумали классовый подход для решения этой задачи. Они не были математиками, они высрали все, что смогли. И ты, инженер, сравниваешь себя с ними. Не стыдно?
Ответы: >>1331521 >>1331541
Аноним 2019/01/21 08:30:53  №1331515 65
>>1331509
Ах, ты оказывается даже не знал, что ФП основано на математических моделях. Конечно, откуда быдло-кодер может это узнать.
Аноним 2019/01/21 08:39:30  №1331521 66
>>1331511
Об этом я и говорил. Что в программную инженерию поналезли все кому не лень, и лепят кривые поделия с умным видом. А потом школьники, и прочие битарды, с не менее умным видом рассуждают об ООП, и пишут что математика не нужна, Лямбда-исчисление говно, и тому подобное. Смешно на это смотреть.

>>1331510
Не нравится не читай. Причем тут Haskell? У некоторых как будто мозг деревянный. Им про фундаментальные основы говоришь, они не понимают без примеров. Приводишь в пример какой то язык, начинают беситься что язык не тот. Ты вообще хоть что нибудь понял из того что прочитал? Haskell пример умного транслятора. Просто пишешь параллельный декларативный код, а транслятор его переводит в императивный.
Ответы: >>1331526 >>1331551
Аноним 2019/01/21 08:42:42  №1331526 67
>>1331521

Прекрасно, пишите декларативный код на любом языке, с или без ооп, только без флуда на 50 постов.
Аноним 2019/01/21 08:43:27  №1331528 68
Няши, у меня вордпресс генерирует в одну определённую страницу неизвестный Javascript код. Мне нужно сделать правку в этом коде, но я не пойму, откуда он берётся. Когда захожу в окно редактирования страницы в самом ВП, то его там нет, файла с таким содержимым я тоже не нашел (смотрел с wp-content/themes... и wp-included.
Сам ньюфаг в вордпрессе, взял задание на JS, а заказчик не сказал, что у него сайт на ЦМС.
С меня няши :з
Ответы: >>1331572 >>1331577 >>1331584
Аноним 2019/01/21 08:49:53  №1331541 69
>>1331511
С одной стороны это так, но с другой это выглядит чепухой. Если есть более совершенный подход, то его нужно использовать. Чем лучше решение тем лучше для всех. Если кто-то говорит, что нужно использовать более кривой подход, то он кто вообще? Получается уже наоборот, чем хуже тем лучше. Как я уже писал в одном из тредов, что подход ООП именно такой, чем хуже тем лучше. И вы все ему следуете, при этом пишите глупые детские шуточки про математику, Лямбда-исчисление, ФП языки.
Ответы: >>1331551
Аноним 2019/01/21 09:02:03  №1331551 70
>>1331521
>Об этом я и говорил. Что в программную инженерию поналезли все кому не лень, и лепят кривые поделия с умным видом.

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

>>1331541
>Как я уже писал в одном из тредов, что подход ООП именно такой, чем хуже тем лучше

Я помню тебя.

> И вы все ему следуете, при этом пишите глупые детские шуточки про математику, Лямбда-исчисление, ФП языки.

Ты ебаный фанатик, который везде насаждает ФП. Оно может и лучше во многом, но точно не для клепания сайтиков с их ебучей вариативностью. Иначе это будет та же самая мешанина.
Аноним 2019/01/21 09:27:16  №1331567 71
ajax-loader.gif (4, 32x32)
32x32
Доброго дня, вкатываюсь в тред успешных людей.
Хочу рассказать свою историю.
Программист, уже 23 года, заканчиваю профильный вуз.

Ранее пробовал искать работу на c#, но не прошел собес на джуна, к которому очень готовился, и перепутал паттерных. Меня не взяли. Потом было одно тестовое задание, но я не успел поднять asp.net mvc, и не смог его сделать.

Сейчас я работаю на php + html + js, пишу под один популярный шаблон магазинов, не важно. Делаю я это бесплатно, проект долгий, как закрою наверное заплатят.
Мне интересен веб, я прошел курсы по html + js, но из - за того что в моей работае эти почти не используется, я почти все уже забыл.

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

Вот так и сижу на тухлом стартапе с обещаниями золотых гор, и забываю то что знал ранее.
Сейчас хотя бы пишу дипломы на c# подзаказ, надеюсь смогу оплатить арендное жилье.
Аноним 2019/01/21 09:31:54  №1331572 72
Аноним 2019/01/21 09:37:44  №1331577 73
Аноним 2019/01/21 09:41:01  №1331581 74
>>1331567
Ну, скореллирую со своей историей.
>Ранее пробовал искать работу на c#, но не прошел собес на джуна
Я поначалу тоже на шарпе наяривал. Да и сейчас иногда. Но в моей мухосрани вообще такого не было и я пошел на первую же попавшуюся пхп галеру, как только деньги позарез стали нужны.
В будущем и на нем поработал, но немножко, и на других направлениях. Главным в итоге все равно бекенд остался, причем язык не важен, просто вакансий пруд пруди именно на пхп. Да и душа к нему лежит немного.
>Делаю я это бесплатно, проект долгий, как закрою наверное заплатят.
Тут смотри, как ты знаешь людей с которыми работаешь, и если что указывай авторство на интеллектуальную собственность, а не просто жди оплаты. А лучше всегда так делай, если не составлял договоров.
>мне высылают тестовое, я думаю что меня все равно не возьмут и не делаю его.
Делал тестовые в кучу разных контор, когда уже с более зрелым опытом работу повкуснее искал. С тебя не убудет, особено раз ты безработный по факту и не сильно устаешь. Делай, что сможешь, и забей. Потом их вообще не будут спрашивать, байки потравишь с техническим специалистом в конторе и вакансия твоя.
>Сейчас хотя бы пишу дипломы на c# подзаказ
Как-то раз я за конченный диплом заломил цену, которую студентики не смогли потянуть - как же меня обосрали, ууух. А так тоже мелочью по несколько часиков балуюсь. Это скорее отдых, чем работа.
28, помидор с зп 250к.
Ответы: >>1331622
Аноним 2019/01/21 09:42:33  №1331584 75
>>1331528
Поиском по файлам попробуй найти.
Аноним 2019/01/21 09:50:13  №1331593 76
>>1331567
Поныть можно в соседнем перезвоним-треде, тут люди решают задачи и идyт к ycпeхy.
Аноним 2019/01/21 09:53:28  №1331602 77
До сих пор не совсем понимаю нужду в интерфейсах и абстрактных классах.
Может кто oбъяснить на примерах?

Это просто как шаблон реализовав по которому класс, oн тoчнo будет верно работать?
Ответы: >>1331675
Аноним 2019/01/21 09:56:16  №1331608 78
Вопрос: Куда выкладывать решение js задачек?
Ответы: >>1331611
Аноним 2019/01/21 09:59:54  №1331611 79
Аноним 2019/01/21 10:07:44  №1331617 80
Есть ли возможность конструировать объявление namespace динaмически? Из строки например?
Или можно ли как-то сделать, чтобы неймспейсы по дефолту задавались в сooтветствии с путем к файлу, а не в глобал пихались?
Ответы: >>1331623 >>1331647
Аноним 2019/01/21 10:11:46  №1331619 81
Анон, как пользовaтьcя sublime text? Я вот скачал, установил и все. Написать я в нем могу, а как запустить этот скрипт?
Ответы: >>1331638
Аноним 2019/01/21 10:12:52  №1331622 82
>>1331581
>>1331567
Я вот как почитaю подoбные посты, что-то неуютно становиться.
мимо-студент-20 лвл
Аноним 2019/01/21 10:13:44  №1331623 83
>>1331617

Нельзя. Каждый класс относится к какому-то неймспейсу и это определяется еще до выполнения кода.

Что значит "в глобал пихaлись"? Ты ничего не путаешь?

Если тебе тяжело руками писать неймспейсы и use, поставь плагин к редактору, который это делает.
Ответы: >>1331629
Аноним 2019/01/21 10:18:38  №1331629 84
>>1331623
Тут дело в версионирoвании модулей.
Неймспейсы меняются абсолютно везде при создании новой версии, руками можно прaвить, но это пиздец долго и шанс накосячить ебливый.
Ответы: >>1331647 >>1331661
Аноним 2019/01/21 10:21:48  №1331638 85
>>1331619
Редактор для редактироания кода, а не запуска скриптов. Запускать скрипт надо из консоли:

рhр d:\tеmр\1.рhр

Почитай пасту про консоль из ОП поста.

Также, можно настроить саблайм чтобы он по какой-то кнопке запускал PHP, гугли как именно.
Аноним 2019/01/21 10:22:39  №1331640 86
>>1331567
И я вкачусь. Студент-мeханик ИTТ, 23 гoда. Заканчиваю магистратуру по направлению механика. Год проработал на заводике инженером-исследователем, думал пойти в науку, но что то совсем не идет у меня это дело. Все время хотел вкатиться в айти, но только начав изучать какой нибудь ЯП через день - два желание пропадало.
У вас тут уютненько в тредике, буду пытаться сделать студентиков!
Аноним 2019/01/21 10:27:21  №1331647 87
>>1331617
Объявление - нет. Использование можно, рефлексия работает с зарегестрированными автозагрузчиками. А вообще изза автозагрузки можно вообще на неймспейсы не ориентироваться (не делай этого, просто как пищу для размышлений дал).
>а не в глобал пихались
Они не пихаются. Ну вернее пихаются конечно, директивы же, но автозагрузку по стандартам можно как угодно извратить. Делать так не надо, но он же об этом спрашивал.
>>1331629
А вот тут я тебя понял. Я писал костылик для версий для одного проекта. Смена версий не была частой конечно, но нужно было сделать обратную совместить, то есть не терять код. Тут нихуя не поделаешь. Только оставить код прошлой версии позади например в другом неймспесе, а продолжать работать уже в новом.
Ответы: >>1331658
Аноним 2019/01/21 10:33:23  №1331658 88
>>1331647
>А вот тут я тебя понял. Я писал костылик для версий для одного проекта.


Типа когда версия апнулась и изменилась какая-нибудь мелочь и старые версии приложений начинают отваливаться, пока не обновятся? У нас старые версии затребовали оставлять на случай этого кaк раз. Старые приложения работают со старым апи, обновятся - работают с новым. Как-то так.
Ответы: >>1331662 >>1331666
Аноним 2019/01/21 10:35:12  №1331661 89
>>1331629

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

Заменить нeймспейс в большом количестве файлов можно также функцией "поиск/замена" в твоем редакторе кода.

Но я ни разу с таким не сталкивался и интуиция подказывает мне что ты делаешь что-то неправильно. Какое еще версионирование, наркоман?
Аноним 2019/01/21 10:35:33  №1331662 90
>>1331658
Да, именно для этого. Бывает и хуже. Например когда между версиями меняется схема хранилища, а надо и то и другое держать. В таких ситуациях та еще война идет между разработчиками и менелджерами. Первые опнимают, что проще плюнуть и заставить обновляться, вторым важно не потерять стареньких клиентов, которые или не умеют обновляться, или принципиально не хотят. Но так то все решаемо, просто не по красоте.
Аноним 2019/01/21 10:41:46  №1331666 91
>>1331658
Версионирование API это другое дело. Обычно в API действительно используют версию в URL, например:

/api/v2/cities

Нo для этого не требуется генерировать неймспейсы. Просто сделай для работы со старой версией АПИ старое приложение со старым кодом, а для новой - новую. Не надо все версии АПИ запихивать в одно общее приложение.

Если же речь о классах, и ты пишешь например библиотеку, то надо тоже сделать несколько версий библиотеки - наример lib1 для старых приложений и lib2 для новых, не стоит пытаться объединить это в одной универсальной библиотеке.
Ответы: >>1331672
Аноним 2019/01/21 10:47:36  №1331672 92
>>1331666
У меня было по другому. Определенное апи - это точка входа и логика только в этой части приложения. Но ее надо соотнести с прошлыми, чтобы не было и там и там поломок. И с соседними, где логика немного отличается и должна адаптироваться под общую схему. Копировать в такой ситуации было не вариант, хранилище на любое количество и тип приложений было одно - только выкручиваться оставалось.
Аноним 2019/01/21 10:49:32  №1331674 93
В Yii/Yii2 нет возможности сгенерить миграцию по мoдели?
Аноним 2019/01/21 10:51:09  №1331675 94
>>1331602
Ну смотри, допустим у тебя в приложении есть форма логина, пишешь для нее класс.
Затем тебе понадобилась форма регистрации, пишешь для нее класс.
Тут замечаешь, что добрая половина методов и свойств первой и второй формы совпадает.
Если ты быдлокодер и тебе нaсрать на качество твой работы, ты так и оставишь, тем более что ты никогда не писал приложение с более чем 2-3 формами.
Но если ты ответственный программист, то догадываешься, что копипастить куски кода из одного класса в другой наверное неправильно. Тем более что в серьезных приложениях родственных классов будет не 2-3, а десятки-сотни.
Пишешь абстрактный класс, который содержит в себе все общее, что есть у классов форм, называешь AbstractForm.
Наследуешь LoginForm и RegisterForm от AbstractForm, в них прописываешь только уникальные для данного класса свойства и методы.

Что касается интерфейса, то это набор требований к классу, то есть буквально мы пишем: "у всех классов, которые имплементируют данный интерфейс, должен быть определенный функционал (метод), неважно как они будут реализованы, но они должны быть". Пример не знаю какой привести.
Вот чувак приводит пример со столами https://toster.ru/q/10682
>Связью же интерфейсов и классов Вы описываете свойства. Например, стол можно катить: Table_Abstract implements Rollable. Деревянный стол, например, можно сложить: Table_Wood implements Foldable.
Обрати внимание, что Rollable (с колесиками) может быть не только стол, но и стул, кровать, то есть совершенно другие типы объектов. Метод roll() будет у них всех реализован по-разному, поэтому мы не используем тут абстрактный класс типа НечтоКатящееся. Тем более что один класс может реализовывать множество интерфейсов, а абстрактный класс можно унаследовать только один. Стол должен быть одновременно с колесиками и складывающимся. Мы не можем создать абстрактный класс НечтоКатящееся, затем НечтоСкладывающееся, и создать класс Стол наследующий оба абстрактных класса. Да и не для этого они придуманы, класс всегда описывает объект, а интерфейс функционал. Абстрактный класс это обобщенное описание категории объекта, допустим стол, или стул, или кровать. От него наследуем уже какую-то конкретную разновидность, например СтолПисьменный расширяет АбстрактныйСтол реализует Складывающийся интерфейс.
А можно и оба интерфейса, пусть стол будет Складывающийся и Катящийся.
Затем создаем класс КроватьДвуспальная расширяет АбстрактнуюКровать реализует Катящийся интерфейс.

Короче абстрактный класс это обобщение, чтобы не копипастить общие методы и свойства по всем классам-наследникам, мы их группируем в одном классе.
Интерфейс это описание функционала, один класс может реализовывать множество интерфейсов. И один и тот же интерфейс может быть использован множеством классов.
Интерфейс не имеет реализации, он только декларирует, что у класса обязан быть определенный метод, а реализация может быть какая угодно, нас это не интересует, она инкапсулирована внутри.
Ответы: >>1331685
Аноним 2019/01/21 11:00:01  №1331683 95
>>1331411
>кодер без знаний математики
О, я смотрю ты опытный разработчик! Можешь прояснять новичку какая глубина знаний математики требуется пхп/веб разрабочику? С первого взгляда кажется, что можно обойтись арифметикой из начальных классов. Хотелось бы услышать развернутый ответ от специалиста.

>паттернами и ООП
Но ведь почти в каждой вакансии их указывают в требованиях?!
Ответы: >>1331692 >>1331698
Аноним 2019/01/21 11:01:17  №1331685 96
>>1331675
Спасибо
С абстрaктным классов всё ясно.

Ну а для чего и когда используют и стоит использовать интерфейс, я так и не понял особо?
В том случае когда мы не знаем какой объект ожидать и хотим что бы это был хотя бы наследник интерфейса?
Аноним 2019/01/21 11:08:47  №1331687 97
Короче, по-моему я слишком тупой для математики даже элементарной.

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

Вот там в уроке про циклы предлагают написать цикл с умножением числа на само себя.

Ну окей, решил, пусть до 9 умножается включительно. Написал цикл:

for ( $a = 1; $a <= 9; $a++) {
\techo "должно быть произведение двух чисел $a и $a = \n";
}

И вот тут моё слабоумие даёт о себе знать. Я не понимаю, как мне впихнуть в цикл произведение этих чисел.
Ответы: >>1331694 >>1331700
Аноним 2019/01/21 11:10:13  №1331689 98
Аноним 2019/01/21 11:15:01  №1331692 99
>>1331683
>какая глубина знаний математики требуется пхп/веб разрабочику?/
Логика и здравый смысл нужны. Математика бонусом идет в любом деле, но фанатизм в таком виде - это минус уже. Заебали ваши срачи, тем более с этими пастами, котоыре я еще лет 5 назад видел. Только тред перекатили и уже все засрано бессмысленной эзотерической хуйней о том, как один обиженный приперся толсто потроллить, а ему решили все ответить. Тред в несущественных спорах о вкусах превратился.
Ответы: >>1331693
Аноним 2019/01/21 11:17:47  №1331693 100
>>1331692
Ну вообще-то это реальные люди. Я лично с ним спорил.
Аноним 2019/01/21 11:19:02  №1331694 101
>>1331687
Бля, я догадался, что произведение надо просто в цикл засунуть, и что так тоже можно.

Ну может я и не такой уж и слабоумный.
Аноним 2019/01/21 11:21:15  №1331695 102
>>1331685
Чтобы показать что класс относится к данной группе или имеет данное свойство. Ну анон привел пример выше, интерфейсом Rollable мы можем пометить классы, которые можно катать.

Ну или если попробовать придумать более серьезный пример, например в какой-нибудь соцсети можно ставить лайки фотографиям, постам и пользователям. Классы, которые описывают эти сущности (Photo, User, Post), можно пометить интерфейсом Likeable. Допустим в этом интерфейсе определены 2 метода: добавить лайк (addLikeFrom(User $user)) и убрать лайк (removeLikeFrom(User $user)). Каждый класс может реализовать эти методы по своему, лишь бы они были реализованы.

После этого, когда мы пишем функцию, и хотим сказать что на вход ей надо подать любой объект, который можно лайкнуть, мы используем интерфейс:

function setLikeTo(Likeable $object)
{
...
}

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

Более того, в будущем список таких объектов можно расширить, не трогая старый код. ну например если нам надо сделать чтобы комментариям можно было ставить лайк, мы делаем чтобы класс Comment реализовал интерфейс Likeable, добавляем ему нужные методы и его теперь тоже можно передавать в функцию setLikeTo, и она будет корректно с ним работать.

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

Наследование - это другое. Наследование это когда мы делаем класс расширяя другой класс. Наследуются однотипные вещи: например мы можем унаследовать Танк от СредсвоПередвижения, но мы не можем унаследовать Комментарий от Фото так как у них нет ничего общего.

Интерфейсы позволяют объединять не связанные наследованием классы.

Конечно, программа будет работать и без интерфейсов, и без абстрактных классов. Она будет работать даже вообще без классов. Но качество кода будет неприемлемым. Интерфейсы и другие средства ООП позволяют разработчику задать правила использования его классов и методов, описать их. Например, если сделать функцию setLikeTo выше без исплоьзования интерфейсов, нет гарантий что на вход ей дадут правильный объект, и вообще непонятно что ей можно дать на вход. Код становится менее понятным, требует больше времени на работу с ним, легче допустить ошибку.

ООП в первую очередь делался для больших проектов, где очень много кода. Без соблюдения правил ООП код станет настолько запутанным, что любые правки будут вызывать ошибки и будет уходить много времени на их исправление. В коде на 100 или 1000 строчек конечно это не заметно. А например, код ОС андроид содержит тысячи классов (хоть они и не на PHP, а на Яве, но ООП там примерно такой же).

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

Если ты не уверен где надо применять интерфейсы, не применяй их пока.
Ответы: >>1331725
Аноним 2019/01/21 11:29:33  №1331698 103
>>1331683
Требуется для чего? Смотря какие у тебя цели. Я не смотрю на требования. Мне интересно изучать в глубину и ширину. Чтобы не было областей, где я не понимаю что происходит. Это влечет за собой изучение математики, физики, и много чего еще. Просто изучай то чего не знаешь.

Не знаешь архитектуру компьютера, - изучай. Не знаешь как работает процессор, - изучай. Алгоитмы, базы данных, математика, физика, машинное обучение, etc, - изучи это. Изучай то, что тебе нужно. А если изучать только то, что требуют, типа ООП, паттернов, то будешь расти не так как тебе нужно, а как хочет кто-то другой. Это очень ограниченное обучение получится. Потому что в какой-нибудь веб-студии создают сайты из говна и палок, и не хотят ничему учиться. Если следовать требованиям вакансий, то можно научиться какой-нибудь ерунде, про которую кто-то придумал, что она очень важна. Нужно мыслить своей головой.
Аноним 2019/01/21 11:30:32  №1331699 104
Аноним 2019/01/21 11:30:59  №1331700 105
>>1331687
Циклы не имеют отношения к математике. В математике нет даже изменяемых переменных. В мперативном программировании все не так как в математике.
Аноним 2019/01/21 11:32:16  №1331703 106
>>1331685
Вообще, в ООП много средств, которыми ты задаешь правила работы со своим классом:

- с помощью тайп хинтов ты указываешь что надо передать на вход функции
- с помощь конструктора ты определяешь обязательные аргументы, без которых не создать объект
- с помощью public/protected/private ты определяешь, какие методы откудa можно вызывать и инкапсулируешь данные внутри объекта
- с помощью abstract методов ты определяешь правила наследования от данного класса
- с помощью интерфейсов ты помечаешь классы

Важно пользоваться всеми этими возможностями правльно. Их мы изучаем в задачах про Вектор и кошки-мышки.
Ответы: >>1331713
Аноним 2019/01/21 11:41:06  №1331713 107
>>1331703
Хм. Но дело в том, что у ОПа в главе про OОП нет этой информации и предлагается решать их не зная всего этого
Аноним 2019/01/21 11:43:12  №1331714 108
В перл есть заебательский оператор "my", а что в php?
Ответы: >>1331718
Аноним 2019/01/21 11:45:36  №1331718 109
Ответы: >>1331723
Аноним 2019/01/21 11:48:53  №1331723 110
>>1331718
Он идет в паре с "usе strict;"

Позволяет oбъявлять переменные только явно "my $result", и избежать ошибки типа "return $reslt;". Сегодня решил попробовать пых, мне такого очень не хватает.
Ответы: >>1331727
Аноним 2019/01/21 11:50:34  №1331725 111
>>1331695
>То есть интерфейс это что-то вроде договоренности
Захотелось добавить, что часто для описания подобной "договоренности" используется слово "контракт". На самом деле повседневное совершенно дело встретиться с тонной контрактов хоть в пхп, хоть в джаве, хоть где либо еще. Просто ремарка, чтобы увидев контракты репозиториев каких-нибудь не было остолбенения.
Аноним 2019/01/21 11:54:10  №1331727 112
>>1331723
>мне такого очень не хватает
Там надо добавить error handler - функцию для обработки ошибок. И по ошибке "встретилaсь необъявленная переменная" что-нибудь сделать, например, выбросить исключение.
Но не надейся там особо. Ни один из динамических языков лучше от этого не станет. Проверено уже.
Бложек Аноним 2019/01/21 12:07:03  №1331738 113
hdwallpapers.top780.jpg (515, 1920x1080)
1080x1920
Увидел на странице рекламу:

> Как установить игру?
> На компьютер или телефон. Смотрите прямо в поиске Яндекса! 0+
> yandex.ru/Игры_на_Яндексе
(ссылка кстати не работает)

Не удержался от того, чтобы кликнуть - происходит переход на hxxps://yandex.ru/set/games_minecraft/4?from=adwords_gdn_games&utm_source=google&utm_medium=gdn&utm_campaign=Games_Russia&utm_term=&utm_content=ideone.com&gclid=CI-w4dqt9MoCFSUMcwody9MKQw

На этой странице написано:

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

То есть реклама - полный обман:

- ведет не на ту ссылку которая указана в объявлении
- страница не содержит ответа на вопрос "как установить игру на телефон", а вместо этого пытается впарить шпионское расширение в браузер, возможно в расчете на неграмотных пользователей (детей?) которые могут подумать что чтобы установить игру надо следовать инструкции на странице

Вот такая реклама ничем не отличается например от тех, кто размещает фальшивые кнопки "скачать" на файлообменнике или фальшивые видео, при клике по которым тебе пишут что надо скачать "кодек". Разница только в том что к таким обманным методам прибегает "белая" компания. Видимо сомнительные метoды распространения вредоносных программ настолько эффективны что даже яндекс не может от них удержаться.
Ответы: >>1331754 >>1331763
Аноним 2019/01/21 12:15:54  №1331745 114
d5bbedb232.png (45, 1124x417)
417x1124
Возник вопрос по студентам. Каким образом лучше проверять переданные через форму данные?

Я вижу такой сценарий:

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

В правильном ли я направлении думаю?
Ответы: >>1331750 >>1331769
ОПРОС Аноним 2019/01/21 12:18:23  №1331749 115
Аноны, а просто любопытно, как вы читаете тред?

- заходите на главную, ищетe тред, переходите в него?
- сохраняете в закладкти?
- просто держите открытым постоянно и обновляете (я так делаю)

И как находите ответ на свою задачу если ОП часто их проверяет только несколько дней спустя, и за этой время успевают запостить 300-400 постов?
Ответы: >>1331752 >>1331762 >>1337226
Аноним 2019/01/21 12:19:10  №1331750 116
>>1331745
>Перед тем как передать форму на сервер проверяем её жсом и если есть ошибки - выводим их
Правильно, первая линия обороны так сказать, фактически иллюзорная, но лучше пусть будет, чем нет.
>выводим их, если нет данные идут в контроллер, который создает модель с переданными значениями
И в том и другом случае ты валидируешь все от а до я, как минимум не менее тщательно, чем на фронте.
>Если значения неправильные, у сеттеров модели выбрасываются исключения, которые мы перехватываем в контроллере.
Это от твоих предпочтений зависит. Кто исключения кидает на такую мелочевку и ловит их потом по иерархии. А кто составляет стек ошибок. Результат один и тот же. Выводить не обязательно. Что с ними делать решать тебе и под конкретный этап разработки.
Ответы: >>1331765
Аноним 2019/01/21 12:20:27  №1331752 117
>>1331749
>просто держите открытым постоянно и обновляете
Автообновление есть.
Аноним 2019/01/21 12:20:39  №1331754 118
>>1331738
>Видимо сомнительные метoды распространения вредоносных программ настолько эффективны что даже яндекс не может от них удержаться.
Что забавно, яндекс накладывает санкции на сайты с подобным видом монетизации.
Аноним 2019/01/21 12:37:34  №1331762 119
>>1331749
Добавлен в избранное двача.

Обязательно добавляю в сообщение с решением какое-нибудь ключевое слово (чаще всего название задачи), по нему нахожу свой пост и ответы к нему. Если задачу нужно переделывать, ваш ответ сохраняю в ворд-файл, чтобы не искать каждый раз.
Ответы: >>1337226
Аноним 2019/01/21 12:40:09  №1331763 120
>>1331738

Ага, а я кое-какой торрент качал с китайского (по моему) сайта, и там была страница с информацией о нем и большая зеленая кнопка скачать, а чуть ниже надпись "Яндекс-браузер".

Интересно, все эти люди, кто в Яндексе или Гугле работают, они наверно гордятся тем, какие они умные, как они с закрытыми глазами могут нейросеть на Хаскелле написать (не то что эти крудописатели на PHP), но затем они идут на работу придумывать, как обмануть неискушенного пользователя и заставить установить их программу или ввести свои данные и согласиться на слежку, сохраняя при этом видимость свободного выбора (а также, как обойти GDPR, сохраняя видимость его соблюдения). Обе компании по сути зарабатывают на слежке и монетизации собранных данных.
Аноним 2019/01/21 12:45:31  №1331765 121
>>1331750
>И в том и другом случае ты валидируешь все от а до я, как минимум не менее тщательно, чем на фронте.

class Controller
{
// Получается где-то тут, перед передачей в модель нужно валидировать $name, $email?

try {
$model = new Model($name, $email);
} catch () {
// Что-то делаем
}
}
Ответы: >>1331771
Аноним 2019/01/21 12:50:49  №1331769 122
>>1331745

Стандартный вопрос: урок читал? Там есть алгоритм (хотя ты можешь сделать и свой): https://github.com/codedokode/pasta/blob/master/forms.md

> Перед тем как передать форму на сервер проверяем её жсом
Хватит HTML5 валидации.

> Если значения неправильные, у сеттеров модели выбрасываются исключения

Есть такой вариант, когда в модель встроена валидация, но он имеет недостатки. Что, если для проверки уникальности email надо обратиться к БД? Где ты возьмешь объект для работы с БД в модели?

Потому выгоднее может быть сделать отдельный сервис-валидатор и в нем метод валидации:

$studentValidator = new StudetnValidator(...);
$errors = $studentValidator->validate($model);

Использование исключений не позволяет передать несколько ошибок.
Ответы: >>1331785
Аноним 2019/01/21 12:52:10  №1331771 123
>>1331765
Контрллер валидирует только инупт, потом слой модели валидирует данные.
Например контроллер чекает что передано число больше 0, а модель уже валидирует на это число от 2 до 25. Конкретизируй отвественность, сначала контроллер, который ловит самые грубые ошибки, потом модель, которая ловит логические ошибки. Во всяком случае контроллер спокойно число от строки отделит, и многие другие вещи сделает без привязки к бизнес логике, а модель добьет остальное. (Модель в это случае не датакласс или активрекорд, не путай)
Ответы: >>1331785
Аноним 2019/01/21 13:13:44  №1331784 124
Короче, я нихуя не понял, что я сделал, но вышла такая херня в первой задачке, в циклах, там где каждый год на 10% сумма росла до миллиона.

<?php

for ( $a = 10000; $a < 1000000; $a = $a + $c ) {
\t$c = $a * 0.1;
\t$dayZ = $dayZ + 1;
\techo "идёт $dayZ год, и размер суммы составляет $a рублей, а вкладчику стукнуло уже N лет\n";
}

?>

А как сделать, чтобы ещё и года от 16 отсчитывались вперёд?
А то я сам не понял как сделал, чтобы отсчёт лет был, а вот года чёт не выходит.
Ответы: >>1331787
Аноним 2019/01/21 13:14:14  №1331785 125
Аноним 2019/01/21 13:16:00  №1331787 126
Аноним 2019/01/21 13:20:45  №1331789 127
>>1331465
Опять этот коммивояжёр с обострением шизоидного артрита. Втирал за лямбду, посоны, или нет ещё?
Ответы: >>1331794
Аноним 2019/01/21 13:22:31  №1331793 128
>>1331465
>Не инструменты красят инженера, а инженер инструменты.
Лол. Нормальные люди инструментами пользуются. Нах их надо красить? Тебе их цвет не нравится?
Ответы: >>1331813
Аноним 2019/01/21 13:25:32  №1331794 129
>>1331789
>Математики и инженеры начала, середины, и немного конца 20-го века, были последними кто мог создавать шедевры. Делать вещи простые, компактные, функциональные, но без лишнего. Как пример Лямбда-исчисление Чёрча, и комбинаторная логика Шейнфинкеля-Карри. Кто из современных кодеров додумался до подобной идеи? Никто. Все только плодят бездумно лишние абстракции. Да еще и гордятся этим, задирают нос, думая что они умные.
#мюслиДушевнобольных
Аноним 2019/01/21 13:46:18  №1331808 130
Ларавел-герои, поясните за такую штуку.
Делаю простое CRUD приложение типа блог
$post->body - тут хранится текст одной записи блога.

Вот у меня есть в Blade шаблоне строчка:
{{$post->body}}
Она выводит текст. В случае, если в туда записаны html-теги, они тоже выведутся как текст, однако если записать так:
{!!$post->body!!}
То текст вернется с учетом разметки.

Объясните, в чем цимес и теория стоящая за этими двумя записями? (ну с восклицательными знаками и без)
Аноним 2019/01/21 13:53:33  №1331813 131
>>1331793
Не делай вид что не понял. Хорошо, не инструмент украшает программиста, а программист инструмент. В умелых руках и PHP становится нормальным инструментом. А говно-кодеру дай самый лучший язык, все равно говнокод получится.
Ответы: >>1331815
Аноним 2019/01/21 13:57:57  №1331815 132
>>1331813
Зачем бы программисту украшать инструменты?

Ну и говнокодерами были все программисты. Кто был, кто есть. Тебе то что от этого, шизик?
Ответы: >>1331835
Аноним 2019/01/21 14:13:34  №1331835 133
Ответы: >>1331846 >>1331872
Аноним 2019/01/21 14:20:10  №1331846 134
Аноним 2019/01/21 14:37:44  №1331872 135
Аноним 2019/01/21 18:45:53  №1332067 136
Поясните пожалуйста за некоторые моменты MVC.

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

У меня должен быть один view с текстовым полем и кнопкой, откуда информация передаётся в контроллер, контроллер передаёт параметр в model, там выполняется запрос к апи. А вот дальше я не знаю, как это должно работать. Создавать ещё одну модель, куда будет передаваться джсон и который будет записывать инфу в БД через элоквент? Или всё делать в одной модели? Как правильно, памагити!!111
Ответы: >>1332089 >>1332127
Аноним 2019/01/21 18:57:22  №1332081 137
И почему в оппосте не рекомендуют Атом? Мне очень понравился...
Ответы: >>1332084
Аноним 2019/01/21 19:00:47  №1332082 138
Аноним 2019/01/21 19:03:28  №1332084 139
>>1332081
Игра мне тоже понравилась. Действительно почему бы в оппосте не поддержать отечественного производителя!
Аноним 2019/01/21 19:12:38  №1332089 140
>>1332067
Ты должен решать проблемы применением паттернов, а не умножать их. Даже так - ты должен решить проблему, а паттерн нужен, чтобы объяснить другим как ты ее решил. В твоем ларавеле даже есть возможность сразу в роуте вьюху прописать. Т.е ты не обязан всегда MVC в голове держать.
Ответы: >>1332092 >>1332101
Аноним 2019/01/21 19:19:25  №1332092 141
>>1332089
Тогда что мне делать конкретно в моем случае? С мвц или без него, мне важно понять как правильно в этом конкретном случае.
Ответы: >>1332093 >>1332104
Аноним 2019/01/21 19:22:18  №1332093 142
>>1332092
И в чем тогда смысл вопроса? Лепи чтобы работало. :)
Ответы: >>1332103
Аноним 2019/01/21 19:38:35  №1332101 143
>>1332089
ООП головного мозга. Паттерны наше все.
Аноним 2019/01/21 19:41:52  №1332103 144
>>1332093
Чтобы работало я слепил бы на коленке в одном пхп файле. Но я собираюсь выкладывать в общий доступ, а значит моя задача сделать ПРАВИЛЬНО (я уже третий раз повторяю это слово, а не слово АБЫ РАБОТАЛО). Если не можешь помочь, то зачем овтетчаешь?
Ответы: >>1332106
Аноним 2019/01/21 19:42:17  №1332104 145
>>1332092
В программировании нет правильного или неправильного. Это творческая профессия. Твори.
Ответы: >>1332107
Аноним 2019/01/21 19:44:42  №1332106 146
>>1332103
>моя задача сделать ПРАВИЛЬНО
Ты выбрал не ту профессию значит. Иди в физику или химию, хотя и там есть элемент творчества, особенно в химии.

Лучше говорить не правильное решение, а приемлемое. Любое решение приемлемо, если оно хотя бы работает. А дальше его можно улучшать постепенно. Эволюция.
Ответы: >>1332107
Аноним 2019/01/21 19:46:11  №1332107 147
>>1332106
>>1332104
Я и так физик (точнее механик), а мвц учу ради своего маленького проекта. И как я должен его учить, если я запутался, а ответ мне дать не могут?
Ответы: >>1332115 >>1332119
Аноним 2019/01/21 19:55:29  №1332112 148
15092480576060.webm (1582, 720x720)
720x720
Что заставляет лютей юзать 1 мадженту? Это же лютая лапша из хрен пойми по какому принципу построенного наследования, кучи блять конфигов и шаблонов, которые немногим лучше xslt.
Разбираться в этом всем аду особенно трудно, когда у тебя нет никаких контактов с тимой (особенно физических), которая около 2 лет своими руками возводила дополнительные круги ада, в которых на одну страницу приходится по 200 запросов к базе, а в половине из них не меньше 3 джоинов. А в довесок ко всему еще нашлась функция, которая почти в каждый из них добавляла джоин по селекту в котором был еще один джоин и один left join , который тоже блять по селекту в котором еще(!) один джоин.
А самый пиздец в том, что это все в тырпрайз версии. Столько платить за цмс и сотворить с ней такое. Просто пиздец, никогда такой хуйни не видел.
Аноним 2019/01/21 19:57:53  №1332115 149
>>1332107
короче сове
1. делаешь штобы работало
2. (опционально) переделываешь, шоб было красиво/быстро
3. (опционально) идёшь нахуй из профессии
Ответы: >>1332117
Аноним 2019/01/21 19:59:13  №1332117 150
Аноним 2019/01/21 19:59:48  №1332119 151
>>1332107
Тебе же говорят, не бывает правильного и не правильного в программировании. Это сугубо творчество. Делай как понимаешь сам. Если тебе сказать делай так или так, то ты ничему не научишься. Кто просто повторяет, становится макакой. Учись думать. Принимать решения. Пробовать разные варианты. Для инженера это самое главное.

Спроектировать, собрать, найти слабые места и улучшить, - вот работа программиста-инженера.
Аноним 2019/01/21 20:05:54  №1332127 152
>>1332067
Я бы создал дополнительный класс, что-то вроде components/ApiHelper, передавал бы в него параметр, после чего он возвращал json который уже через модель записывался в базу.
Ответы: >>1332130 >>1332180
Аноним 2019/01/21 20:09:25  №1332130 153
>>1332127
Для чего там класс, если это можно сделать одной функцией?
Ответы: >>1332138
Аноним 2019/01/21 20:16:11  №1332138 154
>>1332130
Разделение ответственности. Работа с апи может меняться и обрастать дополнительным функционалом. Или потребоваться в другом контроллере.
Ответы: >>1332146 >>1332148
Аноним 2019/01/21 20:23:02  №1332146 155
>>1332138
А почему это нельзя сделать, когда придется разделить ответственность за дополнительный анал?
Ответы: >>1332156
Аноним 2019/01/21 20:26:32  №1332148 156
>>1332138
А что функция это не разделение ответственности? Ее можно сделать универсальной. СИКП почитай. Ты предлагаешь преждевременную оптимизацию. Это overengineering чистой воды. Сразу видно почерк адепта ООП. Использую, да по-больше, но не знаю зачем.
Ответы: >>1332156 >>1332326
Аноним 2019/01/21 20:33:03  №1332156 157
15159267633140.webm (1879, 320x240)
240x320
>>1332146
Потому что в твоем случае все обрабатываемые аналы считаются обычными. Условие для создания их как дополнительных не срабатывает.
>>1332148
Да ты же поехавший. Лапшу по всему проекту собирать потом легче будет? Очередной препод-теоретик их техникума в ебенях с нулем опыта пришел повыебываться.
Ответы: >>1332171
Аноним 2019/01/21 20:43:34  №1332171 158
B0JfbCnIYAAeEHO.png (206, 485x369)
369x485
>>1332156
Очередной ООПэшник порвался. Слабенькие вы какие-то.
Аноним 2019/01/21 21:03:22  №1332180 159
Ответы: >>1332184
Аноним 2019/01/21 21:07:21  №1332184 160
>>1332180
Молодец! Теперь у тебя будет на каждый пук по классу, которые даже инстанцировать не нужно.
Ответы: >>1332216
Аноним 2019/01/21 21:43:01  №1332208 161
так шо тут у нас? ооп нинужно? найс, 30 лет уже это слысу, но всё равно ооп еще здеся. а знаете почему? я заню почему, но вам не скажу)) ибо вы эгоисты, а ооп не для эгоистов придуман, а для командных работников
Аноним 2019/01/21 22:21:04  №1332216 162
>>1332184
Я благодарю не за содержание, а за тот факт, что он единственный ответил по делу. А хорош его совет или нет мне предстоит ещё определить.
Аноним 2019/01/21 23:26:41  №1332251 163
CodeIgniter 4 уделывает все фреймворки.
Аноним 2019/01/22 05:04:44  №1332326 164
>>1332148
>Ты предлагаешь преждевременную оптимизацию
Класс наваять для этих дел - минутное дело. Зато потом голова болеть не будет, собирая всё это дело в одном месте.
Аноним 2019/01/22 06:31:53  №1332365 165
Почему у нас, пхпшников, нет такого набора модных и гламурных книжечек, как у рубистов??

Как можнo выучиться красивому коду без современных и структуированных книжек на английском от профессионалов?
Ответы: >>1332374 >>1332644
Аноним 2019/01/22 06:36:06  №1332374 166
>>1332365
И еще, правильно ли я понимаю что похапе устаревшая бекэнд штука для связи с БД формочек, обычный информационный(редкообновляемый) сайт можно написать без нее, верно?
Ответы: >>1332379
Аноним 2019/01/22 06:41:35  №1332379 167
>>1332374
>похапе устаревшая бекэнд штука
считай, што пыха это хуета, которой ты рулишь протоколом хттп напрямую. врядли это когда-нибудь устареет
Ответы: >>1332413
Аноним 2019/01/22 07:50:56  №1332413 168
>>1332379
Так есть же асинхронный node.js
Ответы: >>1332451
Аноним 2019/01/22 09:15:47  №1332451 169
>>1332413
Напиши мне на своей ноде или ещё на чём запрос к стороннему API, да так чтобы ты потом не кричал НУ АНИ ДАЛЖНЫ СНАЧАЛА СПЕЦИАЛЬНА В НАСТРОЙКАХ РАЗРЕШИТЬ МНЕ ТЯНУТЬ ИНФОРМАЦИЮ С ДЖАВАСКРИПТА!!1.
Ответы: >>1332499
Аноним 2019/01/22 10:55:21  №1332499 170
Ответы: >>1332502 >>1332561
Аноним 2019/01/22 11:12:17  №1332502 171
>>1332499
Это что такое? Ты с кошечками развлекаешься? Чому на локалхосте не норм?
Ответы: >>1332504
Аноним 2019/01/22 11:24:58  №1332504 172
>>1332502
на локалхосте вполне норм, пока девелопишь и тестишь
а в продакшн выкатывать куда? тоже на локалхост?
ведь задача например - написать самый крутой аппликэйшн с котиками и утонуть в море говна бабла
Аноним 2019/01/22 12:48:51  №1332561 173
>>1332499
Код где, который я скопирую и вставлю в ноду, которую ты привёл в пример? Давай мне код, я его продублирую у себя, вставлю свою ссылку чужого апи и мы чекнем как оно работает (никак) и сколько строк занимает в сравнении с пхп (овердохуя).
getNthOrEqualIdFromThisOnTheRightByStatusChannelbotIdAndMessageSource Аноним 2019/01/22 13:05:06  №1332576 174
Screenshot43.png (25, 788x409)
409x788
Кажется у меня проблема.
Я не знаю как коротко называть методы.
Это уже совсем пиздец какой-то блять.
Что делать? Как бы вы назвали этот метод?

Просто убрать ByStatusChannelbotIdAndMessageSource нельзя, ибо там и по другим критериям методы есть.
Аноним 2019/01/22 13:07:13  №1332577 175
>>1332576
А я то думал это у меня длинные названия. Теперь спокоен.
Аноним 2019/01/22 13:16:46  №1332589 176
>>1332576
Впринципе тебе было бы удобнее билдер критериев иметь, чем городить эти обертки с детальным описанием в названии.
С билдером мог бы сделать например
$builder->nthOrEqualFrom(...params)->right()->byStatus(status)->byMessageSource(source)->get();
и это более переиспользуемый и гибкий вариант. Правда я понятия не имею насколько это реально у тебя по коду реализовать.
Ответы: >>1332594 >>1332683
Аноним 2019/01/22 13:20:49  №1332594 177
>>1332589
Как такое сделать? Как паттерн называется?
Ответы: >>1332606
Аноним 2019/01/22 13:22:04  №1332598 178
>>1332576
А нахуя вообще вливать всю суть в название метода?
Бери пример с си-блядей. Они буквально несколько (1-3) букв берут от слова и разбивают его _. Да, это может показаться трудночитаемым, но в си все функции из stdlib хуевочитаемые да и нахуй не нужны, но у тебя же ЕБАНЫЙ ВЕБШТОРМ, навел мышкой на метой и у тебя уже документация подсветилась.
Ответы: >>1332648
Аноним 2019/01/22 13:29:24  №1332606 179
>>1332594
Билдер и называется, только придется фантазию проявить. Примеры и объяснения по учебнику не для таких ситуаций. Наверняка видел аналоги в виде QueryBuilder всяких. Суть та же.
Ответы: >>1332628
Аноним 2019/01/22 13:43:56  №1332628 180
>>1332606
Вообще я знаю паттерн, (но забыл название, лол), который позволяет создавать цепочки вызовов методов типа как ты выше написал. Если вкратце, суть в том, чтобы возвращать $this везде.

Но вообще это уже какая-то ORM нахуй получается, в рот я ебал еще и орм на коленке писать тут, совсем говноедство какое-то будет, никто блядь не поймет потом мой код
Ответы: >>1332631 >>1332635
Аноним 2019/01/22 13:47:00  №1332631 181
>>1332628
Что-то типа такого?

$foo = () => $var1 => $var2 => $var3;
Аноним 2019/01/22 13:50:16  №1332635 182
>>1332628
Ну вот в твоей ситуации это как бы билдер критерии для метода getNthOrEqualFromThis. Вариантов много, вон аж 6 параметров, один из которых массив. Делаешь class ShittyBuilder {
private $id;
private $otherParam;
private $otherOtherParam;
// other params

public function byId($id) {$this->id = $id; return $this;}
// other methods
public function fetch() {
return $someInstance->getNthOrEqual($allYourParams);
}
}

Вот тебе и билдер конкретно для того страшного метода с кучей параметров. Как ты понимаешь это на коленке и сделать можно лучше во много раз, просто как пример что тут нет ничего сложного. Полноценная орм и прочее, кстати, тоже пригодились бы. Раз у тебя ее нет можешь взять да доктрину подтянуть, там много чего есть.
Ответы: >>1332642
Аноним 2019/01/22 13:56:59  №1332642 183
>>1332635
Тогда придется на тонны других методов тоже отдельные классы писать? Это же просто ебанутся как долго.

Насчет орм и доктрины - да. В следующий раз, пожалуй и буду их юзать. Сейчас уже нет смысла тонны кода переписывать на нее.
Ответы: >>1332643
Аноним 2019/01/22 13:59:34  №1332643 184
>>1332642
Ну как посмотреть. Вот у тебя есть метод getNthOrEqualFromThis. Первая же обертка над ним получилась с длиннющим именем. А таких оберток, судя по количеству параметров, может быть до ебаной жопы. Помоему лучше уж один раз сделать даже самый глупенький билдер и дергать через него, чем делать 100500 длиннющих методов вместо этого каждый раз. Сам же сказал, что есть и другие критерии к нему, значит проблема не в одном только том конкретном методе.
Ответы: >>1332647 >>1332681
Аноним 2019/01/22 14:00:06  №1332644 185
>>1332365
Зато у нас есть неплохая официальная документация и отличный тред в котором полно зелени.
Аноним 2019/01/22 14:03:32  №1332647 186
>>1332643
Но тогда это будет практически эквивалентно прямым запросам в БД, только через обертку.
Инкапсуляция, мам...

Нужно создать несколько методов с выборками по определенным критериям, а не просто разрешить ебать таблицу в рот и жопу как хочешь.
Ответы: >>1332651 >>1332653
Аноним 2019/01/22 14:06:06  №1332648 187
>>1332598
А мне нравится это сишное iInterfaceName и всякое подобное. Коротко и понятно, главное контекст знать.
Аноним 2019/01/22 14:10:52  №1332651 188
>>1332647
А через эти методы типа только в писечку ебешь, но никак не в рот и жопу как содомит какой-то? Чтобы полноценно выбрать решение надо разобраться в причинах, которые привели к той обертке, а не только на метод имени Льва Толстого посмотреть.
Ответы: >>1332676
Аноним 2019/01/22 14:11:52  №1332653 189
Аноним 2019/01/22 14:38:27  №1332676 190
>>1332651
>А через эти методы типа только в писечку ебешь, но никак не в рот и жопу
Ну вообще да, в том и смысл!
Ответы: >>1332677
Аноним 2019/01/22 14:43:01  №1332677 191
>>1332676
Я как-то не вижу этого. Обертка с именем на целый фанфик по сути прячет всего 1.5 реальных параметра, притом сама целых 5 принимает. И реально спрятанный параметр всего лишь бул. Судя по всему есть еще и вторая такая, где _is_less тру. Шо так ебать можно, шо эдак.
Аноним 2019/01/22 14:46:04  №1332680 192
>>1332576

У тебя еще в phpdoc лишние @param, которые не несут никакой информации и которые стоит убрать.

getNeighbourId/getNthId. Насчет bystatus... - это же явно можно назвать короче. Например, getNthIdByBotAndSource
Аноним 2019/01/22 14:47:33  №1332681 193
>>1332643
По-моему, лучше вообще писать такой код, чтобы не опускаться до оберток.
Аноним 2019/01/22 14:51:30  №1332683 194
>>1332589

Выше дали совет про билдер.

А если неохота делать билдер, можно сделать передачу массива:

findNthId(['source' => ...., 'botId' => ...]);

или сделать объект-фильтр (отличие от билдера: билдер создает объект, фильтр ничего не создает):

$filter = new TgFilter;
$filter->bySource(...);
findNthId($filter);

или

findNthId(byTgFilter()->withSource(...)->withBotId(....));
findNthId(TgFilter::create()->withSource(...)->withBotId(....));

Как тебе? Без сверхсложных билдеров, объект фильтра типизируемый, документируемый и проверяемый.

Для примера, поиск элементов в клиенте Селениум от фейсбука: https://github.com/facebook/php-webdriver

$element = $driver->findElement(WebDriverBy::id('element id'));

Ответы: >>1332688
Аноним 2019/01/22 14:54:15  №1332685 195
>>1332576

Также, возможно эту функцию просто стоит по другому назвать? Вроде getSimilarMessages или как-то так?
Аноним 2019/01/22 14:58:48  №1332688 196
>>1332683
Впринципе то, что я ему предложил больше похоже на фильтр как раз. Запомню это название, а то хуйню одну другой назвал.
Аноним 2019/01/22 15:20:17  №1332703 197
Фреймворк yii2. Такая проблема: в верстке используется более свежая версия jQuerty, чем в фреймворке. В ассете отключаю jQuery, которая идет с вёрсткой - верстка корректно работает (меню сворачивается в бургер и работает), но не работает валидация от Yii. Делаю наоборот - верстка перестает корректно работать, но валидация отрабатывает своё. Какими путями можно решить эту штуку?
Ответы: >>1332726 >>1332734
Аноним 2019/01/22 16:00:34  №1332726 198
>>1332703

Правильнее всего переделать верстку на использование jQ от Yii. Либо мучаться с jQuery.noConflict(), загружая 2 копии библиотеки и используя в верстке приватную копию.
Аноним 2019/01/22 16:20:45  №1332734 199
>>1332703
Залезть в исходники фрейма и поменять жиквери на более зрелую, либо переписать верстку.
Аноним 2019/01/23 07:48:45  №1333137 200
Недавно столкнулся с проектиком на php 4. Ну как проектиком. Там весь код был в нескольких файлах. Забавно было то, что в одном из них я нашел аццкую смесь из всех языков веба. В index.php был php с подготовленными sql запросами, html, css в head и js в скриптовых тегах. И задумался, как же раньше было лампово, ни тебе стандартизаций, ни тебе менеджеров, которые наставляют писать по тз. Программистов вообще считали элитой своих наций. Никто не понимал, что они делают. Когда же все стало меняться? Я не помню этот момент. Но руку к этому приложили большие корпорации со своими стажировочками и пиаром высоких технологий среди масс. Ублюдки.
Аноним 2019/01/23 08:27:28  №1333158 201
Почему PhpStorm
1. Игнорит все SPL-исключения. Тупо все что унаследовано от двух главных SPL-классов исключений LogicException и RuntimeException - игнорится.
2. Имеет глубину сканирования исключений равную единице.
Если в методе, который вызывается у тебя в методе кидается исключение, ты об этом не узнаешь.

Я нашел как это все включить, но блядь, какого хуя они так сделали по-дефолту?
Ответы: >>1333161
Аноним 2019/01/23 08:29:56  №1333161 202
>>1333158
Учись писать без исключений, это плохая практика кодирования.
Ответы: >>1333172
Аноним 2019/01/23 08:39:16  №1333172 203
>>1333161
Пошел нахуй с такими идеями блядь.
Без исключений ему писать. Говножоры ебаные.
Половина стандартной библиотеки и все новые ее функции кидают исключения, а они НУ ЭТО БЕЗ ИСКЛЮЧЕНИЙ ЕБАШЬТЕ))0)

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

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

КИДАЕШЬ ИСКЛЮЧЕНИЕ В МЕТОДЕ ПРИ НЕКОРРЕКТНОЙ СИТУАЦИИ
@
ОБЕЗЬЯНА-ПРОГЕР ВЫРУБИЛ ВСЕ ИНСПЕКЦИИ В IDE И ЛОВИТ ВСЕ ЭКЗЕПШЕНЫ ГОЛОЙ ЖОПОЙ
@
- НУ МАМ, ПОЧЕМУ ПАДАЕТ, ВОТ ЖЕ КЛЯТЫЕ ГОВНОКОДЕРЫ! НАДО БЕЗ ИСКЛЮЧЕНИЙ ПИСАТЬ!
Ответы: >>1333173 >>1333179
Аноним 2019/01/23 08:41:21  №1333173 204
>>1333172
Вот и пиши на своем крестоговне, а в божественном PHP исключения ненужны.
Ответы: >>1333175
Аноним 2019/01/23 08:43:00  №1333175 205
>>1333173
Метод возвращает значение типа int. Возникает ошибка, из-за которой невозможно возвратить корректное значение.
Как ты сообщишь об ошибке?
А если в методе могут возникнуть 3 разные ошибки?
Ответы: >>1333177
Аноним 2019/01/23 08:44:07  №1333177 206
>>1333175
А ты не пиши с ошибками.
Ответы: >>1333182 >>1333188
Аноним 2019/01/23 08:47:59  №1333179 207
>>1333172
Так а нахуя ты сравниваешь божественные кресты с богомерзким похапэ? Если бы у пыхи был компилятор, то разрабы идеи заморочились бы немножко и сделали по умолчанию чуть иначе, в глубоким уровнем сканирования исключений. Но тебе, мудаку, дали интерпретатор и отсутствие ебли с исключениями, а тебе не нравится. Что за хуйня? Это программисты? Делаешь, как лучше, а им не нравится.

Если у тебя программы на пхп падают, то это уже твои кривые руки виноваты, видать, не из плеч растут, а из жопы. Писать программы надо сначала на бумажке карандашиком, а потом уже ручками своими корявыми в идэе лезть.
Ответы: >>1333180 >>1333186
Аноним 2019/01/23 08:50:19  №1333180 208
>>1333179
>на бумажке карандашиком
Дедуля, тебе к земле уже привыкать пора.
Выключай кудахтер и сходи исповедуйся.
Ответы: >>1333185
Аноним 2019/01/23 08:53:44  №1333182 209
>>1333177
Двачую. Правильно методы проектируй, чтобы не было ошибок. Для тебя придумали операторы условий, чтобы отдавать некорректное значение.
Ответы: >>1333188 >>1333191
Аноним 2019/01/23 08:54:58  №1333185 210
Ответы: >>1333189
Аноним 2019/01/23 08:55:28  №1333186 211
>>1333179
Иди на бумажке карандашиком найди все исключения, которые может высрать некий говнокод, с которым ты должен работать, написанный не тобой.
От этого могут зависеть бизнес-процессы на дохуя денег, а IDE, несмотря на то, что может их все найти, не делает этого.

Самое смешное что ты даже не понимаешь причину, по которой жопбрейнс ограничили глубину сканирования исключений в пыхе и почему в яве она не ограничена.
Аноним 2019/01/23 08:58:24  №1333188 212
>>1333182
>>1333177
Вы реально конченые или тралите?

Задача: спроектировать метод, который принимает на вход html-файл и возвращает содержимое его тега <titile>.

ВНЕЗАПНО (никогда такого не было и вот опять) некие кривожопые говнокодеры передали в ваш метод несуществующий файл, не html-файл, некорректный html-файл, анус пса, небо, аллаха и хуй знает что еще.
Что будете делать?
Ответы: >>1333191 >>1333193
Аноним 2019/01/23 08:59:49  №1333189 213
>>1333185
Значит ты простой пыхыпыдебил - разновидность обычного наследственного дебила особой вонючести.
Впрочем, все вы такие.
Ответы: >>1333195
Аноним 2019/01/23 09:02:01  №1333191 214
>>1333188
Лично я тралю
Уж не знаю насчет идиотика >>1333182
>принимает на вход html-файл
>Что будете делать?
Ебальник вскрою дегенерату, осмелившемуся мне подобное дерьмо затирать.
Аноним 2019/01/23 09:04:45  №1333193 215
>>1333188
Заюзаю либу для парсинга невалидных файлов.
Нет, не поделюсь, иди исключения обрабатывай.
Ответы: >>1333196
Аноним 2019/01/23 09:06:16  №1333195 216
>>1333189
Пошел нахуй. Еще я буду париться, что там мне какие-то верстальщики насували в iostream, раз по их вине прошла ошибка, им и исправлять.
Ответы: >>1333198
Аноним 2019/01/23 09:06:20  №1333196 217
>>1333193
>либу для парсинга невалидных файлов
Ага, написанную такими же кончеными дебичами, что и ты, которая при невозможности распарсить файл высрет тебе что-то string:"NE MOGU RASPARSIT! OSHIBKA!"
Ответы: >>1333199
Аноним 2019/01/23 09:08:22  №1333198 218
>>1333195
>Еще я буду париться
ПРОД УПАЛ
@
СЫЧЕВ С РАЗБИТЫМ ЕБАЛОМ И БЕЗ ПОСЛЕДНЕЙ ЗАРПЛАТЫ ИЩЕТ РАБОТУ
Ответы: >>1333202
Аноним 2019/01/23 09:08:43  №1333199 219
>>1333196
Да ладно, признайся, что исключения нужны только в строго типизированных языках, а в пыхе эта фича нахуй не сдалась.
Ответы: >>1333203 >>1333204
Аноним 2019/01/23 09:10:09  №1333202 220
>>1333198
В согласованной разработке, где каждый знает, что делает, прод не падает. У тебя был печальный опыт работы, я смотрю.
Ответы: >>1333205
Аноним 2019/01/23 09:11:21  №1333203 221
>>1333199
>НИНУЖНА
As expected.
Дебилы, дебилы never change.
Ответы: >>1333214
Аноним 2019/01/23 09:11:51  №1333204 222
>>1333199
Пыха и есть строготипизированный в последних версиях, с подключением, маня. Или ты там еще без тайпхинтов лапшедерьмо пишешь?
Хотя что от такого ебача ожидать
Ответы: >>1333206 >>1333214
Аноним 2019/01/23 09:12:18  №1333205 223
>>1333202
>ВРЕТИ
>НЕТ ТЫ
Да у нас тут ПЫХЫПЫБИНГО, хаха.
Ответы: >>1333214
Аноним 2019/01/23 09:12:55  №1333206 224
>>1333204
>тайпхинтов
Хуйня и ненужно.
Ответы: >>1333212
Аноним 2019/01/23 09:18:32  №1333212 225
nobrain2.jpg (141, 738x405)
405x738
Аноним 2019/01/23 09:19:33  №1333214 226
>>1333205
>>1333204
>>1333203
Надеялся на норм срач, а вы только на переходы на личности способны. Ни капли сути по теме. А ты дебил, а ты маня, а ты хуево пишешь, а ты еще хуевее, тут тебе капсболд, тут бомбанулей. Вот бы еще разок сюда зашел тот анон из начала треда, было бы весело.
Ответы: >>1333215 >>1333216
Аноним 2019/01/23 09:21:44  №1333215 227
>>1333214
>на личности
Не льсти себе, дебилушка, ну какая у тебя личность - сплошные спиномозговые рефлексы и обиженный скулеж.
Типичный пхпшник, хаха.
Ответы: >>1333217
Аноним 2019/01/23 09:22:16  №1333216 228
>>1333214
Постите сами смешное
Ответы: >>1333217
Аноним 2019/01/23 09:24:25  №1333217 229
Ответы: >>1333223
Аноним 2019/01/23 09:27:12  №1333223 230
>>1333217
>Не льщу.
Это правильно, дебилушка.
Самокритика - это хорошо.
Ответы: >>1333228
Аноним 2019/01/23 09:30:39  №1333228 231
>>1333223
Так ты согласен со мной насчет ненужности исключений?
Ответы: >>1333229
Аноним 2019/01/23 09:31:56  №1333229 232
>>1333228
>насчет ненужности
Конечно же ты не нужен.
Никому вообще даже себе самому
Ответы: >>1333231
Аноним 2019/01/23 09:33:05  №1333231 233
>>1333229
Раз у тебя кончились параметры аргументы, я приму это за "да".
Ответы: >>1333234
Аноним 2019/01/23 09:35:03  №1333234 234
>>1333231
>эти маняфантазии
Все, пыхыпыдаун окуклился в агонии бессильной обиды
Аноним 2019/01/23 09:39:13  №1333239 235
В каких случаях следует кидать RuntimeException а в каких LogicException?
В чем семантический смысл каждого из них?
Ответы: >>1333249 >>1333326
Аноним 2019/01/23 09:50:09  №1333249 236
>>1333239
Иди уже нахуй, идиотик.
Аноним 2019/01/23 09:55:50  №1333263 237
Иногда бывают такие ситуации, когда происходит какая-то дичь, которая никогда не должна происходить.
Например, есть ланг-файл формата key=value.
Класс, отвечающий за мультиязычность пытается найти такой-то ключ, но его там не оказывается.
Такая хуйня является фатальным недостатком программы и возникает, если прогер забыл внести ключ в ланг-файл.
При таком раскаладе дальнейшее выполнение программы вообще не имеет смысла, ибо она как бы недоделана.

Какое исключение я должен кинуть в этом случае?

Я к тому, что есть исключения, которые НЕ НУЖНО ловить.
То бишь, если уж такое исключение возникло, то это знак для программиста, что в программе произошел полнейший пиздец и его надо исправить на уровне редактирования кода.

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

Склоняюсь к тому, чтобы кидать \RuntimeException или его потомка и вырубить в IDE обнаружение всех таких исключений, чтобы они не мозолили глаза.

Но тогда другой вопрос. Я же не один пишу все это говно.
Что если другие люди срут этими исключениями, не имея под ними ввиду неисправимые ошибки?
Тогда я скрою важную информацию и не буду учитывать то, что должен.

Не помню точно, но да, опять в этой яве исключение RuntimeException можно не ловить, что является исключением (лол) из общей ситуации, где ты обязан ловить все.
То есть если метод генерит такое исключение это как бы знак того, что все, пизда, приехали.
Ответы: >>1333326
Аноним 2019/01/23 10:53:36  №1333326 238
>>1333239
>>1333263
Экшепшены не нужны, это уже сказал тот, что выше.
Аноним 2019/01/23 10:54:19  №1333330 239
https://pastebin.com/AGuEC61g

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

Где обосрался?
Ответы: >>1333332 >>1333580
Аноним 2019/01/23 10:54:52  №1333332 240
Аноним 2019/01/23 11:12:12  №1333346 241
10
http://jsfiddle.net/8w256gev/3/ - тута не понял как выравнять сноску [..] относительно строки, абсолют или флоат ее смещает вверх, и еще можно ли ее через флоат как-то сделать? Кароче что-то я намудрил кажется.
11
http://jsfiddle.net/rmouc3aj/ - тут доп.пункт подсветка по фокусу с клавы - фокус и при нажатии делается, есть focus visible но он только в лисе.
Ответы: >>1333352 >>1338592 >>1339041
Аноним 2019/01/23 11:21:21  №1333352 242
Ответы: >>1333365
Аноним 2019/01/23 11:40:15  №1333365 243
>>1333352
Счастливого пути, сообщи как доберешься.
Ответы: >>1333369
Аноним 2019/01/23 11:41:54  №1333369 244
Ответы: >>1333373
Аноним 2019/01/23 11:46:03  №1333373 245
Ответы: >>1333383
Аноним 2019/01/23 12:03:21  №1333383 246
Ответы: >>1333392
Аноним 2019/01/23 12:21:11  №1333392 247
Аноним 2019/01/23 17:24:02  №1333533 248
download.png (9, 225x225)
225x225
Объясните, пожалуйста, разницу между переопределением метода и его перегрузкой в наследовании. И где это может пригодиться. Объясните так, чтобы даже чайник понял.
Аноним 2019/01/23 18:36:16  №1333580 249
>>1333330
Автор этой дрисни репортин ин.
Поставленная задача решена : форма стала пропускать на страничку только пользователей, что присутствуют в бд.
https://pastebin.com/wbJNMKaP - решение.

1)Насколько критичны ошибки уровня notice? Речь идет о коротких именах переменных после подключения к субд.

2)Очень коротко: насколько целесообразно в показателях "эффективность/затраченное время" вникать в это сейчас (непонятный ответ на вопрос: " почему решение с mysqli_num_rows() не сработало?".
>Поведение mysqli_num_rows () зависит от того, используются ли буферизованные или небуферизованные наборы результатов. Для небуферизованных наборов результатов mysqli_num_rows () не будет возвращать правильное количество строк, пока не будут получены все строки в результате.


Аноним 2019/01/23 21:53:44  №1333681 250
Бамп из закреплённого.

Как в хтмл прописать путь до другого диска? Апач лежит на диске С, нужно иметь доступ к изображениям с диска Е (удаленный). Все что нагуглил -- нужно идти от корня сервера, но нихуя не получается изображение вывести через img src.
Ответы: >>1333692 >>1333694
Аноним 2019/01/23 22:15:01  №1333692 251
>>1333681

Веб-сервер обычно отдает картинки только из корневой папки и подпапок. Может, тебе проще сделать отдельный виртуальный хост и сделать его корнем папку на e: (например: основной - http://site.dev, картинки - http://images.site.dev).

Если хочется извернуться и обойтись одним хостом, то велкам в документацию Апача по роутингу: https://httpd.apache.org/docs/2.4/urlmapping.html

Директива Alias явно подойдет. Учти, что кроме директивы Alias, надо еще дать Апачу доступ к той папке директивой Require в блоке Directory (там есть пример).

Не давай доступ к лишним папкам, проверяй правила.
Ответы: >>1336602
Аноним 2019/01/23 22:17:02  №1333694 252
>>1333681

А, если ты имел в виду, что Апач установлен на диск C, а надо корнем сайта сделать папку на e:, то хватит DocumentRoot + Require в Directory. Если не работает - включи лог ошибок и посмотри, что в него пишется при попытке открыть какой-то URL.
Ответы: >>1336602
Аноним 2019/01/24 07:58:34  №1333787 253
15483064845860.jpg (189, 839x812)
812x839

Писториусы, поясните за етот момент. Крч наслайсал макет в фотошопе, открываю его в Дримвивере, а там допотопная разметка с таблицами (пикрел). Вопрос, как это говно превратить в бутстрап верстку (которая была в макете в виде слоя полосок/ребер).

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

Но все это ебатория. Вопрос - есть ли вариант проще с пика перейти на бутстрап?

Алсо вы вообще также делаете через слайсы (ну или просто чекая размеры в ПС слоях, кому как удобно) или уже какие-то другие, более автоматизированные способы есть?
Аноним 2019/01/24 09:34:51  №1333833 254
1051332.jpg (35, 600x450)
450x600
Коль скоро у двачеров обед, а есть они любят прям за пекой, то вот вам блиц-опрос с собеседования, которое я не прошел, устраиваясь пхп-джуном в одну известную контору в моем городе:

1. Сколько ключевых слов зарезервировано языком, что это за слова?

2. Что значит слово “инициализация”?

3. Какие унарные и бинарные арифметические операции вы знаете?

4. Какой оператор используется для перехода к следующей итерации цикла?

5. Как правильно организовать доступ к полям класса?

6. Дайте определение понятию “конструктор”.

7. Что такое сигнатура метода?

8. Расскажите об особенностях класса с единственным закрытым (private) конструктором.

9. Чем отличается переопределение метода от перегрузки?

10. Можно ли объявить метод абстрактным и статическим одновременно?

11. Можно ли перегрузить static метод?

12. Что будет, если единственный конструктор класса объявлен как final?

13. Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли какие-нибудь ограничения для такой переменной?
Аноним 2019/01/24 10:00:18  №1333852 255
>>1333833
Что ещё спрашивали, задачи какие давали? Сам проекты свои какие показывал? Что из задач опа решал?
Ответы: >>1333887
Аноним 2019/01/24 10:07:44  №1333860 256
>>1333833
Ой, да пошли они нахуй. Отвечаю, что га все эти вопросы готов дать ответ с гуглом под рукой, потому что и в работе его юзаю. Какой смысл в зазубривании.
Ответы: >>1333872 >>1333902
Аноним 2019/01/24 10:29:25  №1333871 257
>>1333833
>Сколько ключевых слов зарезервировано языком, что это за слова?
Без знания этого факта нельзя софт писать, да?
>Что значит слово “инициализация”?
Предварительная подготовка.
>Какие унарные и бинарные арифметические операции вы знаете?
Из бинарных and, or, xor, not. Но вообще это хуета.
>Какой оператор используется для перехода к следующей итерации цикла?
Continue;
>Как правильно организовать доступ к полям класса?
Поля позакрывать, как границу при СССР, доступ через сеттеры-геттеры, как у чекистов принято.
>Дайте определение понятию “конструктор”.
Инициализация и запуск объекта. Внезапно.
>Что такое сигнатура метода?
В душе не ебу.
>Расскажите об особенностях класса с единственным закрытым (private) конструктором.
Бесполезная херня, если кроме этого закрытого конструктора там ничего нет.
>Чем отличается переопределение метода от перегрузки?
Понятия не имею.
>Можно ли объявить метод абстрактным и статическим одновременно?
А зачем?
>Можно ли перегрузить static метод?
Статик метод этож вроде глобал функции. Не знаю.
>Что будет, если единственный конструктор класса объявлен как final?
Не пользовался.
>Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли какие-нибудь ограничения для такой переменной?
Х.з.

Вопросы как-то совсем из другой плоскости, как по мне. Всегда говорят - учите технологии, а не синтаксис. А тут спрашивают хуйню, которую нагуглить за 10 минут можно.
Ответы: >>1333879
Аноним 2019/01/24 10:30:24  №1333872 258
>>1333860
Так логика в том, что ты можешь дать ответы на эти вопросы без гугла. Иначе зачем их тебе задавать?
Ответы: >>1333876
Аноним 2019/01/24 10:32:58  №1333875 259
>>1333833
>Сколько ключевых слов зарезервировано языком, что это за слова?
Не, ну можно на месте в уме посчитать все, что вспомнишь, однако это какойто сюр. Ниодин вменяемый человек число ключевых слов в голове не держит, это полностью бесполезная информация.
Аноним 2019/01/24 10:34:30  №1333876 260
>>1333872
>Так логика в том, что ты можешь дать ответы на эти вопросы без гугла.
Тебя в лесу работать посадят, среди медведей?
Аноним 2019/01/24 10:40:05  №1333879 261
>>1333871
>Без знания этого факта нельзя софт писать, да?
Нет. Вдруг ты назовешь свойство ключевым словом?
>Предварительная подготовка.
Неверно.
>Из бинарных and, or, xor, not. Но вообще это хуета.
Арифметических, а не логических.
>Continue;
Молодец.
>Поля позакрывать, как границу при СССР, доступ через сеттеры-геттеры, как у чекистов принято.
Молодец.
>В душе не ебу.
Это классика, это надо знать.
>Бесполезная херня, если кроме этого закрытого конструктора там ничего нет.
Молодец.
>Понятия не имею.
Классика.
>А зачем?
Нужно.

Иди кароч мат.часть учи.
Ответы: >>1333880 >>1333885 >>1333886
Аноним 2019/01/24 10:41:24  №1333880 262
>>1333879
>Иди кароч мат.часть учи.
Иди нахуй - я в лесу не работаю.
Аноним 2019/01/24 10:47:20  №1333885 263
>>1333879
>Вдруг ты назовешь свойство ключевым словом?
Вы там в блокнотах до сих пор разрабатываете?
>Неверно.
Что не мешает мне пользоваться ей. Я учебники не пишу и знать мне это необязательно.
>Арифметических, а не логических.
Как бы пользоваться ими я тоже умею, без красивых слов.
>Это классика, это надо знать.
Понадобится - узнаю. Это не такая сложная для восприятия информация. Впрочем, как и всё остальное.
Вопросы, судя по всему, ждун и писал. Я-то ожидал, про MVC, паттерны, покажите ваш код и т.д., а тут детсад.
Аноним 2019/01/24 10:47:46  №1333886 264
>>1333879
>Нет. Вдруг ты назовешь свойство ключевым словом?
Меня вот эта формулировка бесит. Ну понятно вопрос чекает что там претендент помнит, а может и вовсе знает. Почему бы просто не спросить "перечислите все ключевые слова пхп, которые знаете", а не начать вопрос с "сколько ключевых слов в языке?". Или это попытка глянуть, скажет ли претендент честно, что точное число не заучивал и просто перейдет к перечислению?

Кстати говоря с 7 пыхи все ключевые слова доступны для использовании в качестве имен свойств, констант, методов, трейтов, интерфейсов. Только class нельзя использовать в качестве конснтанты в классе, т.к. там и так есть ::class.
Ответы: >>1333894
Аноним 2019/01/24 10:48:35  №1333887 265
>>1333852
Да все почти сделал из оповских задачек, кроме банкомата и прочего, что требует познаний в математике. Выучил даже основные алгоритмы и научился их применять, но завалился на такой простой хуйне. Написал на хх оригинальное резюме, прикрепил туда ссылки (магазин + гитхаб с оповскими задачами). Откликнулся с сопроводительным письмом на вакансию, пригласили через два дня.

Магазинчик на вукомерсе, простенький, но он реальный и работает. Я торгую всякой мелочью с алиэкспресса.

Сказали, что тестирование будет состоять из теста и тестового задания. Т.к. тест я завалил, то до тестового даже не допустили. Там достаточно кандидатов было на эту вакансию. Такое чувство, что все эти рассказы про дохуя вакансий придумывают эйчары, которым надо делать вид, что они чем-то занимаются.
Ответы: >>1333890 >>1333896 >>1333913
Аноним 2019/01/24 10:53:27  №1333890 266
>>1333887
>Т.к. тест я завалил
Что за тест был?
Аноним 2019/01/24 10:56:27  №1333894 267
>>1333886
>Ну понятно вопрос чекает что там претендент помнит, а может и вовсе знает.
Всё равно вопрос странный. Я вот на память мало вспомнить могу - для меня это конструкция, а не просто слова.
Аноним 2019/01/24 10:58:29  №1333896 268
>>1333887
Задачи опа это понятно, а студентов, файлообменник или тестхаб делал?
Аноним 2019/01/24 11:04:29  №1333901 269
>>1333833
Судя по вопросам контора ни о чем. В такой никакого профессионального роста не жди, а для джуна это важно.
Аноним 2019/01/24 11:06:08  №1333902 270
>>1333860
Лол, я толком не писал ничего, но и то знаю ответы на большинство без гугла. Если ты не знаешь, то непонятно что ты за погромист.
Ответы: >>1333974
Аноним 2019/01/24 11:09:41  №1333913 271
>>1333887
Обратись к логике. Конкуренция в PHP наверное самая большая из всех языков. Но уровень кандидатов очень низкий. Поэтому зная чуть больше среднего можно легко их обойти. Искал бы ты работу на Хаскеле, там был бы уровень конкурентов во много раз выше.
Ответы: >>1333917
Аноним 2019/01/24 11:13:02  №1333917 272
>>1333913
>Искал бы ты работу на Хаскеле, там был бы уровень конкурентов во много раз выше.
А на нём работа есть? Больше похоже на клуб илитистов.
Ответы: >>1333937
Аноним 2019/01/24 11:13:36  №1333918 273
Лолвут? На хаскеле есть работа?
Аноним 2019/01/24 11:23:53  №1333935 274
>>1333787
Бамп вопросу. После просмотра еще пары промежуточных степ бай степ видосов на ютубе прихожу к выводу, что средств автоматизации в основном нет - люди берут вручную создаю бутстраповую сетку и вручную по ней разносят, прсото чекая пиксели из ФШ. Это так? Блин дримвивер получается юзлесс тогда, раз созданная им табличная сетка нах не нужна, а создавать самостоятельно бутстрап и прочий грид он не умеет.

Алсо, второй вопрос. Вот я вижу как все в видео по СД - ХТМЛ вставляют пиксели в бутстрапные элементы. Но ведь бутстрап ужимает при брейкопйнтах разрешения только сами колонки? Шрифты он сам не меняет,Ж правильно? Шрифты надо вручную менять? Тогда зачем они используют пиксели, а не рем-ем-проценты? Вообще, пошагово:

1.ФШ
2. Пиксельперфект в пикселях.
3. В бутстрап или кастом грид.
4. Пиксели -в рем? Надо ли?


ПОмогите, прочитал и просмотрел кучу всего, сам забилдил два-три макета, но не пойму вот общий шаблон, указанный выше, 4й щаг.
Ответы: >>1334047 >>1334176
Аноним 2019/01/24 11:24:48  №1333937 275
>>1333917
Работа есть. Но уровень нужен выше чем для PHP.
Аноним 2019/01/24 11:56:23  №1333958 276
>>1331382
Проверь пожалуйста. Мне очень надо.
Аноним 2019/01/24 12:25:55  №1333974 277
>>1333902
> знаю ответы на большинство без гугла
Если ты что-то знаешь с гуглом, то ты нчего не знаешь. Сейчас очень упала ценность чистого знания, когда все появилось в интернете. Ненышнее поколение считает интернет своей памятью и искренне удивляется, что кто-то нодобряет такой подход.
Ответы: >>1333987
Аноним 2019/01/24 12:29:30  №1333978 278
А зачем в стандартной библиотебе пыни есть функции вычисления косинусов и синусов? Кому-нибудь вообще это хотя бы раз пригодилось?
Ответы: >>1333990
Аноним 2019/01/24 12:35:10  №1333983 279
Абстрактные классы нужны лишь затем, чтобы отделить проектирование от реализации. Дискач.
Аноним 2019/01/24 12:36:16  №1333987 280
>>1333974
Если ты не знаешь элементарные вещи, значит ты не писал кода. Когда пишешь код, все само запоминается. Все таки они правильно делают, что хотя бы такие вопросы задают. Иначе поналезут нулевые гуглята.
Ответы: >>1334096
Аноним 2019/01/24 12:39:14  №1333990 281
>>1333978
Представь себе нужны для вычислений.
Аноним 2019/01/24 13:08:19  №1334016 282
Аноны, изучаю новые фичи пхп 7, добрался до методов.

Правильно ли я понял, что после перечисления аргументов через двоеточие идет возвращаемый тип?
func idiNahuy123(idi, na, huy): string
{
}

А что ставить, если метод ничего не возвращает? Void и null не работают, ошибка ссылается на пространство имен.
Ответы: >>1334038
Аноним 2019/01/24 13:15:01  №1334037 283
ребят, жутко пахнет от ног
Ответы: >>1334059
Аноним 2019/01/24 13:15:04  №1334038 284
>>1334016
С 7.1 добавили void. Вроде в этой же версии появились нулабл ретурны, типа ?string.
Аноним 2019/01/24 13:19:16  №1334047 285
Аноним 2019/01/24 13:28:54  №1334059 286
>>1334037
зачем ты нюхаешь ноги?
Аноним 2019/01/24 13:58:26  №1334096 287
>>1333987
>Иначе поналезут нулевые гуглята.
Как-то в твиче у работников гугла был флешмоб - они писали как здорово нихуя не знают элементарных вещей, на которых постоянно валят джунов разные говноконторки.
Программист должен понимать что делает и как, а не учить синтаксис наизусть. Вообще, всё знать не возможно в ИТ, и основная доля программера - читать документацию и гугл.
>Когда пишешь код, все само запоминается.
Вот именно - когда пишешь, а не когда судорожно пытаешься вспомнить сколько там конструкций в языке.
Ответы: >>1334101 >>1334115
Аноним 2019/01/24 14:03:03  №1334101 288
>>1334096
>а не когда судорожно пытаешься вспомнить сколько там конструкций в языке.
Я кстати погуглил эти ключевые слова из интереса, чтобы подсчитать. Оказалось некоторые из них я например вообще не видел ниразу, не довелось, соответственно я бы их и не назвал. Например insteadof.
Ответы: >>1334103
Аноним 2019/01/24 14:06:52  №1334103 289
>>1334101
Ну вот видишь. Теперь ты не имеешь права писать программы.
Аноним 2019/01/24 14:16:24  №1334115 290
>>1334096
>Программист должен понимать что делает и как, а не учить синтаксис наизусть.
Если ты не знаешь унарные и бинарные операторы, то ты ноль, очевидно что код не писал. Они везде одинаковые. Про изучения синтаксиса никто не говорил. Тут как раз не синтаксис, а семантика.
Ответы: >>1334140
Аноним 2019/01/24 14:23:54  №1334122 291
>>1333833
>1. Сколько ключевых слов зарезервировано языком, что это за слова?
не ебу
>2. Что значит слово “инициализация”?
установление первоначального состояния
>. Какие унарные и бинарные арифметические операции вы знаете?
+,-,/,,%, mod. Остальное вроде не арифметическое
унарный знаю минус
>4. Какой оператор используется для перехода к следующей итерации цикла?
continue
>5. Как правильно организовать доступ к полям класса?
сделать их константными
>6. Дайте определение понятию “конструктор”.
функция, возвращающая новый экземпляр класса
>7. Что такое сигнатура метода?
его тип и имя (тут я бы загуглил на самом деле, потому что может это просто его тип?)
>8. Расскажите об особенностях класса с единственным закрытым (private) конструктором.
без статического метода хуй такой создашь
>9. Чем отличается переопределение метода от перегрузки?
первое ad-hoc полиморфизм, второе сабтайпинг
>10. Можно ли объявить метод абстрактным и статическим одновременно?
зачем?
>11. Можно ли перегрузить static метод?
зачем?
>12. Что будет, если единственный конструктор класса объявлен как final?
синтаксическая ошибка, я же не пишу на богомерзкой жабе
>13. Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли какие-нибудь ограничения для такой переменной?
аналогично

с++-сеньер-300к-в-секунду*





Ответы: >>1334142 >>1334148
Аноним 2019/01/24 14:56:01  №1334140 292
>>1334115
Это не семантика даже, причем тут семантика, это фундаментальные знания, на которых программирование и построено.
Ответы: >>1334143
Аноним 2019/01/24 14:59:19  №1334142 293
>>1334122
>его тип и имя (тут я бы загуглил на самом деле, потому что может это просто его тип?)
Тип не имеет значения. Сигнатура это имя метода со списком параметров.
Ответы: >>1334154
Аноним 2019/01/24 14:59:50  №1334143 294
>>1334140
Семантика это значение единиц языка. Любое вычисление основывается на формальном языке. Это может быть даже не язык программирования. Но у него всегда есть единицы, а них значение. Бинарные операторы на самом деле пришли из математической логики. Они могут обозначаться по разному в разных формальных языках, но значение всегда одинаковое. Поэтому семантика все таки.
Ответы: >>1334145
Аноним 2019/01/24 15:00:37  №1334144 295
ОП ЗАКЛИНАЮ ТЕБЯ УБЕРИ ПОЖАЛУЙСТА УЗКОГЛАЗЫХ ШМАР ИЗ ОП-ПОСТ ЗАПОСТИ ЛИБО ЕВРОПЕЙСКИХ ЛИБО ВООБЩЕ НЕ ПОСТИ
Ответы: >>1334155
Аноним 2019/01/24 15:03:22  №1334145 296
>>1334143
Ладно, ты победил. Я до сих пор и не знал толком, что такое семантика, но благодаря тебе узнал.
Аноним 2019/01/24 15:05:56  №1334148 297
>>1334122
>с++-сеньер
>не может сказать что такое сигнатура
Кек
Аноним 2019/01/24 15:10:58  №1334154 298
>>1334142
А вот и "я с гуглом все умею" подкатили.

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

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

А вот имена параметров не важны, поэтому и определение "имя метода со списком параметров" тупое, неверное, и написанное индусом-копирайтером.
Ответы: >>1334163
Аноним 2019/01/24 15:11:14  №1334155 299
>>1334144
Та что справа на девченку даже не похожа. Трап наверное. Я бы тем кто трапов постит, вообще запретил создавать треды. Хоть бери и конкурирующий тред создавай.
Ответы: >>1334165
Аноним 2019/01/24 15:11:35  №1334157 300
Ответы: >>1334176
Аноним 2019/01/24 15:23:50  №1334163 301
>>1334154
Вообще-то это определение не из гугла, а из книжки по жабе от О'Рили. Тип метода это не типы его параметров, а только тип возвращаемого значения. Как ты понимаешь, на вход может придти массивчик, а выйти строка. А сигнатура метода это его название + список параметров. Так как методы можно еще и перегружать, то нужно указывать тип данных этих параметров. Их имена не играют роли, важен их порядок.
Аноним 2019/01/24 15:25:27  №1334165 302
>>1334155
Я уж не смогу отличить трапа от не-трапа, но азиатские рожи терпеть не могу.
Надеюсь, что он прислушается и внемлит мольбам анонов.
Аноним 2019/01/24 15:26:19  №1334167 303
Благодаря этому треду я понял, что программистом мне не стать, чему очень обрадовался.
Ответы: >>1334175 >>1334183
Аноним 2019/01/24 15:31:52  №1334175 304
Ответы: >>1334178
Аноним 2019/01/24 15:33:19  №1334176 305
Ответы: >>1334194
Аноним 2019/01/24 15:34:23  №1334178 306
>>1334175
буду продолжать писать для себя как тупая обезьяна в одном файле без ООП и psr
Аноним 2019/01/24 15:37:54  №1334183 307
>>1334167
Ну и зря. Бросил это дело, бросишь и другое. Трудности везде будут.
Ответы: >>1334199
Аноним 2019/01/24 15:42:39  №1334194 308
Аноним 2019/01/24 15:44:40  №1334196 309
>>1333787
Тебе один ответ может быть - пиши сам нормально, а не занимайся хуйней.
Ответы: >>1334217
Аноним 2019/01/24 15:48:42  №1334199 310
>>1334183
ответил выше.
Просто у опа один аргумент - "пишешь для ЗАКАЗЧИКА, а не для себя", а так как я пишу для себя, то и в рот ебал эти стандарты и ООП. Мой код все равно никто не увидит, свою задачу он выполняет, остальное мне видимо не нужно. Изначально хотел развиваться, но теперь не вижу смысла.

Фейсбуки с вк точно так же делали: хуяк хуяк и в продакшн, если взлетело - переделываем нормально. Такого подхода буду придерживаться и я, т.к. перфекционизм убьет все мои начинания.
Ответы: >>1334204
Аноним 2019/01/24 15:53:37  №1334204 311
>>1334199
Заказчику врядли важно как оно там, если работает как надо. А вот коллегам и тебе не насрать. Ну дело твое. Пишешь только для себя, и сам же от этого наплевательства пострадаешь в будущем.
>Фейсбуки с вк точно так же делали: хуяк хуяк и в продакшн, если взлетело - переделываем нормально.
Это в целом разумно, только тот же вк например так и не переделали нормально. Подозреваю, что и фейсбук тоже.
Ответы: >>1334208 >>1334211
Аноним 2019/01/24 16:01:57  №1334208 312
>>1334204
>Это в целом разумно, только тот же вк например так и не переделали нормально.
Двачую. Никакого MVC там и в помине нет. Еще уродливые гет-параметры, которые не помещаются в адресную строку.
Ответы: >>1334432
Аноним 2019/01/24 16:05:13  №1334211 313
>>1334204
>Пишешь только для себя, и сам же от этого наплевательства пострадаешь в будущем.
Каким образом?
>Это в целом разумно, только тот же вк например так и не переделали нормально. Подозреваю, что и фейсбук тоже.
Поясни, что с твоей точки зрения у них не так. Работает, не тормозит, что еще нужно?

>Двачую. Никакого MVC там и в помине нет. Еще уродливые гет-параметры, которые не помещаются в адресную строку.
Вы просто размышляете как погромисты, пользователю похуй что там в адресной строке и есть ли там mvc.
Ответы: >>1334214
Аноним 2019/01/24 16:07:43  №1334212 314
Аноны, нормально ли это в разработке, что я подробно комментирую каждую строчку? Просто когда я возвращаюсь к собственному коду, я понимаю, что происходит вот конкретно здесь, но у меня нет общей картины, зачем это, откуда и куда идет. Поэтому приходится на каждой строчке объяснять самому себе, что тут происходит, а еще каждый метод и класс описываю через / */ с парамсами и ретурнами. В общем, это занимает довольно много времени. Нужно ли себя от этого отучать?
Ответы: >>1334434
Аноним 2019/01/24 16:09:50  №1334214 315
>>1334211
Так мы и есть погромисты, нам похуй, что там у пользователя будет. Нам код поддерживать нужно, и чем удобнее это будет, тем лучше.
Ответы: >>1334216
Аноним 2019/01/24 16:11:49  №1334216 316
>>1334214
ну кароч я поэтому и сказал что не быть мне программистом, извините если кого чем обидел. Не хочу писать код ради написания кода, хочу решать задачи.
Ответы: >>1334219
Аноним 2019/01/24 16:12:01  №1334217 317
>>1334196
Ответь на вопросы няха.
Ответы: >>1336517
Аноним 2019/01/24 16:17:03  №1334219 318
>>1334216
У тебя практические намерения в кодировании, тебе хочется что-то созидать, а не хуярить класс за классом ради того, чтобы охуеть, какую структуру я могу написать. Создай какой-нибудь интернет-магазин, настрой seo и продавай через него что-нибудь. Вот это годно будет.
Ответы: >>1334222
Аноним 2019/01/24 16:21:59  №1334222 319
>>1334219
да я это и делаю, но зачитывался вашими тредами и дух захватывало - "ничего себе, может и я так могу?" Оказалось, что не могу, или не хочу, хз.
Проблем больше доставило то, что мы говорим на разных языках, и мне с моим подходом нереально будет влиться в какой-то коллектив потом.
Ответы: >>1334225 >>1334228
Аноним 2019/01/24 16:26:13  №1334225 320
>>1334222
Столько я тебе всего написал, а оказалось тебе и правда это не нужно. Бери готовое решение, написанное другими людьми, и работай тогда, в этот тред действительно можно было не заходить.
Ответы: >>1334241
Аноним 2019/01/24 16:27:59  №1334227 321
>>1326386
Доработанный вектор, https://github.com/php2ch/vector/blob/master/index.php

Учёл почти все замечания, а именно:
- Методы подсчёты значений сотрудника перенесены в департамент, в него же добавлены методы select() и isHead().
- Применил spaceship-оператор при сортировке.
- В функцию printCompany() добавил анонимные функции, теперь её можно запускать многократно.
- Среднее значение теперь вычисляется отдельной функцией.
- Методы антикризисного класса теперь статические, компанию не нужно добавлять в конструктор.

А, чтобы задать сотруднику индивидуальную з/п можно заменить содержащийся в нём объект профессии на новый (уникальный). Правда, тогда придётся проверять все объекты профессий в антикризисных мерах, но это уже другая история.
Аноним 2019/01/24 16:28:21  №1334228 322
>>1334222
Ты это я. Это смешно, но я уже с 2015 года вкатываюсь попеременно. То забиваю, то снова играет страсть что-то писать/изучать и т.д. Но я понял, что суть была в том, что у меня не было конкретной цели. Теперь я ее нашел. Я пилю свой проект с использованием всех последних бек-энд технологий и потом обязательно применю это на практике. Ну а если не получится, то и хуй с ним, проектом буду заниматься. Но я уверен, что получится, потому что я знаю уже больше, чем все здесь вместе взятые. Но это просто теория, практики у меня мало, щас вот наверстываю.
Ответы: >>1334230 >>1334244
Аноним 2019/01/24 16:34:23  №1334230 323
>>1334228
>Но я уверен, что получится, потому что я знаю уже больше, чем все здесь вместе взятые
Хуя громкие заявления из-за первого опыта написания собственного проекта. Многие тут лет по 10 тернистый путь этот преодолевают, не забивая на качество кода и умудряясь при этом построить карьеру. Ну да, ты шаришь лучше всего треда канеш, уникальный весь.
Ответы: >>1334235
Аноним 2019/01/24 16:38:51  №1334234 324
У меня есть маленький проект, первую рабочую версию которого я захуярил за пару часов в один файл под пхп4 без ооп и забыл. А теперь решил сделать вторую версию по-уму, поставил пхп7.1, фреймворк, добавил бутстрап, начал оформлять мвц. В результате уже три дня ебусь, всё никак не могу сделать выборку из БД через элоквент.

То ли лыжи не едут, то ли я ебанутый.
Ответы: >>1334237
Аноним 2019/01/24 16:40:27  №1334235 325
>>1334230
10 лет учить php и фреймворки? Хуя ты зелень. Да даже если бы ты 5 сказал, это тоже много.
Даже несмотря на это, я могу ответить за свои слова. Помимо пыхи я знаю еще несколько языков, даже в асме ковырялся. Да что там, когда я сегодня днем вбросил список вопросов, многие отсюда просто сказали, мол, а нахуя это вообще надо? Действительно, нахуя? Чтобы крудить, фундаментальные знания не нужны, а чтобы стать профи, нужно заглянуть дальше переменных со знаком доллара.
Ответы: >>1334240
Аноним 2019/01/24 16:41:58  №1334237 326
>>1334234
Ставь 7.3, если нужны тайпхинты полностью.
Аноним 2019/01/24 16:52:09  №1334240 327
>>1334235
10 лет я в целом занимаюсь кодингом, около 7 лет работаю. Есть куча своих проектов, и тоже всегда стремился свое писать. Работал не только на пхп, но и на шарпе, джавке, жсе и питоне. И свои проекты тоже разные совершенно. С чего ты решил, что тут в треде только изучающие?
Ответы: >>1334242
Аноним 2019/01/24 16:55:01  №1334241 328
>>1334225
зайду завтра, чтоб найти работников за лапшу которые будут писать мне модули к симфони (по факту половина из вас пилит вордпресс на фрилансе, а в этом треде все такие девелоперы пиздец)
Ответы: >>1334246
Аноним 2019/01/24 16:55:19  №1334242 329
>>1334240
В чем разница между .equals() и ==?
Ответы: >>1334256
Аноним 2019/01/24 16:57:33  №1334244 330
>>1334228
Я обычно сюда захожу после того, как напишу за пару часов какое-то убогое и кривое поделие под свою задачу. Оно настолько плохое (даже мне очевидно), что прямо больно смотреть. И я иду сюда, чтоб попытаться начать заново и в следующий раз делать все правильно. И каждый раз я ломаюсь и возвращаюсь к началу.

Впрочем мои душевные пиздострадания не имеют никакого отношения к php, так что не буду портить тред своим присутствием.
Ответы: >>1334247
Аноним 2019/01/24 16:58:58  №1334246 331
>>1334241
Что ты имеешь против лапши, гурман?
Аноним 2019/01/24 17:00:48  №1334247 332
>>1334244
Так а на чем ты пишешь?
Ответы: >>1334258
Аноним 2019/01/24 17:01:24  №1334248 333
Зачем проверять кнопку у формы перед ее отправкой?
Инбифо: чтобы узнать, что форма была отправлена с конкретной страницы
Ответы: >>1334257
Аноним 2019/01/24 17:24:07  №1334256 334
>>1334242
Можно было бы и язык еще написать, ну да ладно.
== и equals без перегрузки для ссылочных типов сравнит ссылки.
В шарпе можно перегрузить и то и другое, в джаве только equals, перегрузки операторов нет. (или есть в новых версиях, не следил)
Так же в шарпе для тех же стрингов уже есть перегрузка ==, чтобы сравнивать значения. В джаве этим не заморачивались и будут сравнены ссылки, для сравнения значений переопределены equals у встроенных типов. Ну и == не ругнется на нулл в отличии от equals в левом операнде, что в общем-то очевидно.
Ответы: >>1334260
Аноним 2019/01/24 17:28:10  №1334257 335
>>1334248
Потому что внезапно на странице может быть не одна форма. И я сейчас не имею ввиду формы в типичном представлении пользователя, а именно тег form.
Например, ты реализуешь отправку поста в базу по одной кнопке одной форме, а удаляешь пост из базы по другой кнопке в другой форме с одним полем из этой кнопки.
И это две разные формы с двумя разными кнопками.
Ну и так исторически сложилось, что нужно проверять именно кнопку.
Ответы: >>1334259
Аноним 2019/01/24 17:29:54  №1334258 336
>>1334247
на php, но без стандартов. Имею ввиду, что портить тред про обучение не хочу, т.к. и сам не научился, и другим мешаю.
Ответы: >>1334263
Аноним 2019/01/24 17:32:15  №1334259 337
>>1334257
>Например, ты реализуешь отправку поста в базу по одной кнопке одной форме, а удаляешь пост из базы по другой кнопке в другой форме с одним полем из этой кнопки.
>И это две разные формы с двумя разными кнопками.
Две разные формы с одинаковыми post параметрами?
Ответы: >>1334261
Аноним 2019/01/24 17:32:20  №1334260 338
>>1334256
Слушай, а я вот читал, что в жабе, если ты удалишь объект, то не факт, что он удалится незамедлительно, и некоторое непродолжительное время он будет жить, что может повлечь за собой некоторые баги. В общем, это зависит от того, с какой скоростью сборщик мусора его приберет. Это правда?
Ответы: >>1334294 >>1334412
Аноним 2019/01/24 17:34:35  №1334261 339
>>1334259
Это ты у нас такой умный, а остальные нет.
Ответы: >>1334275
Аноним 2019/01/24 17:43:05  №1334263 340
>>1334258
Если магазин пилишь, то позаботься хотя бы об элементарной безопасности.
Ответы: >>1334272
Аноним 2019/01/24 18:00:01  №1334272 341
>>1334263
>позаботься хотя бы об элементарной безопасности.
Разверни мысль. Или банальное экранирование переменных уже считается чем-то необычным?
А стиль написания кода на безопасность никак не повлияет, в отличие от стада мартышек, слепо действующих по мануалу.
Ответы: >>1334289
Аноним 2019/01/24 18:01:25  №1334275 342
>>1334261
а форму разве ты не сам себе шлешь?
Ответы: >>1334289
Аноним 2019/01/24 18:15:32  №1334289 343
>>1334272
Какое экранирование переменных? Ты про SQL?
>>1334275
Мужик, здесь не С++, и в ногу себе выстрелить никак нельзя.
Ответы: >>1334295
Аноним 2019/01/24 18:20:53  №1334294 344
>>1334260
Я не особо шарю в gc, работает на фоне и работает. В пыхе кстати тоже есть, но тут об этом обычно не думают, пока пилишь простое веб приложение и не покоряешь долгоживущие. Удаляется то, на что не остается ссылок. Конкретно самому удалять объекты, как в крестах например, не надо прямо. А то ты вроде именно удаление озвучил. Впринципе для удаления в таких языках можно параноидально обнулить все ссылки на объект и оставить остальное gc.
Какие там баги кроме утечек без понятия. Проще всего понять (да и обосраться) можно на статичных ссылках. Статика живет на уровне класса, поэтому даже после смерти инстансов такая ссылка остается валидной и gc ее не не тронет. Внутренние классы и потоки тоже легкий способ выстрелить в ногу gc. Много об этом не могу сказать, у меня серьезных утечек не было, только мелочевка вполне очевидная, и поэтому не приходилось вдаваться. В голове держу только сам факт, что за этим надо следить.
Ответы: >>1334306
Аноним 2019/01/24 18:21:52  №1334295 345
>>1334289
>>Например, ты реализуешь отправку поста в базу по одной кнопке одной форме, а удаляешь пост из базы по другой кнопке в другой форме с одним полем из этой кнопки.
>>Мужик, здесь не С++, и в ногу себе выстрелить никак нельзя.

Да вы тут поехавшие какие-то. Если ты сам себе шлешь данные пост запросом, то никаких проблем нет. Если ты шлешь данные не себе с одинаковыми полями, то не надо так делать.
Ответы: >>1334304
Аноним 2019/01/24 18:35:35  №1334304 346
>>1334295
Так данные шлешь не ты, а пользователь. А что он там тебе пришлет, одному богу известно.
Аноним 2019/01/24 18:41:08  №1334306 347
>>1334294
>В пыхе кстати тоже есть, но тут об этом обычно не думают, пока пилишь простое веб приложение и не покоряешь долгоживущие.
В нетбинсе последнем есть фича принудительного запуска сборщика мусора. И еще есть динамический счетчик памяти, занимаемой скриптом в рантайме.
Ответы: >>1334326
Аноним 2019/01/24 19:18:20  №1334326 348
>>1334306
У тебя были серьезные проблемы с утечками? По какой причине смог выяснить? Интересно опыт в этом плане отличный от своего услышать.
Аноним 2019/01/24 20:41:37  №1334365 349
.png (38, 991x598)
598x991
Поясните за текстовый редактор Атом? Где мой местный решарп?
Ответы: >>1334372
Аноним 2019/01/24 21:01:41  №1334372 350
>>1334365
Автоподстановка из коробки работает только в IDE.
Ответы: >>1334373
Аноним 2019/01/24 21:07:26  №1334373 351
.png (28, 689x447)
447x689
Ответы: >>1334384
Аноним 2019/01/24 21:53:50  №1334384 352
>>1334373
Тащемта, анус затощен под анускрипт, он даже написан на нем. Поэтому треба ставить плагины. Хуевый редактор, если честно. Саблайм и брекеты уделывают его в два счета.
Ответы: >>1334392 >>1334396
Аноним 2019/01/24 22:27:23  №1334392 353
>>1334384
> брекеты
Ух нихуя себе какая годнота, спасибо.
Аноним 2019/01/24 22:42:55  №1334396 354
>>1334384
А нет, не годнота. Судя по всему устарел на три года.
Ответы: >>1334813
Аноним 2019/01/25 00:16:49  №1334412 355
>>1334260

Баги это не должно повлечь. Если на объект не осталось ссылок в переменных программы, то с ним ничего нельзя сделать и есть он или нет - ничего не меняет. Хотя, конечно, при желании можно и в такой системе создать баг. Но это сложнее, чем в языках без сборки мусора, где программирование напоминает хождение по минному полю. На Си пишут лет 30-40 и до сих пор классические проблемы вроде buffer overflow или ошибок работы с памятью они лечить не научились. До сих пор есть шизанутые, которые пишут нечитаемый код в стиле a[i++] = b[j--];

Аноним 2019/01/25 04:05:39  №1334432 356
>>1334208
>Никакого MVC там и в помине нет.
Вордпресс тоже MVC не имеет, а сколько сайтов на нём крутятся? Вообще, в веб с норм технологиями как-то не повезло, один говнокод повсюду.
Аноним 2019/01/25 04:08:20  №1334434 357
>>1334212
Каждую строку не надо комментировать, только методы\функции, ну и описания классов там, или файлов, немножка - одной строкой. В сам алгоритм вообще лазать не надо, если он написан нормально и работает. Зачем его комментировать?
Аноним 2019/01/25 06:35:19  №1334481 358
!http://([a-z0-9.-]+)(/\\S+)?!
Аноны, у меня вопрос по этому выражению. Я смотрю на часть шаблона "http://([a-z0-9.-]+)" и интерпретирую его следующим образом. После двух слешей есть один из указанных в квадратных скобках символов, и за ним может следовать любое количество равно таких же символов или не следовать вообще ничего. То есть, строки типа aaa, 11, --------, но не ab--1 или georgebush. Я верно размышляю? И, если да, то зачем [a-z0-9.-]+ заключать ещё и в круглые скобки? Они же содержат установленую последовательность символов. А в конкретно этом случае они ничего не поменяют. Или?
Ответы: >>1334488
Аноним 2019/01/25 06:54:44  №1334488 359
>>1334481
Проверил такой код:

<?php

$text = 'Samwise Gamgee'; // will put "a" in $empty?
$expression = '/[a-z0-9.-]+/';
$empty = [];

preg_match($expression, $text, $empty);

echo var_dump($empty);

?>

Выдал "amgee". Как-то я не допираю. Как вообще функция сканит текст?
Ответы: >>1334491
Аноним 2019/01/25 07:02:19  №1334491 360
>>1334488
В общем, делаю вывод, что [characters_list]+ просто совпадает с любой строкой, в которой есть символы, которые содержатся внутри скобок. Не важно в каком порядке и каком количестве - главное, чтобы был хотя бы один символ. Это показалось мне странным, потому что я думал, что из квадратных скобок выделается какой-то один символ, если после них не стоит никакого кватификатора. А добавление плюса просто означает, что именно один из указанных символов может повторятся любое количество раз. Но это будет другая конструкция - ([characters_list])+
Сложно уложить это в голове почему-то.
Ответы: >>1334516
Аноним 2019/01/25 08:36:41  №1334516 361
>>1334491
Совет всем на будущее и тебе тоже.

1. Выкладывайте код на ideone или делайте скриншот из своего редактора, так будет легче всем воспринимать код.

2. Пишите как можно кратче без лишних витиеватых конструкций и воды. Я уже много раз переставал читать просто потому что слишком много букв. У нас ведь есть свои дела, а чтение длинного поста это трата времени.

3. Будьте благоразумны. Если не получается решить задачу, отдохните и попробуйте решить ее снова. Погуглите. Не целесообразно спрашивать ответы здесь сразу. Кайф от самостоятельного решения задачи, хоть и с гуглом, не сравним с банальной вычиткой ответа из треда.
Ответы: >>1334613
Аноним 2019/01/25 13:35:53  №1334613 362
Аноним 2019/01/25 13:45:51  №1334621 363
Не знаю, куда написать, напишу сюда. Меня в вузе учили, что у программы и подпрограммы должна быть одна точка входа, одна точка выхода, один тип возвращаемого значения. Что же я вижу в пыхе? Пикрилейтед.

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

Ответы: >>1334626 >>1334686
Аноним 2019/01/25 13:55:09  №1334626 364
>>1334621
в идеологии структурного программирования под единой точкой выхода подразумевается введение оператора return и запрет (либо использование только в необходимых случаях) так называемых "длинных переходов", аналогов setjmp/longjmp в си
те формально фции php уже соответствуют этому требованию


Ответы: >>1334637
Аноним 2019/01/25 13:55:59  №1334628 365
.jpg (17, 620x231)
231x620
Аноним 2019/01/25 14:18:22  №1334637 366
>>1334626
бля, это же php тред!
не заметил и отписался
я теперь зашквареный, бля
не отмытся перед пацанами


Аноним 2019/01/25 14:37:30  №1334646 367
Зачем в абстрактном супер-классе нужен конструктор?
Он нужен для того, чтобы его можно было вызвать у классов-потомков?
Ответы: >>1334647
Аноним 2019/01/25 14:38:37  №1334647 368
>>1334646
Или не вызвать, как захочешь. Ты можешь и не переопределять конструктор в дочерних классах. Или переопределить и насрать на базовый. Видал как много вариантов?
Ответы: >>1334651
Аноним 2019/01/25 14:47:56  №1334651 369
>>1334647
Проиграл в голосяндру.
Аноним 2019/01/25 14:52:32  №1334653 370
Аноны, я щас почти дописал свой велосипед (легкий мвс-фреймворк для создания инет-магазина). Если я его выложу на гитхаб и приложу к резюме, насколько высоко повысятся мои шансы на то, что я найду годное место?
Ответы: >>1334683
Аноним 2019/01/25 15:16:14  №1334683 371
>>1334653
Ну повыше станут - кодеры из контор хоть посмотреть смогут как пишешь. Это всё же лучше, чем наугад джуна брать.
Аноним 2019/01/25 15:18:17  №1334686 372
>>1334621
Неправильно утверждать, что функция всегда должна возвращать один тип. Функцию можно использовать как абстракцию данных. Она может возвращать другую функцию, которая в свою очередь не зависит от типа, и может возвращать разные типы, в зависимости от передаваемых аргументов.

В этом суть абстракции данных. Нам как и функциям, не нужно знать какой тип мы обрабатываемым. Мы можем обрабатывать разные типы одинаковыми функциями. Это дает универсальность и модульность. При таком подходе, не нужно переписывать верхние уровни абстракций, чтобы начать работать с новым типом. Достаточно изменить нижний уровень.
Ответы: >>1334694
Аноним 2019/01/25 15:23:14  №1334694 373
>>1334686
Декларативный хаскеле-червь-пидор, ты опять выходишь на связь, ублюдок?
Аноним 2019/01/25 18:22:08  №1334793 374
1548440520364.jpg (105, 720x960)
960x720
>>1333833
Ну давай ублюдок, иди сюда, думаешь меня трахнуть? Я сам тебя трахну
> 1. Сколько ключевых слов зарезервировано языком, что это за слова?
Серьезно? Не помню точное количество. Ориентировочно 30-50. Перечислять тоже лень.
> 2. Что значит слово “инициализация”?
Первичное присвоение значения переменной.
> 3. Какие унарные и бинарные арифметические операции вы знаете?
Унарные: унарный плюс/минус, инкремент/декремент. Бинарные: +-*/%
> 4. Какой оператор используется для перехода к следующей итерации цикла?
continue
> 5. Как правильно организовать доступ к полям класса?
Поля непубличные, через геттеры.
> 6. Дайте определение понятию “конструктор”.
Метод, вызываемый при инициализации объекта
> 7. Что такое сигнатура метода?
Аргументы и их типы + возвращаемые значения и их типы
> 8. Расскажите об особенностях класса с единственным закрытым (private) конструктором.
Бля, ну тут хуй знает. Видимо невозможно создать обьект такого класса напрямую. Можно создать в статическом методе такого класса, в его потомке. Скорее всего переопределить private конструктор в потомке тоже нельзя.
> 9. Чем отличается переопределение метода от перегрузки?
Перегрузка в япах обычно означает возможность создания методов с одинаковым названием, но разными аргументами. В пыхе такой хуйни нет.
Переопределение - создание метода с таким же названием в потомке.
> 10. Можно ли объявить метод абстрактным и статическим одновременно?
А хуле бы нет, да.
> 11. Можно ли перегрузить static метод?
Конечно, хуле нет.
> 12. Что будет, если единственный конструктор класса объявлен как final?
Нельзя его перегрузить?
> 13. Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли какие-нибудь ограничения для такой переменной?
Хуй знает, в анонимных функциях надо все внешние переменные передавать через use. Таким извратом как создание анонимных классов не занимаюсь
Ответы: >>1334795 >>1334835
Аноним 2019/01/25 18:24:01  №1334795 375
>>1334793
>Ориентировочно 30-50.
Я вчера нагуглил. И уже забыл. Около 70. Почти все реально в памяти не держатся, постоянно используемых гораздо меньше (и от конторы к конторе может разниться то, основной или альтернативный синтаксис юзается).
Ответы: >>1334803
Аноним 2019/01/25 18:32:12  №1334803 376
>>1334795
А, ну в пыхе же ещё куча всякой хуиты уровня endfor и т.п.
Тогда возможно.
Лол, зато я помню, что в Go около 30 ключевых слов
Аноним 2019/01/25 18:46:43  №1334813 377
>>1334396
> устарел на три года
>Последняя версия 1.13 (18.06.2018)
Аноним 2019/01/25 18:52:47  №1334819 378
14148698996280.jpg (33, 720x481)
481x720
Читаю мануал от ОПа, появился вопрос по циклам (точнее, по математике внутри echo). Пишу такой код:

<?php
error_reporting(-1);
for ($x = 1; $x<=10; $x++) {
\techo "{$x}x{$x} = $x$x\n";
}
?>

Выдает
1x1 = 1
1
2x2 = 22
3x3 = 3
3
4x4 = 44
5x5 = 5
5
6x6 = 66
7x7 = 7
7
8x8 = 88
9x9 = 9
9
10x10 = 10*10

ЧЯДНТ? Пробовал pow($x,$x) и миллион вариантов расстановки круглых и фигурных скобок вокруг переменных, он их просто выводит строкой.

Алсо, ОП, у тебя в первых уроках сказано, что принцип, по которому дают имена переменным, называется camelCase, полез гуглить. Википедия говорит, что CamelCase - это когда каждое слово, включая первое, начинается с большой буквы, а то, как в пыхе называют переменные, называется lowerCamelCase. Ну и прослезился на задачках про доллар по 32 рубля.
Ответы: >>1334821 >>1334844
Аноним 2019/01/25 18:54:03  №1334821 379
>>1334819
У макабы свои правила разметки, которые сильнее пыхи, но код работоспособный, I promise.
Аноним 2019/01/25 19:08:03  №1334835 380
>>1334793
>Унарные: унарный плюс/минус, инкремент/декремент. Бинарные: +-*/%
Аллилуйя, хоть кто-то ответил правильно.

>Аргументы и их типы + возвращаемые значения и их типы
Неверно.

>Хуй знает, в анонимных функциях надо все внешние переменные передавать через use. Таким извратом как создание анонимных классов не занимаюсь
Да по тем же правилам, что и к обычной переменой.
Аноним 2019/01/25 19:20:30  №1334844 381
>>1334819
С этим разобрался, теперь другой вопрос возник. Как в один цикл впихнуть 2 действия? Например, если есть 2 переменные, и если одна переменная меньше 100, то прибавить 4 к ней, а к другой прибавить 1?
Ответы: >>1334846
Аноним 2019/01/25 19:22:00  №1334846 382
>>1334844
Не пихай в определение цикла такие вещи. А так через запятую 1 и 3 секция фора делится на действия.
Ответы: >>1334860 >>1334862
Аноним 2019/01/25 19:27:15  №1334852 383
>>1331405
Ушёл из сервисного центра в пыхокодеры где-то три четверти года назад.

Сложно, но учиться всегда сложно.
Аноним 2019/01/25 19:31:32  №1334860 384
>>1334846
Спасибо, помогло. Действий сколько угодно можно добавить, надо полагать?
>Не пихай в определение цикла такие вещи
Это не я, это всё ОП! Я просто повторяю, что в мануале написано.
Аноним 2019/01/25 19:33:53  №1334862 385
>>1334846
Асмобляди вообще делают так:
for(;;) {
тут какой-то код
условие прерывания
}

Так что не надо тут.
Ответы: >>1334865
Аноним 2019/01/25 19:38:20  №1334865 386
>>1334862
Я в курсе, что это можно. Дальше то что? И вообще любой цикл можно описывть через (другой цикл) while(true) или тот же for (;;), только в теле придется побольше написать. Это не значит, что это пиздец хорошая практика и погнали так делать все и всегда.
Ответы: >>1334870
Аноним 2019/01/25 19:47:41  №1334870 387
>>1334865
Просто так нагляднее. Видишь фор, ага, значит цикл, смотришь, что происходит за одну итерацию, так, тут инкрементится, тут складывается, тут ансеттится, тут условие, хуе-мое, а в случае с фор (что-то;что-то;что-то) смотришь что и где, примеряешь каждую итерацию к условию, мысленно прогоняешь итерацию за итерацией и в какой-то момент говоришь: так падажжи ебана.
Ответы: >>1334880
Аноним 2019/01/25 19:53:42  №1334880 388
>>1334870
Я так то ему посоветовал в случае фор использовать только счетчик в определении, все остальное в теле цикла для читаемости (возможно за редкими исключениями), а не добавлять туда всю кучу счетчиков и условий из тела цикла, хоть это и возможно. Он для того и создан, чтобы банальный счетчик итераций из тела вынести, вот пусть так и используется. Для других случаев другие вещи подойдут.
Ответы: >>1334891 >>1334902
Аноним 2019/01/25 20:04:47  №1334891 389
>>1334880
Да ты прав, конечно, просто я поспорить люблю.
Аноним 2019/01/25 20:11:53  №1334902 390
>>1334880
Ты не прав. Нужно опираться на логику, а не на твое "Я сказал". Если нужно использовать составное выражение, то нужно использовать составное выражение. Выражения никогда не засоряют код, а вот лишние инструкции еще как. Цикл все равно будет в функции, будет скрыт, один раз написал и все. Потом используешь функцию как хочешь.
Ответы: >>1334914
Аноним 2019/01/25 20:22:33  №1334914 391
>>1334902
>Нужно опираться на логику, а не на твое "Я сказал"
Я этого и не говорил.
Аноним 2019/01/25 23:04:00  №1334954 392
>>1334227
Не размещай кучу классов в одном файле. Один класс - один файл.
Ответы: >>1334984
Аноним 2019/01/26 00:29:32  №1334962 393
Аноны, доброго времени суток, только вкатился. Решаю задачки вот. Подскажите я сильно хуёво тут написал? Заебался голову ломать, не варит нихуя.. До этого задачки не вызывали особых затруднений, а тут с этими строками пизда
https://ideone.com/q3MrtH
Надо написать программу явл палиндромом.
С этими mb функциями пиздец просто в голове и массивы, и циклы и условия, ебись они конём с этой задачей нихуя не выходит. Целый день блять эти задачи решаю.
Заранее благодарю. Соре, пригорело.
Ответы: >>1334986
Аноним 2019/01/26 05:04:55  №1334984 394
>>1334954
Пфф, кто сказал что так нужно делать? Чепуха какая то.
Аноним 2019/01/26 05:07:16  №1334986 395
>>1334962
Не годится. Создай функцию, которая будет принимать строку.

Прежде чем решать, расписывай алгоритм на бумажке. Эта техника очень помогает.
Ответы: >>1335030
Аноним 2019/01/26 07:40:28  №1335016 396
Какой вариант из двух предложенных ниже предпочтительнее использовать и почему? Они дублируют друг друга?

Первый:

$x = 10;
function test (&$x) {
$x = 5;
}
test($x);
echo $x; // 5

Второй:

$name = 10;

function test () {
global $name;
$name = 5;
}

test($name);
echo $name; // 5

Ответы: >>1335027 >>1335116
Аноним 2019/01/26 08:12:54  №1335027 397
>>1335016
Ни один. Что ты хотел показать и что хочешь сделать вообще? Если изменить глобальную переменную, то это антипаттерн.
Ответы: >>1335032
Аноним 2019/01/26 08:14:00  №1335030 398
>>1334986
>расписывай алгоритм на бумажке
Да зачем бумагу переводить? Прямо так пускай и пишет в редакторе:
// инициализировать переменные

// запустить такой-то цикл
// с таким-то телом

// и т.д.

А потом по этому скелету собирает.
Ответы: >>1335076
Аноним 2019/01/26 08:16:30  №1335032 399
>>1335027
Два разных способа сделать одно и то же. Спросил, какой предпочтительнее. Выходит - вообще нельзя менять по нормальным правилам? Тогда зачем существует ссылка на переменную?
Ответы: >>1335079
Аноним 2019/01/26 09:25:03  №1335076 400
>>1335030
На бумаге намного эффективней. Лучше использовать блок-схемы. То что ты написал - птичий язык. Он не формализован. По нему составить нормальный алгоритм невозможно. Для алгоритмов есть специальные формальные языки, - блок-схемы например.
Аноним 2019/01/26 09:26:02  №1335079 401
>>1335032
Непонятно что ты делал. Учись подробно и четко объясняться. Чем лучше будешь объяснять, тем точнее получишь ответ на вопрос. Попробуй еще раз.
Аноним 2019/01/26 10:05:02  №1335116 402
>>1335016
Зависит от того, что ты хочешь. В первом случае глобальная переменная изменится после вызова функции, во втором - нет.
Ответы: >>1335433
Аноним 2019/01/26 11:59:18  №1335249 403
Что делать, если мне надо возвращать несколько разных значений из метода?
Есть группа однотипных методов, которые принимают одинаковый параметр и возвращают один из возможных вариантов ответа.
Переписывать не вариант, уже пробовал, на архитектуру лучше всего ложится вариант, когда методы могут возвращать разные значения.

Какие есть варианты:
1. Не объявлять возвращаемый тип, а далее проверять через instanceof и функции вроде is_string что мне высрали. Не слишком хороший путь как по мне, ибо за счет динамической природы php будут ебнутые конвертации типов вроде string -> int.
2. Возвращать nullable-тип в связке с каким-то другим типом, то бишь, 2 возможных значения. Остальные значения записывать в члены класса и считывать потом. Тоже какое-то говно.
3. Создать свой класс, содержащий возможные значения и везде возвращать его. Плюсы: методы получаются чистыми, все четко и удобно. Минусы: надо городить очередной value-объект, бесполезный везде кроме этих нескольких методов.
4. out-параметры. Записывать некоторые или вообще все значения в переданные по ссылке переменные. Плюсы: аргументы типизируемы. Я могу передать "безтиповые" пустые переменные, а метод заполнит их нужными типами. Минусы: методы получаются нечистыми и ?? Вроде не такой уж хуевый вариант.

На какой стул сесть?
Ответы: >>1337267
Аноним 2019/01/26 14:44:32  №1335404 404
Привет, аноны. Начал немного осваивать PHP по учебнику из ОП поста. Прошу, подскажите, что делаю не так? Готовое решение не хочу, хочу сам понять, где обосрался. https://ideone.com/VGi2VJ. Заранее благодарю.
Ответы: >>1335405
Аноним 2019/01/26 14:44:55  №1335405 405
Ответы: >>1335762
Аноним 2019/01/26 15:20:15  №1335433 406
>>1335116
И во втором изменится - он импортировал её.
Аноним 2019/01/26 15:39:07  №1335448 407
Ответы: >>1337322
Аноним 2019/01/26 17:23:55  №1335517 408
>>1331378 (OP)
Анончики, вопрос по регуляркам.
Задача с проверкой номеров телефона
Сделал первую часть: ^(\s?(\+\s?7|8))
А потом, в книге пишут:
>за ними ровно 10 цифр, между которыми может быть любое число скобок, минусов, пробелов
Как это сделать? 10 цифр это понятно: [0-9]{10}
А как сделать, чтобы между ними учитывались скобки, пробелы и минусы? Можно ли как то это сделать за один раз, либо придется что то типа: сначала идут 3 цифры, потом возможно скобка или пробел или минус, потом еще три цифры и опять может пробел или минус и т.д.?
Ответы: >>1335533 >>1339689
Аноним 2019/01/26 18:16:59  №1335533 409
>>1335517
Вот такая регулярка получилась, не понял, можно ли сделать так как говорили в подсказке к заданию
^\s?(\+\s?7|8)\s?-?\(?\s?[0-9]{3}(\s?-?\)?\s?){1,3}[0-9]\s?-?\)?\s?[0-9]\s?-?\)?\s?[0-9](\s?-?\)?\s?){1,2}[0-9](\s?-?\)?\s?)[0-9](\s?-?\)?\s?)[0-9]{2}$
Вот примеры для проверки https://regex101.com/r/qF7vT8/3.
Конечно получилось так, что он в основном проверяет примеры, которые даны в учебнике, потому что нужно было бы учитывать каждый пробел, тире после цифры, а это еще бы увеличило регулярку. Поэтому если знаете, скажите можно ли как нибудь записать регулярку по типу есть 10 цифр, а между ними может быть либ0 строчка, либо тиру, либо скобки?
Ответы: >>1335758 >>1339689
Аноним 2019/01/27 08:24:25  №1335755 410
Ебанутые, блять, тред до бамплимита за неделю угандошили.
Аноним 2019/01/27 08:37:10  №1335758 411
>>1335533
Короче сделал увот так вот ^\s?(\+\s?7|8)([\s-\(\)0-9]*)$
Но теперь выделяется вся строка(то есть не только номер телефона, но и вся строка), но сократил как смогпросто увидел регулярку из четвертой части
Ответы: >>1339689
Аноним 2019/01/27 08:42:53  №1335762 412
>>1335405
Во-первых, какие <br/>? Это же не html, хотя не знаю, может в php тоже так можно, но все равно используй \n
Ну и твоя функция ничего не возвращает. ТО есть ты не используешь return
Ответы: >>1335769
Аноним 2019/01/27 08:56:22  №1335769 413
>>1335762
\n работают только в cli, а он в браузер выводит. Там только <br> работают.
Ответы: >>1335780
Аноним 2019/01/27 09:08:17  №1335780 414
>>1335769
В командной строке? Ты троллишь что ле? У меня по этой ссылке https://ideone.com/VGi2VJ выходит <br/><br/><br/> и все. Если изменить его на \n он работает
Ответы: >>1335802
Аноним 2019/01/27 09:45:48  №1335802 415
>>1335780
Потому что айдеон парсит код перед выполнением и заменяет все \n на <br>, а <br>, написанные тобой выводит, как есть, вот и работает. Такая вот имитация реальности. Как в VR-шлеме.
Ответы: >>1335808
Аноним 2019/01/27 09:56:58  №1335808 416
>>1335802
Это не ты тот "особенный", который говорил, что ООП не нужно?
Ответы: >>1335810 >>1335820
Аноним 2019/01/27 09:58:50  №1335810 417
>>1335808
А что, похож? Нет, к счастью. Я тот, кто спорил с ним по другую сторону баррикад.
Аноним 2019/01/27 10:27:03  №1335820 418
>>1335808
>"особенный"
Как завуалированно ты указал на слово "шизик".
Аноним 2019/01/27 13:11:08  №1335991 419
Супец, братаны-пыханы. Есть у меня поля в таблице, некоторые заполняются сразу, некоторые потом. Есть также поле с датой и временем. Как только я записываю данные в незаполненные ячейки строки, то дата с временем обновляются. Как сделать так, чтобы была обновлена только та ячейка в таблице, в которую идет запись?
Ответы: >>1337270
Аноним 2019/01/27 15:31:52  №1336156 420
ОП, а зачем ты советуешь местным макакичам учить pdo? Пусть сразу учатся в ORM разбираться. Это проще намного и используется в проде повсеместно. То есть практически применимо.
Аноним 2019/01/27 15:48:41  №1336194 421
kateesnameyarik1.png (16, 517x529)
529x517
Аноны, есть вот такая структура.
обертка( другая_обертка( какой-то_метод() ) );
Обертка лежит в одном классе и передает данные в другую_обертку, которая лежит во втором классе, и она уже запрашивает данные у метода из того же (второго) класса и возвращает первой обертке в первый класс.

Мне нужно из обертки вызвать какой-то_метод, причем, заранее неизвестно, какой именно это метод.
Может можно как-то передать сигнатуру метода в другую_обертку, чтобы она с ее помощью вызвала этот метод?
Возможно такое в php?
Ответы: >>1337272
Аноним 2019/01/27 16:32:19  №1336242 422
8.png (34, 512x512)
512x512
https://ideone.com/RjqkmC
Никак не могу понять, почему у меня буква w меняется на заглавную. Помогите сообразить, пожалуйста. Хочу обойти ucfirst()
Ответы: >>1336267
Аноним 2019/01/27 16:51:23  №1336267 423
>>1336242
А что не так? Ты разбираешь предложение по знакам препинания и делаешь каждую первую букву заглавной. Перед w у тебя точка. W - начало нового предложения.
Ответы: >>1336277
Аноним 2019/01/27 16:56:35  №1336277 424
>>1336267
w в слове download. Там o перед w.
Ответы: >>1336293
Аноним 2019/01/27 17:13:04  №1336293 425
>>1336277
str_replace заменяет все вхождения, переданные первым аргументом. Первый аргумент у тебя w, соответственно функция заменяет все w в строке $sentence на toUpperCase(w). Очевидно же, анониус.
Ответы: >>1336296
Аноним 2019/01/27 17:17:03  №1336296 426
3.png (37, 512x512)
512x512
>>1336293
Моё увожение. Благодарю!
Аноним 2019/01/27 19:49:27  №1336421 427
Есть в php хорошие встроенные итераторы деревьев?
Аноним 2019/01/27 19:52:35  №1336422 428
Поясните вот за что. Раньше я точно помню как кодеры на пхп гордились отсутствием типизации и говорили всем (в том числе и мне) что она нахуй не нужна и будет отмирать во всех ЯП. А теперь я читаю что в версии пхп 7+ ввели типизацию и даже выделили её как основную фишку пхп этой версии. Собственно, когда произошла смена коней и как отреагировало ваше комьюнити? Как быстро вы переобулись из одного лагеря в другой и какие оправдания себе находите?
Аноним 2019/01/27 19:56:40  №1336424 429
Ребята, как вы тестируете авторизацию?
Ответы: >>1337282
Аноним 2019/01/27 19:56:55  №1336425 430
>>1336422
Шизик, кто знает что тебе там показалось на заре твоей болезни? Никто не должен перед твоим манямиром оправдываться. Просто пей таблетки, которые врач прописал.
Аноним 2019/01/27 20:09:48  №1336431 431
>>1336422
А с чего ты взял, что это одни и те же люди? На пыхе типизация не обязательна, можешь юзать ее, а можешь и не юзать. Можешь юзать частично. Вариантов масса. Да и к тому же, насколько я понял, указывать типы в пыхе это все равно что вставлять палки в свои колеса. Толку от них, все равно, если не укажешь тип - нихуя не произойдет, просто ошибка не выкинется.
Ответы: >>1336480
Аноним 2019/01/27 20:24:16  №1336443 432
>>1336422
Знал такого одного, но он вообще не очень был и все на массивах делал и методах по 1к строк. Типизация так то не обязательная, типа пиши как хочешь, хозяин барин. Хотя по хорошему обязательная во всех случаях, кроме тех, где нестрогость предусматривается логикой. Да и то эта тема доступна только в сигнатурах методов (хотя за версии типа 7.3 не в курсе изменений).
Ответы: >>1336451
Аноним 2019/01/27 20:29:46  №1336451 433
>>1336443
Сижу на 7.3, никаких изменений в отличие от 7.1 не заметил.
Аноним 2019/01/27 21:58:31  №1336480 434
>>1336431
>насколько я понял, указывать типы в пыхе это все равно что вставлять палки в свои колеса. Толку от них, все равно, если не укажешь тип - нихуя не произойдет, просто ошибка не выкинется.
ты всё неправильно понял

Вообще, типизация, лучшая вещь, которая случалась с пыхой за последние 5 лет.
В версии 7.4 добавили типизацию переменных класса при объявлении.
Новичкам советую приучаться и юзать всё с типами.

Ответы: >>1336684
Аноним 2019/01/28 01:23:19  №1336517 435
>>1334217
Tut nikto ne yzaet dreampidor ili bootsthui. Dlya wseh uje dawno izobreli CSS Grid.
Аноним 2019/01/28 09:47:33  №1336602 436
>>1333694
>>1333692

Только дополз до работы, чтоб разобраться.

Сервер на диске C. Как мне, например, через хтмл (img src) вывести изображение pic.jpg, которое лежит на диске S?
Алиасы, кажется, делают не совсем то, что мне нужно.
Аноним 2019/01/28 11:16:59  №1336656 437
xc7862f91.jpg (51, 418x404)
404x418
Ребята, я не могу понять порядок работы функции preg_split().
Сначала долго вкуривал, как работают утверждения в регулярке, но в итоге разобрался в самом принципе. Однако теперь меня ввёл в ступор последний элемент массива в примере ОПа:
preg_split("/(?<=\d)/u", "12abc3"). Значения элементов массива будут такими: ['1', '2', 'abc3', ''].

Насколько я понял, функция будет посимвольно проходить по тексту, начиная с первого символа, и на каждой "остановке" делать проверку, не находится ли слева цифра. Если находится, то всё, что левее этой "остановки" попадёт в массив. Но мне не ясно почему работа регулярки не останавливается на последнем символе строки - 3. Там ведь дальше ничего вообще нет - куда она прёт?
То есть, изначально я думал, что функция сканит строку до символа 3. Остановившись на 3 и не зарегистрировав цифру слева, почему функция вообще выкидывает значение элемента abc3? А последний элемент - это вообще пушка. Как вообще логически туда могло попасть пустое значение?

В общем, я запутался. Помогите разобраться, пожалуйста.
Ответы: >>1337228
Аноним 2019/01/28 12:05:56  №1336684 438
>>1336480
Плохое я время выбрал для своего проекта. Каждые пару месяцев приходится с версии на версию перекатываться.
Ответы: >>1336686 >>1336928
Аноним 2019/01/28 12:07:35  №1336686 439
>>1336684
Помоему гдето раз в полгода-год минорка выходит, и перекатываться не обязательно так сразу.
Ответы: >>1336702
Аноним 2019/01/28 13:02:13  №1336702 440
>>1336686
Что еще за минорка?
Ответы: >>1336704 >>1336928
Аноним 2019/01/28 13:03:23  №1336704 441
>>1336702
На примере:
7.2
7 - мажорная версия
2 - миноная

Есть еще циферки дальше, но это лирика.
Ответы: >>1336737
Аноним 2019/01/28 14:46:30  №1336737 442
>>1336704
А откуда пошло такое именование? С чем это связано?
Ответы: >>1336750
Аноним 2019/01/28 15:03:36  №1336750 443
>>1336737
Я тебе только из головы могу сказать, а я нихера не шарю совершенно, кроме как на мажорку с миноркой ориентироваться, остальное не самое каждодневное.
Ну вот есть такая довольно общепринятая модель нумерования версии. Мажорка с миноркой понятно. Первая - это финиш, практически новый проудкт, вторая тот же продукт, но другое апи. Далее идут сборка и ревизия. Стадия кучи багфиксов так сказать и мелких правок. Сборка - это уже законченные билды, такие себе патчи с множеством фиксов, которые пользователям той же винды подсовывают под видом "нужно обновление" на минутку. Ревизия - тестовые билды конкретной сборки. Типа 3 билд 1452 ревизия означает билд номер 3 и 1452 ревизии этого билда хер знает кем, должно быть контролем качества.
Так то это не закон, иначе бы в школах учили, но полезно хотя бы первые две цифры нормально читать. Остальные уже при углублении.
Ответы: >>1336778 >>1336928
Аноним 2019/01/28 15:56:13  №1336778 444
>>1336750
Я ничего не понял, что ты написал. Шизофазия какая-то. С термина на термин прыгаешь. Тебе никогда не говорили, что ты не логичен?
Ответы: >>1336780
Аноним 2019/01/28 15:58:33  №1336780 445
>>1336778
Допускаю. Эту хуйню легко загуглить можно, не обязательно мой бред слушать.
Аноним 2019/01/28 18:28:26  №1336928 446
>>1336702
>>1336750
Гуглите семантическое версионирование: https://semver.org/lang/ru/#вступление

>>1336422
Ещё со времен PHP 5.3 ведущие фреймворки на полную использовали типизацию, может твои данные устарели лет на 10.

>>1336684
В PHP очень медленно и лениво добавляются изменения, для обновления минорной версии достаточно пару строк в проекте поправить (переводил проекты через 7.0 -> 7.1 -> 7.2). Конечно, при условии, что deprecation warnings исправляются сразу же. Это не JS, где каждые полгода проекты переписываются на новом стеке / фреймворке.
Ответы: >>1336989
Аноним 2019/01/28 19:20:14  №1336989 447
>>1336928
>может твои данные устарели лет на 10.
Я так смотрю - пол интернета судит пхп по версии 10-летней давности. Что самое забавно примерно столько же легаси говна на нём уже налепили.
Ответы: >>1336999
Аноним 2019/01/28 19:29:09  №1336999 448
>>1336989
Я тебе больше скажу: не все знают, что вышла 7 версия, и до сих пор продолжают лепить проекты на 5.6 версии по привычке.
Ответы: >>1337037
Аноним 2019/01/28 19:57:53  №1337037 449
>>1336999
>не все знают, что вышла 7 версия
Как можно назвать человека, который в своей профессиональной деятельности не следит за индустрией?
Ответы: >>1337062
Аноним 2019/01/28 20:20:33  №1337062 450
>>1337037
Да никак. Гонка за новым это дело молодых.
Ответы: >>1337204
Аноним 2019/01/29 05:29:06  №1337204 451
>>1337062
А ты пенсионер что ли, с паркинсоном и амнезией?
Давай не будем оправдывать свою лень и устаревший говнокод возрастом.
someApprentice 2019/01/29 06:20:14  №1337215 452
Некропостинг

>>1331410
> Биология имеет мало общего с техническими науками, и инженерией.
Скорее технические науки и инженерия имеют мало общего с биологией. Потому что технические науки и инженерия созданы человеком только за последние сотни лет, а биология это миллионы лет эволюции.

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

И более того наши технические устройства не так совершенны. К примеру, любое технологическое устройство, даже которое является венцом технологий (к примеру компьютерные сервера, производственные машины), рано или поздно ломаются, если за ними не следить, и им нужна постоянная поддержка человека. А биологические виды способны самостоятельно подстраиваться и использовать среду, способны самостоятельно восстанавливать себя, и самое главное способны к собственной репродукции.

>>1331431
>Все наоборот. Глупые идеи всегда выстреливают, потому что умных людей, хорошо понимающих науку и инженерию единицы. Кто отвергнет ООП? Школьники, кодеры без образования? Только тот кто понимает математику, науку, и инженерию. Таких очень мало. Кто использует ООП? Все кому не лень. Но у них у всех есть общая черта, они не знают и не понимают математику. Так как не понимают математику, то не понимают и науку с инженерией в целом.
Всё с точностью да и на оборот.

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

>Математики и инженеры начала, середины, и немного конца 20-го века, были последними кто мог создавать шедевры. Делать вещи простые, компактные, функциональные, но без лишнего. Как пример Лямбда-исчисление Чёрча, и комбинаторная логика Шейнфинкеля-Карри.
Древние технологии это тонкий и острый инструмент, да. Но каждый инструмент имеет свои плюсы и минусы. Как ты и сказал, ООП предназначено для решения любой абстрактной задачи, но в перевес этому, оно не может решить так эффективно конкретную задачу, как это сделали бы те технологии.

Мастерство заключается в умении правильно применить те или иные плюсы и минусы.
someApprentice 2019/01/29 06:50:03  №1337226 453
>>1331749
>>1331762
>Аноны, а просто любопытно, как вы читаете тред?
>Добавлен в избранное двача.
This.

>И как находите ответ на свою задачу если ОП часто их проверяет только несколько дней спустя, и за этой время успевают запостить 300-400 постов?
>Обязательно добавляю в сообщение с решением какое-нибудь ключевое слово (чаще всего название задачи), по нему нахожу свой пост и ответы к нему. Если задачу нужно переделывать, ваш ответ сохраняю в ворд-файл, чтобы не искать каждый раз.
Специально для таких случаев уже позаботились об этом - на сайте https://phpclub.tech можно получить конкретную цепочку обсуждения в течении всех тредов!

Чтобы это сделать нужно нажать на иконку "Цепочки" на интересующем вас посте.

https://phpclub.tech/pr/chain/1331762/
Ответы: >>1337390
Аноним 2019/01/29 06:54:22  №1337228 454
>>1336656

Алгоритм работы preg_split такой:

- найти в строке все подстроки (части строки), которые соответствуют выражению. Поиск совпадений производится слева направо, с первого символа до последнего. Подстроки не пересекаются, то есть, если регулярка нашла подстроку с 1 по 10 символ, то далее поиск совпадений продолжается с 11 символа
- вырезать из строки найденные подстроки и вернуть кусочки, которые были между ними + кусочек перед первым совпадением и после последнего

При этом регулярка из утверждений не "захватывает" символы и потому возвращает подстроки нулевой длины.

Пример: строка "abc", выражение "/./ui". Оно найдет подстроки "a", "b", "c". После "вырезания" из строки этих подстрок остается 4 пустых подстроки: ['', '', '', ''] - подстрока слева от a, между a и b, между b и c, после c.

Пример поинтереснее: выражение //ui, строка "ab". Пустое регулярное выражение совпадает с любой строкой, но не захватывает символы из нее. Потому оно "найдет" в строке 3 подстроки: перед a, между a и b и подстроку после b, все подстроки нулевой длины. Разбиение по этим подстрокам даст массив ['', 'a', 'b', ''].

Проверка, угадал ли я результат: https://repl.it/repls/CluelessRaggedAbstractions

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

Для отладки ты можешь использовать флаг PREG_OFFSET_CAPTURE в preg_match_all, который покажет позицию найденных подстрок (в байтах, а не символах, но для латиницы 1 байт = 1 символ).

Если ты хочешь зайти глубже, можно скачать библиотеку pcre, к которой приложены отладочные утилиты вроде pcretest ( https://www.pcre.org/ ). Они вызываются из ком. строки. Обрати внимание, что для некоторых платформ библиотека распространяется в исходных кодах и ее надо будет компилировать.
someApprentice 2019/01/29 08:02:02  №1337267 455
someApprentice 2019/01/29 08:07:19  №1337270 456
>>1335991
Покажи код и конкретно опиши проблему.
someApprentice 2019/01/29 08:09:47  №1337272 457
someApprentice 2019/01/29 08:23:50  №1337282 458
Аноним 2019/01/29 09:52:15  №1337322 459
>>1335448
Ты сам-то запускал что понаписал там, оно же, блядь, банально не работает! ОПу еще и дебажить за тебя что-ли?
Никто не обязан твоё говно разбирать, а на галере тебя за такое ебать грязной шваброй будут. Приведи код в порядок и рабочее состояние, чтобы смотреть приятно было. Имей уважение к своему труду и чужому времени, дружок.
Ответы: >>1337361
someApprentice 2019/01/29 11:12:10  №1337361 460
>>1337322
Свой негатив можешь оставить в /b/, а здесь люди пытаются научиться программированию на своих ошибках.

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

Пожалуйста, займись своими эмоциями в тематических для этого тредах, а в этом треде, и тем более, разделе занимаются программированием.
Ответы: >>1337370
Аноним 2019/01/29 11:25:54  №1337370 461
>>1337361
>Ты даже не указал где конкретно ошибка
Он не работает и человек выложил это на проверку, на всеобщее обозрение. Т.е. он сам неудосужился его проверить. Ошибка между стулом и клавиатурой.

>Свой негатив можешь оставить
А ты мне рот не затыкай, фашист.
Ответы: >>1337373
someApprentice 2019/01/29 11:32:22  №1337373 462
>>1337370
Я ожидал что разговор с такими эмоционально неуравновешенными будет бесполезен.
Ответы: >>1337383 >>1337387
Аноним 2019/01/29 11:44:08  №1337381 463
Аноним 2019/01/29 11:46:21  №1337383 464
>>1337373
Пыхыпыдебил - это хуже всего вообще, даже хуже червя-пидора.
Чему ты, гнида, наглядная иллюстрация.
Аноним 2019/01/29 11:52:13  №1337387 465
>>1337373
Дружок, ты выложил свой код на оценку - его оценили так как он того заслужил. Он не работает и тебя заслуженно обосрали, отчего ты начал обвинять просмотревшего в неуравновешенности. Заказчику ты тоже такое скажешь?
Ответы: >>1337389
someApprentice 2019/01/29 11:59:08  №1337389 466
Ответы: >>1337393 >>1337401
Аноним 2019/01/29 12:00:29  №1337390 467
>>1337226
Спасибо за ссылку, ОП. Благодаря тебе я нашел свой первый пост от 2015 года, где приложил скриншот своей первой имиджборды на html+php, такая-то ностальгия.
Ответы: >>1337391 >>1337401
someApprentice 2019/01/29 12:03:01  №1337391 468
>>1337390
>Спасибо
Пожалуйста, теперь иди нахуй.
Ответы: >>1337401
Аноним 2019/01/29 12:03:37  №1337392 469
Подскажите пожалуйста:
есть кусок кода, который должен выполнятся только первый раз. при перезагрузке страницы ничего не должно выполнятся.
Ответы: >>1337395
Аноним 2019/01/29 12:04:51  №1337393 470
>>1337389
Было бы забавно посмотреть, когда у заказчика падает весь магазин китайских поддельных сумок из-за такого вот кода в твоём плагине, а ты ему в ответ про неуровнавешенность лекции читаешь.
Ответы: >>1337397
Аноним 2019/01/29 12:08:53  №1337395 471
>>1337392
В куках ответ сей можно найти.
Аноним 2019/01/29 12:12:09  №1337396 472
так много работы и почти нет конкуренции пхп зоотая жила прям, серьезно
someApprentice 2019/01/29 12:12:13  №1337397 473
>>1337393
>неуровнавешенность
Ты эмоционально порвался неуравновешен.
Ответы: >>1337401 >>1337402
someApprentice 2019/01/29 12:17:42  №1337401 474
>>1337390
Я не, ОП. Я основоположник этого сайта и всего лишь учусь у него.


Прикньте у этого чувака так бомбануло, что он начал семенить от моего имени >>1337389 >>1337391 >>1337397 . Ахахахах жалко что нельзя отсылать голосые в тред, у него бы тогда ещё больше бомбануло от того как я смеюсь с него))))

Что это за люди что они делают зачем им всё это)))


P.S.
На этом можно прекратить флуд.
Ответы: >>1337410 >>1337422
Аноним 2019/01/29 12:20:27  №1337402 475
>>1337397
>Ты эмоционально неуравновешен.
Тебе показалось.
А вот ты неуважаешь ни свой труд, ни время других людей и вообще мудак по жизни, судя по треду - твой код ОП уже проверял, так ты, сделал минимальные правки и опять код-ревью на нерабочее говно просишь. Ты совсем шынгыс?
Ответы: >>1337410
Аноним 2019/01/29 12:27:55  №1337406 476
Хватит флудить. Код будет проверен, просто чуть позже.
Ответы: >>1337412
someApprentice 2019/01/29 12:30:06  №1337410 477
>>1337401
>Я не, ОП
>Ахахахах
>голосые
>)))
Ясно.
>>1337402
У тебя неуравновешенность, не способен помочь - проходи мимо
someApprentice 2019/01/29 12:32:44  №1337412 478
>>1337406
Не указывай и не оправдывайся а лучше пройди нахуй
Аноним 2019/01/29 12:48:45  №1337422 479
>>1337401
>Я основоположник этого сайта
Абу, иди нахуй.
Аноним 2019/01/29 14:39:10  №1337471 480
Наверное, этот вопрос тут уже тысячу раз задавали, но я задам еще раз. Зачем в php нужно деление на статичестие и не статические методы? В чем между ними разница? Я ведь могу обращаться к методу через экземпляр или напрямую через класс, какая разница?
Ответы: >>1337475
Аноним 2019/01/29 14:53:29  №1337475 481
>>1337471
>В чем между ними разница?
Если по простому - их можно ползовать без инициализации объекта. А ещё они выдаются в единственном экземпляре на все объекты этого класса, что иногда удобно и позволяет не размазывать функционал по приложению.
Ответы: >>1337479
Аноним 2019/01/29 15:06:20  №1337479 482
>>1337475
То есть если я вызову нестатический метод в одном объекте, то он повлияет только на него, а если статический вызову из класса, то он повлияет на все?
Ответы: >>1337505
Аноним 2019/01/29 15:08:23  №1337481 483
Аноны, есть некоторый запрос в бд. Мне его нужно отсортировать по, пусть будет, именам. Я через bindParam привязываю переменную к ключу, но сортировка не происходит вообще, зато если я пишу точно такой же запрос, но без ссылки, то все работает. Для примера:
$stmt = $db->prepare("SELECT xui, pizda "
. "FROM twoja_mat "
. "ORDER BY xui DESC ");
И
$stmt = $db->prepare("SELECT xui, pizda "
. "FROM twoja_mat "
. "ORDER BY :xui DESC ");
$stmt->bindParam(':xui', $xui, PDO::PARAM_STR);
. Причем, если основываться на отладке, то и в первом и во втором случае происходит запрос к бд SELECT xui, pizda FROM twoja_mat ORDER BY xui DESC, но с той лишь разницей, что при привязке ключа, 'xuy' будет в кавычках. Что я делаю не так? Не гуглится нихуя
Аноним 2019/01/29 15:51:58  №1337493 484
>>1337481
Байнды лучше всего избегать, это сильно усложняет восприятие кода.
Ответы: >>1337502
Аноним 2019/01/29 16:12:01  №1337502 485
>>1337481

Разница есть.

ORDER BY a - сортировать по значению поля a
ORDER BY 'a' - сортировать по строке 'a' (то есть как попало, так как мы сортируем по массиву одинаковых строк)

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

>>1337493

Не сказал бы. Хотя тут правильнее использовать bindValue, bindParam используется для двухстронней привязки, когда данные из БД заносятся обратно в переменную.
Ответы: >>1337779
Аноним 2019/01/29 16:37:45  №1337505 486
>>1337479
Статические методы из вызываются не столько из объекта, а из класса, вроде бы, и доступа к внутренним полям конкретного объекта у него нет, только, опять же, к статическим полям класса.
Ну сам напиши да попробуй, недолго ведь.
Ответы: >>1337510
Аноним 2019/01/29 16:44:05  №1337508 487
Что такое фронт контроллер? Это точка входа в приложение типа index.php или вызываемый в этом индексе главный класс приложения App, от которого танцуют все остальные классы?
Ответы: >>1337521 >>1337732 >>1337764
Аноним 2019/01/29 16:46:00  №1337510 488
>>1337505
Впервые слышу об этом. Я могу получить доступ к полям класса из статического и из нестатического метода.
Ответы: >>1337518
Аноним 2019/01/29 16:50:05  №1337514 489
>>1337481
Я вчера вот точно с такой же хренью сражался. В итоге плюнул и написал костыль сортировки через switch, который ORDER BY тупо соединяет с нужным значением. Думаю меня за это обоссут.
Аноним 2019/01/29 16:52:55  №1337518 490
>>1337510
А у меня вроде не получалось - писал, что-то в стиле "нельзя использовать этот метод\ссылку в таком контексте", хотя могу путать - давненько дело было.
Аноним 2019/01/29 16:58:54  №1337521 491
>>1337508
>Это точка входа в приложение типа index.php
Говорят это. Я там обычно окружение настраиваю - ошибки, дебаг там, пшеница, рожь, вот это всё. Потом бутстрап.пхп подключаю и понеслася.
Ответы: >>1337545
Аноним 2019/01/29 17:34:05  №1337545 492
>>1337521
>пшеница, рожь
Покушать-то.
Аноним 2019/01/29 17:40:29  №1337548 493
А я вот думал, какая к черту разница, с ООП мы пишем или все в одном файле? Все равно интерпретатор превращает наш код в лапшу, выполняя строчку за строчкой
Ответы: >>1337550 >>1337564
Аноним 2019/01/29 17:45:53  №1337550 494
>>1337548
Важно понять процедурную абстракцию (функции). Это основа. И обязательно функции высшего порядка.
Аноним 2019/01/29 17:57:11  №1337558 495
Laravel or Symfony?
Ответы: >>1337559 >>1337563
Аноним 2019/01/29 17:58:54  №1337559 496
Ответы: >>1337562
Аноним 2019/01/29 18:00:23  №1337562 497
>>1337559
стагнация и за рубежом не востребован
Аноним 2019/01/29 18:03:37  №1337563 498
>>1337558
Ну, смотря что ты хочешь сделать. Можно наугад просто выбрать или же взять и прочитать то, что пишут в интернетах.
Взять можно фреймворк посложнее, если тебе нужно не просто очередной магазин запилить: делаешь фреймворки, которые отвечают твоим задачам, запоминаешь стек фреймворков и расписываешь все плюсы и минусы. Так и сравниваешь потом плюсы и минусы и потом, если тебе нужна какая-то киллерфича, ищешь ее и выбираешь фреймфорк исходя из нее. Размер фреймворка и его архитектура элементов на стиль твоего кода не влияют.
Аноним 2019/01/29 18:04:34  №1337564 499
>>1337548
А ЦП вообще побитово всё воспринимает. Может обратно на перфокарты вернёмся?
Ответы: >>1337572
Аноним 2019/01/29 18:15:47  №1337572 500
>>1337564
Не совсем. 32-х или 64-х битные команды.
Ответы: >>1337577
Аноним 2019/01/29 18:20:41  №1337575 501
ну чо суки, объясняйте нахуй. Вкатился я в это ваше ебливое php. Вторую неделю дрочу этот "учебник" для дурачков от ОПа. Ебать то ли я такой "индивид", то ли ОП ебанутый. В этом нахуй учебнике, по-моему может быть ограниченному мнению-нихуя не понятно после массивов. Я уже неделю вешу, вроде бы что-то понимаю и блять опять нихуя не понимаю. У меня ща пукан в файер шоу превратился. Может ещё кто-то какие-то лёгкие гайды распишет? Или ресурс какой подкинет.
Ответы: >>1337578 >>1337582
Аноним 2019/01/29 18:21:25  №1337577 502
>>1337572
Там минимальный вычислительный элемент - транзистор. Нет там никаких команд на таком уровне. Один набор нулей с единицами - одна команда, другой - другая.
Ответы: >>1337584
Аноним 2019/01/29 18:21:38  №1337578 503
Аноним 2019/01/29 18:22:45  №1337582 504
>>1337575
Нет, нахуй иди.

Или научись у людей нормально помощь просить, долбоёб.
Ответы: >>1337583
Аноним 2019/01/29 18:23:25  №1337583 505
>>1337582
погорячился, извини Анон.
Ответы: >>1337587
Аноним 2019/01/29 18:23:33  №1337584 506
>>1337577
Архитектура ЭВМ имеет 7 уровней. Ты говоришь про один из нижних. А я говорил про уровень микроархитектуры.
Аноним 2019/01/29 18:28:56  №1337587 507
>>1337583
Что тебе именно непонятно? Строки, функции, регулярки?
В этом учебнике только азы, потом повеселее будет, с ООП и студент-листом, где ОП, вроде бы, объясняет, но нифига не всё, а скорее пинает в нужную сторону и катись сам дальше.
Ответы: >>1337598 >>1337607
Аноним 2019/01/29 18:48:36  №1337598 508
>>1337587
На самом деле этот учебник просто сборник задачек с неплохим зазывающим началом. Остальное там хуита ненужная.
Ответы: >>1337602
Аноним 2019/01/29 19:00:39  №1337602 509
>>1337598
Вполне нужная хуита там. Нужная и полезная. Уж точно лучше гугла, который до сих пор в поиске выдаёт советы от знатоков, которые через msql на БД ходят.
Ответы: >>1337609
Аноним 2019/01/29 19:07:26  №1337607 510
>>1337587
В общем я вкатился с полным Nullем знаний, я прошёл задачки в темах Массивы, Циклы и Условия и всё до них. И у меня какое-то зависание теперь происходит. К слову я это именно задрачиваю, т.е. приходя домой с работы в 17.30, я ем и начинаю заниматься до 21-22, а потом намертво падаю до 6.20. И по новой каждый день. Так вот последние 2 дня, я просто нихуя не понимаю что от меня хотят в задачах, какие переменные и куда что засовывать. Я думаю, я просто заебался.
И, кстати учу я так:
1) Читаю гайд от ОПа
2) Мануал ПХП обязательно листаю по подходящей теме
3)Решаю задачи
4)Ищу решения в интернете и осмысляю их
А по факту последние 2 дня я выполняю 1, 2 и всё, даже не уверен что в голове что-то откладывается.
Стоило бы отдохнуть пару дней хотя бы от этого или продолжать тыкаться-мыкаться в эту закрытую стену?
Ответы: >>1337612 >>1337617 >>1337971
Аноним 2019/01/29 19:14:41  №1337609 511
>>1337602
Так рабочий способ же. Низкоуровневый, но рабочий.
Аноним 2019/01/29 19:18:38  №1337612 512
>>1337607
Советую тебе просто умереть и не создавать мне конкуренцию, сидящему на шее у мамки и каждый день с утра до ночи пидорящему пыху и смежное.
Ответы: >>1337613
Аноним 2019/01/29 19:21:15  №1337613 513
>>1337612
нахуя ты тогда пидоришь это говно? У тебя ж и так всё хорошо.
Ответы: >>1337615
Аноним 2019/01/29 19:26:29  №1337615 514
>>1337613
Скажем так, я заглядываю наперед.
Аноним 2019/01/29 19:28:57  №1337617 515
>>1337607
Просто такие вещи требуют времени для понимания, если никогда раньше ничего такого не делал. Понимание машинной логики не всем сразу даётся: все эти циклы, ветвления, переменные. Просто дай себе время чтобы переварить инфу, не гони. Закинул себе тему новую, попробовал задачку - вышла\не вышла, но отдохни день-два, просто возвращайся иногда в мыслях к этой теме, обдумывай её и через пару дней увидишь как всё просто на самом деле. А сдуру и хуй сломать можно.
И поменьше эмоций - успеется ещё жопой пригорать к стулу.
Ответы: >>1337646 >>1337726 >>1337873
Аноним 2019/01/29 20:05:05  №1337646 516
>>1337617
> А сдуру и хуй сломать можно.
Ненавижу эту фразу.
Ответы: >>1337655
Аноним 2019/01/29 20:12:30  №1337653 517
В чем разница между ошибкой и исключением с точки зрения фреймворков? Вот я начал ковырять один из них и вижу, что ErrorHandler обрабатывает не ошибки, а исключения. Разрабы опечатались просто или что?
Аноним 2019/01/29 20:13:38  №1337655 518
Аноним 2019/01/29 20:36:24  №1337660 519
Хочу сделать викторину, почти как "борьба умов" на телефоны, только в виде сайта. С чего начать? Какие темы гуглить?
Ответы: >>1337661 >>1337710
Аноним 2019/01/29 20:41:20  №1337661 520
>>1337660
Ты хочешь чисто на эрудицию делать вопросы или на находчивость? Если первое, то обратись к вике, если второе у нас на дваче куча разделов с тематикой, откуда можно почерпнуть вопросов.
Ответы: >>1337665
Аноним 2019/01/29 20:57:29  №1337665 521
>>1337661
Не про вопросы для сайт спросил. Интересно как реализовать сам сайт, я изучаю пхп всего 1.5 месяца, и понимаю только синтаксис, так же еще сделал по видеоуроку интернет магазин, но из него я пока подчерпнул знания с БД и не более. В общем интересна сама реализация.
Например я захожу на сайт и регистрируюсь или просто имею случайное имя типа "гость111", выбираю например сложность вопросов, ищу случайного оппонента либо играю с опредленным, статистика ответов, награды за победы и т.д.
Ответы: >>1337673
Аноним 2019/01/29 21:37:41  №1337673 522
>>1337665
Это нахуй никому не надо будет, лучше что-нибудь полезное сделай.
Ответы: >>1337684
Аноним 2019/01/29 22:43:21  №1337684 523
>>1337673
Это мне надо умник ебаный
Аноним 2019/01/30 02:47:50  №1337710 524
>>1337660
Ты понимаешь как сделать роутинг? Сессии, БД, вот это вот все изучал? Для такого сайта скорее всего нужно SPA.
Аноним 2019/01/30 04:47:09  №1337726 525
>>1337617
благодарю, анон! Так и поступлю.
Аноним 2019/01/30 05:40:03  №1337732 526
>>1337508

Это паттерн проектирования, описанный например тут: http://design-pattern.ru/patterns/front-controller.html

Когда все запросы проходят через Front контроллер и дальше уже направляются на обработку Page controller, контроллеру конкретной страницы.
Ответы: >>1337835
Аноним 2019/01/30 07:15:32  №1337764 527
>>1337508
PHP рожден чтобы умирать. У него такая модель жизни приложения. Запустилось и умерло. Поэтому раньше делали роутинг приложения с помощью веб-сервера. Он запускал для каждого запроса отдельный .php файл.

Единая точка входа, это когда все запросы идут в один файл. А там запускается роутер, который вызывает нужные функции, в зависимости от запроса.
Ответы: >>1337785 >>1337835
Аноним 2019/01/30 08:02:50  №1337779 528
>>1337502
Пиздец, спасибо аноне. В итоге просто сделал для сортировки разные препеиры. Но код пиздец раздулся
Аноним 2019/01/30 08:17:42  №1337785 529
>>1337764

Вообще, этот паттерн, когда скрипт отрабатывает и завершается - это скорее плюс, так как он убирает лишнее состояние и делает работу приложения на PHP более близкой к функциональной парадигме, и к идее stateless из REST: выполнение одного экземпляра скрипта не влияет на выполнение другого экземпляра. Также, это обеспечивает простоту масштабирования на много серверов, и избавляет от проблем с утечками памяти, которыми часто страдают приложения на других языках. Хуже того, для многих языков при этом нет доступных и удобных средств поиска источника утечек.
Ответы: >>1337789 >>1337790 >>1337835
Аноним 2019/01/30 08:26:20  №1337789 530
>>1337785
Утечки не совсем на уровне скрипта, а на уровне процесса. Так то они все равно существуют, ибо процесс все же не создается полностью с нуля на каждый реквест - не самое шустрое дело. Можно и так конечно, но работа будет нихера не отзывчивой. Просто это дело проходит безболезненно обычно. Тот же php-fpm чаще всего конфигурируется на заданное количество реквестов на один процесс в пуле, после чего тот нормально убивается (соответственно чистится память) и запускается новый. Можно и без перезапуска процессов, но тогда надо убедиться что утечек реально совсем нет, что не всегда вообще от тебя зависит.
Аноним 2019/01/30 08:27:20  №1337790 531
>>1337785
SPA как делать в таком случае? Производительность при умирающем приложении очень низкая, 1000 rps потолок, а то и меньше. Еще бывает нужно что-то делать в фоновом режиме.

ФП к этому не относится. В ФП пропагандируется не изменять состояние переменных. Но в базу писать нужно все равно, и запросы обрабатывать. Если каждый раз создавать соединение с базой, производительность будет плачевной.
Ответы: >>1337798
Аноним 2019/01/30 08:56:21  №1337798 532
>>1337790
>Производительность при умирающем приложении очень низкая, 1000 rps потолок
Откуда ты эти цифры берешь? Зависимость от конкретной реализации конкретного приложения и мощностей машины напрямую присутствует.
>SPA как делать в таком случае?
И это тут совершенно не причем.
Для начала просто выясни сколько рпс тебе нужно. Потом поищи узкие места, если все еще актуально будет. 1к рпс в большинстве случаев потащит больше 10к пользователей одновременных. (цифры умозрительные, зависит от логики потому что, просто усреднил. в одной прилоге один пользователь может генерить в среднем 1 запрос за минуту, в другом может 10 запросов за секунду, не угадаешь) Уверен, что у тебя достигается нужная посещаемсоть для преодоления отметки в 1к рпс? Я просто не в курсе по твоему проекту, так что вполне может быть ты раньше времени паниковать начинаешь.
Ответы: >>1337802 >>1337802 >>1337802
Аноним 2019/01/30 09:09:08  №1337802 533
>>1337798
>Откуда ты эти цифры берешь? Зависимость от конкретной реализации конкретного приложения и мощностей машины напрямую присутствует.
Уже давно все протестировано. На хорошем i7 не более 1000 rps держит, при умирающем приложении.

>>1337798
>И это тут совершенно не причем.
Как это не причем. Каждый раз поднимать приложение? Это будет говеное SPA, будут задержки.

>>1337798
>1к рпс в большинстве случаев потащит больше 10к пользователей одновременных.
Сомневаюсь. Если это просто информационный сайт, то может быть, а взять хотя бы интернет-магазин, пользователь может напинговать за минуту десятки запросов. Не говоря уже о чем то более интерактивном.

Ответы: >>1337806
Аноним 2019/01/30 09:26:20  №1337806 534
>>1337802
>Каждый раз поднимать приложение? Это будет говеное SPA, будут задержки.
Угу, и на приложениях для телефончиков всяких тоже, котоыре все через те же апишки работают, которые очень часто на пхп. Или браузерки возьми какие-нибудь - их там тоже до задницы на самом обычном коде с пхп, как хороших так и плохих.
Если у тебя ощутимые задержки без проблем с интернетом - скорее всего узкое место в твоей реализации и тебе нужно фиксить именно его.
При замерах рпс неважно спа там или нет, потому что ты замеряешь только выносливость приложения на текущей развертке. Среднее время на запрос тогда смотри. Интересно узнать кстати, какое среднее время запроса ты считаешь приемлимым.
>взять хотя бы интернет-магазин
На таких проектах при высокой нагрузке у тебя больше проблем с базой будет, чем с приложением. Там в бд страсти христовы часто.
>Каждый раз поднимать приложение?
Если не лень замерь именно сколько времени тратится на подъем приложения на разных фреймворках, интересненько будет посмотреть.
Ответы: >>1337811 >>1337811 >>1337811
Аноним 2019/01/30 09:42:23  №1337811 535
>>1337806
>Угу, и на приложениях для телефончиков всяких тоже, котоыре все через те же апишки работают, которые очень часто на пхп.
Извини, но это глупость. Создание процесса не быстрое дело. Для SPA нужен мгновенный отклик. Поэтому вероятно сейчас много SPA приложений тормознутые. По хорошему, для SPA нужно активное соединение, и соответственно запущенный процесс. Каждый раз поднимать это глупость. Так могут делать либо дилетанты, либо пофигисты, кто не заботится о пользователях.

>>1337806
>Если у тебя ощутимые задержки без проблем с интернетом - скорее всего узкое место в твоей реализации и тебе нужно фиксить именно его.
У меня все в порядке. Мне ничего фиксить не нужно.

>>1337806
>Если не лень замерь именно сколько времени тратится на подъем приложения на разных фреймворках, интересненько будет посмотреть.
Я говорил о чистом PHP. С фреймворками оверхед еще больше.
Ответы: >>1337812
Аноним 2019/01/30 09:49:02  №1337812 536
>>1337811
Ну тогда не поднимай каждый раз прилогу, раз сам для себя решил этот вопрос уже. Это возможно и легко гуглится, просто не так часто с этим люди работают и не думаю что ты помощь в этом треде найдешь особенную по этому вопросу.
https://github.com/walkor/Workerman
Вот как пример. Можно еще аналогов найти не мало.
Ответы: >>1337823
Аноним 2019/01/30 10:01:38  №1337823 537
>>1337812
Я разве задавал вопросы? Я отвечал на вопрос. Ты вклинился и начал мне объяснять как у меня все неправильно и плохо.
Ответы: >>1337826
Аноним 2019/01/30 10:03:18  №1337826 538
>>1337823
Ну блядь приехали, тогда не формируй ответ как вопрос.
>SPA как делать в таком случае?
Ответы: >>1337833
Аноним 2019/01/30 10:16:42  №1337833 539
>>1337826
Это были наводящие вопросы. А не вопросы ответы на которые я не знаю. Если бы я тупо начал писать, что ты все говоришь не правильно, а нужно так и так, то это был бы не аргументированный текст.
Аноним 2019/01/30 10:26:58  №1337835 540
Ответы: >>1337846
Аноним 2019/01/30 11:11:27  №1337846 541
>>1337835
Вопрос не понятный. Сам по себе контроллер это не файл, а функция.
Ответы: >>1337987
Аноним 2019/01/30 12:12:19  №1337873 542
>>1337617
Да всегда работает, лол, видимо с мышлением как-то связано, случается какой-то заклин на определенной метакогниции относительно задачи, откладываешь, возвращаешься и вуаля смотришь под другим углом или еще до решения озаряет.
Ответы: >>1338122
Аноним 2019/01/30 14:12:01  №1337971 543
Аноним 2019/01/30 14:38:17  №1337987 544
>>1337846
Да понятно. Фронт-контроллер это точка входа приложения. Просто хочу понять, где эта точка входа: файл, куда направляются все пользовательские запросы или инициация всего приложения из этого файла.
Ответы: >>1337991 >>1338016
Аноним 2019/01/30 14:41:16  №1337991 545
>>1337987
Ты можешь даже разные приложения дергать при желании. Вот фронт контроллер этим и занимается. Точка входа самое правильное описание для него, усложнять далее не обязательно.
Аноним 2019/01/30 15:07:04  №1338016 546
>>1337987
index.php например. Дальше за дело берется роутер.
Аноним 2019/01/30 16:33:48  №1338085 547
Анон, который пишет свой фреймворк-велосипед, я думаю сделать к нему официальную документацию, комментарии и т.д. на русском языке и выложить это на гитхаб.
Как думаете, если очередные хабрадауны заметят мое поделие, то много вони поднимется из-за того, что я пишу доки на родном языке, а не на их любимом ангельском?
Также хочу кастомизировать обработчик ошибок и исключений, красиво оформить и национализировать для русскоязычного сообщества.
Ответы: >>1338087
Аноним 2019/01/30 16:37:02  №1338087 548
>>1338085
>хабрадауны
Судя по движухе в этой клоаке дауны как раз таки тут.
Ответы: >>1338095
Аноним 2019/01/30 16:55:53  №1338095 549
Ответы: >>1338097
Аноним 2019/01/30 17:00:39  №1338097 550
>>1338095
А ты сравни даунов, которые на хабре пописывают, может даже чегото достигают. С теми, которые тут сидят только ради анонимного перекидывания говном, которое ни одной живой душе не интересно. И все на свои места встанет. А так пиши, можешь даже статейку написать о своем поделии, не обязательно на хабр.Велосипедные темы довольно популярны.
Ответы: >>1338132
Аноним 2019/01/30 17:22:28  №1338122 551
>>1337873
Это известный факт, что для обучения нужно время. В идеале ещё и не напрягаться и учить столько, сколько хватает от сессии до сессии и не больше, вот тогда ещё и удовольствие приносить начинает, что, в свою очередь опять улучшает и ускоряет понимание материала. А если напрягаешься во всю, да ещё при этом начинаешь замечать, что туго идёт как-то, то всё - приехали. Стресс, переключение внимания на себя, а не на предмет, потом складывается негативное отношение к процессу и человек ещё на подходе уже угнетать себя начинает. Ну и бросает потом - говно же, как в школе. А нужно именно увлекаться этим, как игрой. В конце-концов в наших тупых играх задачки ещё ебанутее встречаются, и ничего - хаваем.
Такая вот теория.
Аноним 2019/01/30 17:27:48  №1338132 552
>>1338097
Да это понятно. Тут в основном только новички-вкатывальщики сидят да какие-то трали, считающие себя ветеранами кодирования.
Спасибо за совет насчет статейки, буду иметь ввиду.
Аноним 2019/01/30 17:28:55  №1338135 553
Пилите перикард.
Ответы: >>1338395
Аноним 2019/01/30 17:42:43  №1338160 554
15332186779700.jpg (89, 720x682)
682x720
>>1334227
ОП, посмотри мой банкомат (не жадный, с перебором и ограничениями).
https://ideone.com/CRwVJY

Заранее спасибо!
Ответы: >>1338203 >>1338388
Аноним 2019/01/30 18:14:55  №1338203 555
>>1338160
А почему не с классами? Опу это не понравится.
Ответы: >>1338204 >>1338395
Аноним 2019/01/30 18:16:56  №1338204 556
>>1338203
А зачем делать с классами то, что проще и логичнее делать без них?
Ответы: >>1338207
Аноним 2019/01/30 18:20:32  №1338207 557
>>1338204
Надо с самого начала учиться писать правильно.
Аноним 2019/01/30 18:23:43  №1338210 558
>>1338207
>Надо с самого начала учиться писать правильно.
Уа-ха-ха. Правильно это по твоему только с классами? Это называется ООП головного мозга. Классы нужны там где они нужны. PHP поддерживает ФП. Так что можно вообще без классов обходится если захочется.
Аноним 2019/01/30 18:34:09  №1338223 559
>>1338207
Почему бы тогда не давать практические задачки на классы, где они НЕОБХОДИМЫ? Ох вейт, таких задач не существует.
Ответы: >>1338252 >>1338395
Аноним 2019/01/30 18:46:02  №1338227 560
>>1338207
Класс всего лишь абстрактный тип данных. Можно реализовать тоже самое другими способами.
Аноним 2019/01/30 18:48:20  №1338232 561
>>1338207
По сути классы дают не более чем модульность. Без классов можно достичь более гибкой абстракции данных.
Ответы: >>1338395
Аноним 2019/01/30 19:15:39  №1338252 562
>>1338223
>Ох вейт, таких задач не существует
Любая, где количество строк больше 1к и много модулей.

Хотя >>1338207 выразился немного коряво. Надо писать не "правильно", а "как все и не выёбываться", чтобы ты мог понимать что пишут другие люди и люди могли понимать что ты там накалякал. Хотя, конечно, люди вполне и в ФП пишут, но уровень у тех что пишет на ООП, как ни странно, выше.
Аноним 2019/01/30 19:23:49  №1338257 563
>>1338252
>"как все и не выёбываться"
То есть ООП головного мозга.

>>1338252
>но уровень у тех что пишет на ООП, как ни странно, выше
Рассмешил. Тупее оопэшников никого нет. Извини если обидел, но это чистая правда.
Ответы: >>1338262 >>1338264
Аноним 2019/01/30 19:25:30  №1338262 564
>>1338257
Толстый тролль томно прячет телеса.
Ответы: >>1338267
Аноним 2019/01/30 19:26:25  №1338264 565
>>1338257
Неосилятор как есть.
Ответы: >>1338267
Аноним 2019/01/30 19:26:50  №1338265 566
>>1338252
>Любая, где количество строк больше 1к и много модулей.
Никакой корреляции с классами нет. В ФП стиле, даже не так, в функционально-объектном стиле (без классов), можно писать приложения любого размера. И не угробить его, не запутаться в нем. На классах такое невозможно. На классах оно перерастет в банальное неподдерживаемое легаси. Код на выброс как говорится.
Ответы: >>1338272 >>1338395
Аноним 2019/01/30 19:28:27  №1338267 567
>>1338262
>>1338264
Под вашим ООП на классах (которое и не ООП вовсе) нет никакого формального фундамента. Тоже самое, но уже формализованное, можно реализовывать без классов. Что собственно и делают на таких языках, как например Лисп или Эрланг.
Ответы: >>1338275 >>1338394
Аноним 2019/01/30 19:32:00  №1338272 568
>>1338265
>невнятный неаргументированный высер
Ясно.
Ответы: >>1338282
Аноним 2019/01/30 19:32:27  №1338275 569
Ответы: >>1338282
Аноним 2019/01/30 19:38:03  №1338282 570
>>1338272
>>1338275
Ну что, кто из вас в состоянии формализовать ваше ООП? Поднимите литературку что ли. Почитайте там, погуглите. Кое что есть по этой теме. Исследования ученых имею ввиду. Только вряд ли вы вообще про это знаете. Вы же как зомби твердите одно и то же "абстракция, наследование, полиморфизм". На уровне формальной модели там совсем другие формализмы вообще то.
Ответы: >>1338290
Аноним 2019/01/30 19:45:19  №1338290 571
>>1338282
Шизик, уймись - всем похуй на твои исследования. Скажи психиатру чтобы таблетки тебе сменил - эти тебя не берут уже. История определили место твоему ФП - у параши, а ты всё не уймёшься. Пришёл в тред ЯП, который не для ФП впринципе, к новичкам, и агитируешь тут свой бред. В других местах тебя уже обоссали, как я понимаю, а то и солёных залуп за щеку натолкали.
Ты смешон и жалок, пойми это.
Ответы: >>1338315 >>1338394
Аноним 2019/01/30 19:50:19  №1338296 572
Что означает строчка
if (getBool('huita') && getBool('pizda') & ( HUI | GOVNO | MOCHA)) {}
?
Ответы: >>1338297 >>1338394
Аноним 2019/01/30 19:51:38  №1338297 573
Аноним 2019/01/30 19:52:10  №1338298 574
>>1338252
>Надо писать не "правильно", а "как все и не выёбываться"
Лучше таки понимать, что ты пишешь и зачем, а не просто делать как все.
Ответы: >>1338301
Аноним 2019/01/30 19:56:50  №1338301 575
>>1338298
Таки про понимание там дальше по тексту.
Ответы: >>1338302 >>1338310
Аноним 2019/01/30 19:58:02  №1338302 576
>>1338301
Даже близко не то понимание, о котором я говорил.
Ответы: >>1338305
Аноним 2019/01/30 20:00:51  №1338305 577
Ответы: >>1338318
Аноним 2019/01/30 20:05:08  №1338310 578
>>1338301
Где про понимание? Опиши формальную модель ООП. Вот ты говоришь с математиком, пытаешься объяснить ему ООП. Как ты это будешь делать, какие формализмы использовать?

Если ты всерьез говоришь, что ООП это что-то имеющее смысл. Так опиши это на языке математики. Если не можешь, то грош цена твоему ООП, и слова твои получаются пустые.
Аноним 2019/01/30 20:06:37  №1338315 579
>>1338290
Вся суть оопэшника - жопно-сортирный язык речи.
Аноним 2019/01/30 20:07:12  №1338316 580
>>1338310
>Где про понимание?
В посте, шизик.
Аноним 2019/01/30 20:08:25  №1338318 581
>>1338305
Что начинается? Я лишь сказал не копировать бездумно, чтобы получилось как "у всех", с такого ничего хорошего не получится. Именно эта чушь про копирование выше и была высказана, или ты не достаточно ясно выразился. Такие копипастеры без понимания хуже чумы, прикрываясь несуществующим пониманием такую херню наделают, что мама не горюй.
>>1338310
Не лезь, псих, тут не о твоих галюнах разговор.
Ответы: >>1338320
Аноним 2019/01/30 20:10:07  №1338320 582
>>1338318
>Что начинается?
Передёргивание.
Аноним 2019/01/30 20:17:19  №1338325 583
>>1338310
Так всё просто.

Традиционные в современном понимании ОО-языки (Java, C# и т.п.) - это просто языки с системой типов с поддержкой subtyping'а. Вот и всё описание.
Ответы: >>1338341
Аноним 2019/01/30 20:31:47  №1338341 584
>>1338325
Пфф. И все? Какое то бурчание под нос. На большее я конечно не рассчитывал.

Любая вычислительная модель должна быть описана. Машина Тьюринга, Машина Поста, Лямбда-исчисление, - все это описано формальным языком. Где модель ООП?
Ответы: >>1338344
Аноним 2019/01/30 20:37:59  №1338344 585
>>1338341
Когда сейчас говорят про системы типов, обычно подразумевается, что речь идёт именно о типизации лямбда-исчислении.

Если про конкретику, то обычно системы типов ОО языков моделируются каким-нибудь тем или иным расширением System F<:
Ответы: >>1338346
Аноним 2019/01/30 20:43:00  №1338346 586
>>1338344
Какое отношение Лямбда-исчисление и System F имеет к ООП на классах? Опять похоже на невнятно бурчание.
Ответы: >>1338350
Аноним 2019/01/30 20:52:06  №1338349 587
Пыха норм поддерживает шестнадцатиричную систему счисления?
Ответы: >>1338394
Аноним 2019/01/30 20:58:05  №1338350 588
>>1338346
Прямое. Ты можешь большинство языков с классовым ООП таким образом смоделировать.

Открываешь TaPL, главу 18, там прямым образом показано, как это можно сделать.
Ответы: >>1338352 >>1338359
Аноним 2019/01/30 21:01:11  №1338352 589
>>1338350
Чувак, ты в каком вузе учился? Как стать таким же инженегром, как ты?
Ответы: >>1338461
Аноним 2019/01/30 21:13:12  №1338359 590
>>1338350
Вот это уже конструктивный разговор. Если еще есть похожие книги по теме, напиши, хотелось быть почитать.
Ответы: >>1338363
Аноним 2019/01/30 21:21:38  №1338363 591
>>1338359
Именно отдельных книг посвященных целиком ООП и связанную с ним теорию типов я не вспомню. А вот статей на том же arxiv'е и т.п. куча. Из относительно интересного что мне попадалось, можно посмотреть DOT-calculus от Одерски, формальное основание для Scala 3.

А если просто про теорию типов, то можно начать с того же TaPL (после него ещё иногда советуют в ATTAPL от того же автора заглянуть), а дальше пойти в сторону зав. типов и пруверов на них (обычно советуют The Software Foundations) и HoTT (тут прям одноименная книга)
Ответы: >>1338366
Аноним 2019/01/30 21:38:31  №1338366 592
>>1338363
Понял, благодарю. От себя добавлю кое-что, что хотел прочесть, но руки не доходили. Может кому интересно будет почитать.

Труды Луки Карделли, который занимался формализацией ООП, в частности статья http://lucacardelli.name/Papers/TypeSystems.pdf
Бертран Мейер Объектно-ориентированное конструирование программных систем, где он также ссылается на Карделли https://www.ozon.ru/context/detail/id/2336754/
Ответы: