Этого треда уже нет.
Это копия, сохраненная 5 сентября 2020 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Клуб изучающих PHP #117 /php/ 1656450 В конец треда | Веб
Здесь мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

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

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

Правила: ведем себя воспитанно, помогаем новичкам, читаем учебники, решаем задачки.

С чего начать

У нас есть свои уроки по основам 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? — Да, однозначно. Посмотри любую вакансию.
grammar.png56 Кб, 500x644
Оформление кода 2 1656452
Надо писать код как попало, а аккуратно. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

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

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

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

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

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

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
PSR-12 (англ.): https://www.php-fig.org/psr/psr-12/
3 1656570
>>1655776 → YOU
Бумп.
Почему двоится запись в таблицу?
4 1656579
>>1655776 →
Включи в MySQL general_sql_log и увидишь сколько запросов и каких обрабатывает БД.
5 1656781
Наконец-то нормальная шапка. Я уже думал что ОП рипнулся
6 1656941
>>656781
Про окно не написал. Надо было что-то в духе "за окном самоизоляция и весна, а мы продолжаем изучать ПХП".
7 1657017
>>656450 (OP)
Вопрос и опу и залу:
Какой англоязычный учебник по современному php порекомендуете?
8 1657020
>>657017
доки
9 1657024
>>657020
Доки хороши только как справочник. Там рядом описаны и важные вещи, и то, что влеплено просто для полноты языка. Заучивать всё подряд довольно неэффективно.
10 1657118
>>657017
Могу посоветовать только смотреть разные презентации на разных конференциях. Бывает лютое говно в стиле "10 СКРЫТЫХ возможностей ларавель", где чувак просто доки пересказывает и паблик апи, а бывает прям кулстори про реальной опыт и решение разных проблем, ну или просто хорошие практики опять же на основе реальных примеров. В книгах тебе может быть трудно понять тот уровень абстракции, о котором пишет автор, это если именно про дизайн и веб в целом.
11 1657124
>>657118
Странный аргумент. Именно в книгах начинают с базовых понятий и постепенно проходят более сложные вещи, а спичи на конференциях как раз и бывают непонятными, автор говорит со своей колокольни.
12 1657179
>>657124
Тут стоит уточнить о каких книгах и о чем вообще говорить. Я имел ввиду более "продвинутые" знания, которые, в основном, получаются с опытом. Если нет возможности его получить в боевых условиях, то можно попробовать перенять по маленьким кусочкам с тех же конференций, это будет не то, но общее представление даст в каком-то вопросе.
Ну и вообще читать книги про чистый пхп тоже такое себе занятие, язык то простой(в этом тоже своя красота есть). В учебнике опа как раз все базовые вещи проходятся, только намного быстрее, чем условную книгу прочитать.
13 1657225
Сап аноны. У меня есть задача и я не знаю с какой стороны к ней поступится и что юзать. При нажатии кнопки нужно формировать get запрос и отправлять с ним айди, потом вытянуть данные бд пользователя с этим айди и открыть его личную страничкую.Буду очень благодарен за помощь
14 1657254
>>657225
<a href="/users/1">КНОПКА</a>
Или что? Опиши подробней кейс
15 1657262
>>657225
Если не хочешь ебаться с джавасриптом то делаешь форму с одним скрытым полем куда записываешь айди. И кнопкой сабмита. Сотвественно в форме метод = get, action - url запроса.
16 1657265
>>657262
Да, это ссылка называется
17 1657267
>>657254
Мне нужно сделать личные страничке пользователей, когда в строке браузера вводишь би лайк index.php?name=Иван то тебе открывается страничка этого пользователя
18 1657268
>>657267
Тип как в вк работает
19 1657269
>>657267
Погугли routing, от банальных ифов до миддлваров, у ОПа кстати есть где-то статья на эту тему, поищи на гитхабе, вроде в задаче про студентов
20 1657272
>>657179
Мне нужно "повторить php". Работу после карантина буду искать. И там обязательно будут спрашивать, чем абстрактный класс отличается от интерфейса и всё такое. Заучивать отдельные вопросы не хочу, лучше повторю всю тему не торопясь.

>>657225
Ну так и пиши форму. Что-то вроде
<form action="pers.php" method="get">
<input type="text" name="id" />
<input type="submit" />
</form>
При нажатии будет сформирован гет-запрос к файлу pers.php с параметром id, внутри которого будет значение из поля ввода.

А дальше уже этот скрипт обращается к базе (лучше не напрямую, а через PDO, вытягивает данные, и формирует страницу, которую увидит пользователь. Грубо говоря, pers.php - это и есть та страница. Просто внутри неё есть что-то вроде
echo "<h1> Добро пожаловать, $userName </h1>";
где $userName как раз и бертся из базы.
Посланник райза 21 1657349
ваш пхп кусок отборнейшей параши
я каждый день сру кусками пхп, они такие твёрдые и красивые
пхпшеры очень любят свой язык (говно), срут им, едят его на завтрак
ОДИН ПХП НА ЗАВТРАК ОТВЛЕКАЕТ ОТ ВАС ДЕВУШЕК НАВСЕГДА
ваш шланг будет 1см максимум
не пишите на пхп
ПОЖАЛУЙСТА, АНОН, НЕ ПИШИ НА ПХП
22 1657523
>>656450 (OP)
Что почитать про работу с базами данных полному нулю?
А то вообще ничего не понятно. Вот я делаю запрос к БД через mysqli_query, получаю что-то в ответ и как с этим дальше работать?
Почему нельзя получить в ответ ассоциативный массив и дальше его вертеть как хочешь?
15860687731600.jpg145 Кб, 450x300
23 1657910
Вкатываюсь в ПеХеПе. 28 годиков, какие подводные? Скачал вебинар от каких-то хтмл академия и ахуел от непонятности. Решил зайти, на любимый впрошлом двачик и ахуел от удобности сайта для вкатывальшиков в шапке. Всё как я люблю, аниме девочки, шутеечки уровня б. Теперь главный вопрос, стоит ли учить? Мне не для 300к наносек, а для своего пет-проекта. Хочу замутить крутой скрипт для чтения манги в онлайне.
24 1657919
>>657523
а че про них читать есть скл базы они более-менее одинаковые в скл запросах, есть носкл там уже надо доку читать по конкретной бд.
настройка самой бд те в помощь
25 1657920
>>657910
да хоть на коболе пиши
26 1657934
Где можно найти задачникт по sql порешать?
27 1657937
>>657934
В интернете, бротиш.
28 1658414
>>657910
Я на codewars стараюсь каждый день задачки решать, помогает сильно + в ОП посте есть неплохой учебник, почитай лучше его.
29 1658525
Анончики, дайте совет. Делаю задание про файлообменник. Для загрузки файлов решил использовать dropzone.js. Но проблема в том, что в него сразу нормально не встроить текстовые поля. Нашёл вот эту ссылку https://switch-case.ru/56510992. Можно ли по ней сделать норм или нет? Или подскажите, как сделать правильно, пожалуйста.
30 1658620
>>657349
Почему?
31 1658627
>>658525
хирока есть
32 1658929
анонасы, есть тут битриксойды ? прилетела плевая таска - а в гугле нулевая инфа. просто пиздец
monkey cute.jpg30 Кб, 555x555
33 1659432
Аноны, посоветуйте, что выбрать для вкатывания - путь пхпшника или фронтэнд. Нужно как можно быстрее иметь 15-20к в месяц, желательно удаленно.
Пока что уже две недели прохожу CS50
34 1659478
>>658929
Не такая уж и плевая значит
35 1659479
>>659432

>две недели прохожу CS50


Это были потраченные впустую две недели. Тебе, если важна скорость, надо понимать, как функционирует твой фркймворк и как использовать инструменты одного конкретного языка для решения типовых бизнес-проблем, а не смотреть как долбоебы на сцене меняются местами под командами потного ведущего.
36 1659486
>>659479
этот прав за две недели уже прожевал бы пару учебников и высрал первый круд.
мимобайтоеб
image.png65 Кб, 899x448
37 1659892
Аноний, я в печали. Дерусь с header'ом.
Почему он не запускается?

Пробовал сделать внутри функции return $a=5;, а на странице с логином над хтмл формой условие, типа: include (file.php); if ($a = 5) {header ...}. И публичную переменную тоже пробовал.
Но это ломало страницу и выдавало ошибку 500, лол.

Я в отчаянии. Помогите.
38 1659893
>>659892
Алсо. Там выше ссылка на точно тот же путь и там все норм.
39 1659901
>>659892
Хедыры нужно отправлять до любого вывода. никаких вардампов, принтов хтмла и пробелов.
40 1660422
Мне только спросить.

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

Вот тут посмотрел тутор, они грузят юзера из бд https://symfonycasts.com/screencast/symfony-rest4/jwt-guard-authenticator#play
41 1660439
>>660422

> грузят юзера из бд


А как ты по другому собрался? ПеХаПе не сохраняет состояние. Токен нужен чтобы польхователь не воводил пароль при каждом запросу. Вся инфа тянется из бд(как вариант in-memory типа редукса), файлов, сесии и подобного.
42 1660477
>>660422
Подозреваю, что такие вещи кешируются на уровне самой БД.
43 1660684
>>660439
так-то мы могли и сессию сохранить и передавать ее id, зачем тогда stateless и токен? Получается мы с каждым запросом передаем данные пользователь@пароль и сверяем их с таблицей.
44 1660686
>>660477
>>660439
Почему бы не передавать сериализованный и зашифрованный объект пользователя как токен, чтобы вовсе не обращаться к бд?
image.png9 Кб, 827x152
45 1660805
Господа, прошу помощи.
Есть страница, на которой по нажатию кнопки добавляется либо удаляется такой-же select <slect class="inputdata" onchange="..." onchange="..." name="..." id="..">...</select>. У него меняется name и id соответственно, увеличиваясь на 1.

В массив "elems", созданный скриптом javascript записываются name всех элементов, которые содержат класс "inputdata". Необходимо создать переменные в php-обработчике он в отдельном файле, если это на что-то влияет, которые будут называться как элементы этого самого массива.
Т.е. содержание массива: name0, name1, name2.. и т.д.

Или можно как-то реализовать это по-дргуому?
46 1660837
>>660805
А для чего php обработчик? Что ты хочешь сделать?
47 1660883
>>660837
Запичывает данные в бд
48 1660981
>>660805
отправь ajax'ом
49 1661073
>>660686
Так себе идея - каждый запрос слать данные пользователя. Они нигде не кешируются, плюс к этому - одного пользователя мало и нужно его отношения тянуть из БД. Получается, что надо каждый запрос например передавать пользователя, его посты, лайки и тд. и не факт что они нужны в конкретном запросе.
50 1661190
laravel?
51 1661416
>>660422

На практике часто встречается, загрузка 1 записи по id - это быстро. Скорее всего, там для вывода страницы еще куча данных из БД берется и на этом фоне 1 маленький запрос роли не играет. В крайнем случае (настанет хайлоад) можно будет добавить кеширование в том же redis.
52 1661472
Клуб изучающих PHP, че там, провал в Соликамске засыпали?
image.png41 Кб, 928x385
53 1661475
Пацаны, в чем дело? Почему не передает запись из сессии?
Записал в отдельную переменную, все равно не передается, хотя при вызове внутри файла "db-req.php" отображается.
54 1661482
>>661475
Перечитал документацию. Все норм теперь.
55 1661745
Пацаны, это снова я.
В чем дело? почему выползло пусто сообщение, если его БД нет даже?
56 1661749
>>661745
Понял.

while ($n < $co_po) надо было писать, вместо "меньше или равно".
57 1661798
анчоусыы, подскажите, запускаю ларку и там идет по стандартному хосту типа http://127.0.0.1:8000/ и в связи с этим вопрос: как мне блять попасть в phpmyadmin то ? в инете хуйня какая то для nginx, а мне апач нужен + бд как то накатывать. через пхшторм не хочет. какого то хуя все в одну таблицу сует. сам дамп рабочий
image.png44 Кб, 1034x489
58 1661838
Блять. Я чего-то не понимаю, нахуй, или что?
Какого хуя код с добавлением поста в БД ломает наглухо, блять, авторизацию и регистрации?

Он, сука, никак не пересекается с теми функциями, ни именами переменных, ни названиями функций, ни запросами к БД.
Эта функция вообще вызывается на последней странице, где уже после страницы регистрации показываются посты, это абсолютно другой файл.
Это пиздец. Стоит его закоментить - все работает.
59 1661948
>>661838
дебагером посмотри
60 1661965
>>661838
в логах что пишет?
сама эта функция или другие public или че?
image.png17 Кб, 1453x117
61 1661976
>>661965
Выдает это на странице с логином. Хз, какая скобка ему не зашла.
Не понимаю, что ему нужно. Какая неожиданная скобка, нахуй он ожидает фигурную скобку - не понимаю.
image.png9 Кб, 475x127
62 1661980
>>661838
>>661976
Я еблан. Забыл прописать prepare.
image.png48 Кб, 1021x491
63 1661982
>>661976
Ну ка, это че за говно?
64 1661986
>>661982
Остатки комментария, на них тоже ошибка ругалась, но не критично.
65 1661990
>>661986

>syntax error


>не критично


Ок.
66 1661992
У меня еще вопрос. как теперь скрыть эти уведомления? Они у меня это вываливается из файла на пикри 2. Можно их как-то закомментить или крыть?
67 1661996
>>661990
Да. Тут ты прав, не работает с кусочком комментария.
68 1662005
>>661992
Надо не скрывать уведомления о проблеме, а решить проблему.
Конкретно это означает, что ты пытаешься получить из массива элемент, которого там нет.
Код с логином лень искать, он в том треде еще остался.
69 1662010
>>662005
Ты о строках 21 и 22? Это он на пустые поля логина и пароля указывает, после заполнения все норм работает. Ну и сообщение о сессии тоже.

Можно это скрыть? А если будут обсеры, то снова раскомментить и посмотреть?
70 1662014
>>662010

>Это он на пустые поля логина и пароля указывает


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

>Ну и сообщение о сессии тоже


Сессия у тебя стартует где-то раньше. Тут дейсвтительно не очень критично, он скорее всего у тебя нет никакой архитектуры, которая помогла бы тебе юзать сессию централизованно.
Так что тут для решения может быть вариант с проверкой каждый раз.
Вот есть такой метод например:
https://www.php.net/manual/ru/function.session-id.php
Впринципе я тебе и так достаточно подсказал, как именно это проверить можно, дальше сам пробуй.

>А если будут обсеры, то снова раскомментить и посмотреть?


Можно то можно, только это снежный ком. Их просто нужно не допускать и решать сразу. К счастью это почт ивсегда (в твоем случае тоже) проще простого.
71 1662023
>>662014
Спасибо тебе.
Буду применять это.
72 1662052
>>661798
ну же анон, помоги мне
73 1662135
>>661798
Смотря чем пользуешься, если линукс, то apt install phpmyadmin, он установится для apache. Можешь композером установить composer create-project phpmyadmin/phpmyadmin в другую категорию и запускать через командную строку php (локальный сервер), или если у тебя xampp например, просто переходишь на localhost/phpmyadmin
74 1662149
>>662135
ну так и есть линукс. собирал все по частям. в пред разы когда работал со всякими cms то просто качал проект, настраивал все в хостах и апаче, затем просто переходил по magazgovna.my/phpmyadmin то все пахало. а щас при http://127.0.0.1:8000/phpmyadmin он меня шлет куда подальше и возвращает что вот 404 и такой страницы нет при этом все это в дизайне ларавеля, если что
75 1662158
>>662149
Может у тебя phpmyadmin работает на 80 порте?
76 1662245
>>662158
ну возможно.значитт мне его никак блять не прикрутить чтоли? или надо сидеть hosts редачить чтобы и там запахало?
77 1662430
>>661798
Ты ради одной кнопки импорта в бд pma накатываешь?
Попробуй mysql db_name < dump.sql.
78 1662509
Есть кто не спит? Есть срочный вопрос.
79 1662510
>>662509
го, слушаю
80 1662512
>>662510
Домашку к утру сдавать надо, поэтому срочно.
Новичек, пиши пхп в оупен сервере. Есть задание, там надо вывести пару строк, а конкретно часы и минуты просклонять, в стоответсвии со временем. Однако у меня хром заменяет русские буквы на знаки вопроса, на английском все работает. Понимаю что проблема в кодировке, в начале пишу метачарсте утф 8 и тд, не работает. Открываю модули оупен сервера, меняю дефолт с офф на утф 8. Тоже не помогло. Что посоветуешь?
81 1662513
>>662512

>Новичек


Посоветую пойти нахуй, школотун
83 1662515
>>662513
Домашка в уник.
Двач в своем репертуаре. Точно не подскажешь в чем может быть еще проблема?
84 1662516
>>662514
Спасибо огромное, затупил. В брекетс стояла не та кодировка.
85 1662517
>>662516
you're welcome.
вообще интересно, что в унике пыху преподают
86 1662518
>>662517
майнор, сам не в Рашке сейчас
87 1662520
>>662518
а где учишься?
88 1662522
>>662520
университет Хофстра на лонг айланде. Никак не могу отделаться от привычки писать сначала на русском, а потом переделывать. Это проблема для себя была чисто. Хотел разузнать что не так пока к удаленке доступ не закрыли
image.png3 Кб, 755x40
89 1662846
Подскажите - есть ли красивый способ парсить подобный HTTP_USER_AGENT:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Во что-то типа "Win 10, Firefox 75" ?

Боюсь что если начну сам херачить, то придется самому городить велосипед на 1000 if под каждый возможный браузер/os, да еще и через год это устареет.
90 1663076
>>662522
вчера заснул и не ответил, ты молодец, не возвращайся в парашу, но ты и без меня это знаешь
91 1663097
>>662846
но зачем
для верстки на определенный браузер надо использовать ксс
92 1663105
>>663097
Братан, это вопросы вообще или что?

Для того что бы пользователям показывать "устройства" с которых залогинены и все такое.
94 1663110
>>663105
просто особого практического значения расшифровка юзер агента не имеет в наши дни
95 1663238
>>663110
Я понимаю, но таск есть таск.
96 1663305
>>663238
https://habr.com/ru/company/dcmiran/news/t/494362/

Максимум что ты полезного можешь узнать это мобила или пека
97 1663912
То ли в глаза ебусь, то ли ещё что. Но у меня не работает вызов функции в ocStore, чтобы выводить имя пользователя в хедере, но мне выдаёт, что переменная неопределена.

Код: https://pastebin.com/z8CvzQFz

Вроде должно работать. Но она даже не объявляется. Типа, если я неправильно ввёл значение, то должно же быть null, не?
98 1663913
Делаю тестахаб. И тут думаю, а стоит ли хранить айпишники юзеров в базе? Они нигде не используются при этом. В реальных проектах их же наверно хранят?
99 1663946
>>663912
При чём даже если просто переменную в файле header.php объявить, то всё равно говорит, что переменной не существует. Как это блять работает?
100 1663967
Документация там странная без особых примеров. Поясните, пожалуйста, что я не так делаю? Типа, я объявляю что-то в controller/header.php и вывожу во view/header.tpl. Должно же работать, разве нет?
101 1663996
>>663913
Не используешь или не планируешь = не добавляешь.
102 1664046
>>663996
А если я за юзерами следить хочу?
103 1664979
Как лучше со сфинксом работать через расширение PHP SphinxClient или просто обычное pdo подключение создавать и дальше уже от него запросы делать? Это я поиск делаю для тестхаба.
104 1664997
>>663305
Мб через js можно напрямую делать? Мне на самом то деле не страшно если уже после логина от пользователя прилетит аякс-запрос на сервак с данными.
105 1665030
Аноны, как вы используете интерфейсы и абстрактные классы? Я их вообще не использую, потому что не могу понять зачем, если можно сделать обычный класс. Можно пример приближенный к реальным проектам?
106 1665064
>>665030
А в чём разница между интерфейсом и абстрактрым классом? Придумали 2 бесполезной хрени.
107 1665372
Аноны, посоветуйте какую нибудь книгу по ОПП в ПХП, с примерами и т.п.
108 1665375
>>657910
Лучше жиэс учи, для всякого петтинга более подходящая хуйня.
Пхп - это чтобы срать в продакшн тоннами кода
109 1665377
>>659432

>как можно быстрее


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

>быстрее


Для этого надо больше хуячить кода. Не читать, не учить, а писать код.
Соответственно, чем больше ты времени на это тратишь, тем БЫСТРЕЕ все это будет
110 1665383
>>664979

>или просто обычное pdo подключение


Ну, тут ты точно соснешь.
Как только ты на шаг выйдешь за пределы стандарта SQL, ты уже не сможешь юзать PDO.
Да даже больше, sql в сфинксе крайне урезанный, ты даже блядский LIMIT можешь задать строго определенным образом.

В свое время я наебался и тупо стал слать запросы на json api сфинкса.
(Точнее хуй знает, есть ли оно в сфинксе, я юзал форк Manticore, там есть).
111 1665590
пачаны, у рпц нет томоса! срочны рэпост па усим
112 1665661
>>662846
Нашел вот такую штуку: https://browscap.org/
Но не совсем понятно как с этим работать.
Я должен гигантский файл парсить или что каждый раз?
113 1665677
>>665030

>Я их вообще не использую, потому что не могу понять зачем


В принципе правильно. Если не знаешь зачем что-то тебе нужно, значит тебе это сейчас не нужно. Но

Представь что у тебя на сайте куда-то загружается файл и сохраняется на локальном диске сервера. Всё ок, всё работает. Потом случается любая залупа, и тебе нужно этот файл заливать не на локальный диск, а на облако. У тебя до этого был класс Filesystem с каким-то методом вроде save(). Копируешь этот класс и делаешь из него LocalFilesystem, а из Filesystem делаешь интерфейс с методом save(). Теперь тебе достаточно сделать например YandexStorageFilesystem, в конфигураторе забиндить интерфейс Filesystem к YandexStorageFilesystem и не трогая вообще свой основной код у тебя программа внезапно начала работать по другому. Не всё так просто конечно, но суть понятная думаю. Важно чтобы у тебя нигде в коде не было $fs = new Filesystem(), или юзай контейнеры, или фабрики
114 1665716
>>665030
Абстрактный это же типа базовый? Который не предполагает создания экземпляров? Если правильно понял, то юзаю как основной костяк. Тупа вваливаю туда основной фукнционал, а всё остальное выстраиваю вокруг него дабы не ебаться излишне с наследованиями и прочим.
115 1666373
Что лучше учить: php или js?
116 1666396
Чем php не нравится регулярка? Я не понимаю. Через онлайн php чекнул, вроде норм, вот строка как пример 14.04.2020 13:14:39, в чём дело блэд, сама регулярка
'/\d[\d]\.\d\d\.\d\d\d\d \d\d:\d\d:\d\d/'
117 1666401
>>666396
Нашёл багу, отбой.
118 1666518
>>666396
Это очень тупая регулярка, не надо так делать
119 1666701
>>666518
Почему? Можно сократить через {}, но для чисел так нагляднее, ящитаю.
120 1667208
хотел бы услышать выше мнение по поводу моего решения задачки 'Сумма прописью'. К критике готов, может предложите что-то получше сделать, обсудим https://ideone.com/KQZXTX . Спасибо
121 1667260
>>667208
А куда пропало тысячи - https://ideone.com/0brket
122 1667601
>>667260
бля, недопроверил после поправок. сча исправлю
123 1667606
>>667260
вот, упустил один момент в регулярке просто. теперь все должно работать. https://ideone.com/ics46N
124 1667623
>>657017

>Какой англоязычный учебник по современному php порекомендуете?


Нет таких. Ни учебника, ни php. Современный PHP - это сельские интернет магазины, копроративные сайты и блоги на вордпресс. Соответственно к ним и учебников нету.
125 1667624
>>657272

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


https://www.apress.com/gp/book/9781430260325
126 1667627
>>657910

>Хочу замутить крутой скрипт для чтения манги в онлайне.


Ну на ПХП у тебя будет сверх крутое чтение манги с полной перезагрузкой страницы после каждого перелистывания. Хуита это короче будет, а не манга. СПАшечку сразу делай на vue.js. Ну либо если тебе прям сильно хочется можешь скомбинировать, допустим какой-нибудь Yii2 + jQuery, если хочется стабильности, либо Laravel 6 + Vue.js, если ты стильный модный молодежный петушиный.
127 1667630
>>667627

>либо Laravel 6 + Vue.js, если ты стильный модный


там уже 7-ой вышел =)
128 1667631
>>660422

>Если при токен аутентификации мы грузим пользователя из бд на каждом запросе, это норм?


Ну грузить, наверное, я бы сказал не норм, а проверять - ну да. То есть, типа а как иначе? На каждом запросе спрашиваешь у него токен и чекаешь, кто это. Ну если у тебя реляционка обычная можно и грузить, это в принципе на скорость не повлияет.
129 1667636
>>667630

>там уже 7-ой вышел =)


Ебаааааааааааааааать, ладно схожу посмотрю, че там высрал (нет). Причем, довольно давно похоже вышел, на ларакастс уже высер записали, what's new. Честно говоря, ПХП такая параша, что даже лень смотреть, чем там изменилось, как же я счастлив, что в жс переобулся.
130 1667758
Аноны, а можно ли на пхп сделать открытие из превью в полноразмерную картрнку?
Не как сейчас, когда картинка открывается в отдельной рамке, тут уже пахнет JS'ом.
А как раньше (к примеру, так до сих пор на Ычане, если без куклоскрипта): картинка открывается в полном размере и вместе с этим уродливо растягивает всю рамку с постом и зажимая текст к краю экрана.
Или это тоже только через JS сделать можно?
И на пхп остается только открывать картинки в отдельной вкладке, что и было до растягивания картинки в посте, лол.
131 1667761
>>667758
Без жс никак.

>А как раньше (к примеру, так до сих пор на Ычане, если без куклоскрипта):


Открой инспектор, там это через жс сделано.
132 1667762
>>667761

>Открой инспектор


>data-thumb-src=


Я по этому и решил, что без ЖС никак.
Спасибо.
133 1667772
>>667636

>как же я счастлив, что в жс переобулся


А почему неосилил? ООП не даётся?
134 1667810
Аноны, а где бы бесплатно без смс достать разных дизайнов интернет-магазинов? Хочу потренироваться их на фреймворки натягивать (Bitrix, WP, Shopify и т.п.).
135 1667893
>>667772

>А почему неосилил? ООП не даётся?


Я на типизированных джаваскриптах пишу, тамошняя система типов твоему ПХП без дженериков сосать дает. Просто заебало хуй сосать за 60к в говноконторе я решил двигаться к деньгам и нормальной разработке.
смеющийся-том-круз.jpg174 Кб, 1280x800
136 1667894
>>667810

>на фреймворки натягивать (Bitrix, WP, Shopify и т.п.).


>фреймворки


>Bitrix, WP

137 1667925
>>667893

>тамошняя система типов


Она чем-то от ПХПшной отличается сильно, да?

>твоему ПХП без дженериков сосать дает


А в ПХП они есть?

>я решил двигаться к деньгам и нормальной разработке


Что в твоём понимании является нормальной разработкой и почему ты пхп неосилил?
138 1667930
>>667894
У них есть API для обращения к базе, для обработки событий, для написания компонентов/плагинов/тем оформления, у WP есть REST API, у битрикса - push-уведомления и т. д. и т. п. Поэтому - фреймворки.
139 1667936
>>667930

>Поэтому - фреймворки.


Это системы управления контентом. CMS.
Фактически это готовый сайт - только настрой и темок с плагинами накати.

Фреймворк это набор связанных воедино библиотек для разработки чего угодно на своей платформе. Обычно требует более глубоких знаний чем CMS.

Учи матчасть чтоб не быть баттхёртом.
140 1667943
>>667936

>Это системы управления контентом.


Так их называют только пиздюки, которые толком этих фреймворков не знают. Голые Bitrix, WP, Shopify сейчас никому не нужны. Заказчикам (у которых уже стоит что-то из этого списка) нужна кастомизация, которую невозможно обеспечить в рамках "темок с плагинами". Говорю это как проработавший 4+ года на галере, которая занимается такой кастомизацией.
А теперь - марш под шконку, сосунок.
141 1667946
>>667943

>Bitrix, WP, Shopify


>фреймворки


>называет кого-то сосунком и гонит под шконку


Кекнул с этого овоща.

>проработавший 4+ года на галере


Да всем насрать где ты там отработал.
Я вот недавно галеру видел где работают одни верстальщики, которые себя фуллстаками называют. Прямо как ты cms - фреймворками.
142 1667957
>>667943

>Говорю это как проработавший 4+ года на галере, которая занимается такой кастомизацией.


А вот этот мужик https://wp-kama.ru/about занимается вордпрессом 10 лет и называет его именно CMS - почитай на странице, что умные люди говорят.
А пока что:

>марш под шконку, сосунок

143 1667969
>>667925

>Она чем-то от ПХПшной отличается сильно, да?


Бля, вот мне не лень настолько конченному хуесосу что-то объяснять. Ок, поехали, из коробки:
1. Возможность типизировать любую переменную. В пыхопараше это появилось только 7.4, а я выкатился с этой хуиты в 7.2. Там только тайп хинты типизируются и возвратные значения.
2. Типизированные массивы.
let arr: string[] = ['ty', 'hyesos'];
3. Дженерик:
function gen<T>(el: T): T {
return el;
}

4. Кортежи.
5. Энумы.
6. Never.

Лень расписывать, ты хуесос короче, там можно писать код, который ты даже представить в своей лоускилльной башке не можешь. Например, ридонли и приватные поля с хэш синтаксисом: обобщенные классы и интерфейсы. Соснул хуйца?:
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}

Гарды явления и включения, такое видел, хуесос? Пересечения типов и их объединения. Я, ктстати, уже говорил, что ты хуесос?

>А в ПХП они есть?


Нету блядь, в ПХП есть только хуй заказчика очередного интернет магазина на процедурной параше в твоем рту. Все, нету там больше ничего. Ни декораторов, ни врапперов, ни нормальной АОТ или ДЖИТ, нихуя там нету. Ты есть, долбоеб.

>Что в твоём понимании является нормальной разработкой


Энтерпрайз и качество, инновации, расширение границ.
143 1667969
>>667925

>Она чем-то от ПХПшной отличается сильно, да?


Бля, вот мне не лень настолько конченному хуесосу что-то объяснять. Ок, поехали, из коробки:
1. Возможность типизировать любую переменную. В пыхопараше это появилось только 7.4, а я выкатился с этой хуиты в 7.2. Там только тайп хинты типизируются и возвратные значения.
2. Типизированные массивы.
let arr: string[] = ['ty', 'hyesos'];
3. Дженерик:
function gen<T>(el: T): T {
return el;
}

4. Кортежи.
5. Энумы.
6. Never.

Лень расписывать, ты хуесос короче, там можно писать код, который ты даже представить в своей лоускилльной башке не можешь. Например, ридонли и приватные поля с хэш синтаксисом: обобщенные классы и интерфейсы. Соснул хуйца?:
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}

Гарды явления и включения, такое видел, хуесос? Пересечения типов и их объединения. Я, ктстати, уже говорил, что ты хуесос?

>А в ПХП они есть?


Нету блядь, в ПХП есть только хуй заказчика очередного интернет магазина на процедурной параше в твоем рту. Все, нету там больше ничего. Ни декораторов, ни врапперов, ни нормальной АОТ или ДЖИТ, нихуя там нету. Ты есть, долбоеб.

>Что в твоём понимании является нормальной разработкой


Энтерпрайз и качество, инновации, расширение границ.
144 1667985
>>667969

>долбоёб путает js и TypeScript и называет кого-то тупым.


Ты и жавускрипт неосилил походу, токсичное шизло.
145 1667990
>>667969
У тебя это все есть на том же уровне, на каком был ключик у джека воробья во второй части. Пиши сразу на шарпе, зачем подделку жрешь.
мимо-шарпист
146 1668075
>>666701
Нет блять, высматривать, 4 раза или 5 ты там этот символ написал, вместо того, чтобы ПРОСТО увидеть это в скобочках - не нагляднее
147 1668084
>>667985

>Ты и жавускрипт неосилил походу, токсичное шизло.


Эй, пиздюк читать научись, сын шлюхи.

>Я на типизированных джаваскриптах пишу


Понял хуесос?

>Пиши сразу на шарпе, зачем подделку жрешь.


Ты хуесос, на фронте я пишу, ебобо йибаба.
148 1668088
>>668084

>на фронте я пишу


А в тред о беке ты зашел, чтобы в очередной раз дискредитировать всех фронтендщиков. Не первый ты у нас такой.
149 1668093
>>668088

>А в тред о беке ты зашел, чтобы в очередной раз дискредитировать всех фронтендщиков


Ээээ петух, я фулстек!
150 1668097
>>668093
Наглядная демонстрация, как фулстек разработка влияет на слабый разум. Таких тоже было у нас.
151 1668098
>>668088

>Не первый ты у нас такой.


Но этот фронтовик чёто совсем контуженный какой-то.
152 1668109
>>668097

>Таких тоже было у нас.


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

https://www.youtube.com/watch?v=g992NR0c10E
14263665661340-b-88417389.jpg48 Кб, 435x604
153 1668114
На самом деле, этот боевой фронтопетух прав.
Фронт важнее бека в современном мире.
На бек можно, в крайнем случае, каких-нибудь обезьян нанять, или даже сами фронтендщики что-нибудь высрут, чтобы апишка жсоны выдавала.

А вот приемлимый фронт пхп-дебичи никогда не родят.
Плюс есть ложное чувство простоты жс. Нет блять, он нихуя не прост. Он гибкий настолько, что способов отстрелить себе ногу и половину ебала там в 10 раз больше, чем было в пхп4.
И не только лишь все понимают язык на том уровне, чтобы интуитивно избегать всех этих мест и писать нормальный код.
154 1668120
>>668114

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


А потом оно падает в самый разгар распродажи и твои обезьяны не ебут что с этим делать в течении пары-тройки дней.
Ты либо совсем дегенерат, либо толстяк каких ещё поискать.
155 1668127
>>668120
Железо все стерпит. Ядер дохуя, накинуть еще 24 гига памяти дешевле и проще, чем что-то исправлять.

Если смотреть глобально, то случаев, когда требуется настолько сложный бек, с которым обезьяны не справятся, меньше, чем случаев, когда они могут на коленке написать апи на VasyanJS и все будет работать.
156 1668133
>>668127

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


Точно так же с фронтендом обстоят дела - куча прибыльных\топовых сервисов без всякого СПА и куч макак на поддержке живут себе и деньги делают.
image.png131 Кб, 909x1219
157 1668135
Вот кстати чё гугл думает.
158 1668153
>>668135
Гугл показывает результаты с учётом истории поиска
image.png36 Кб, 793x456
159 1668251
Анон помоги плес, с меня сиськи мужские
Делаю задание из обучалки про кубики, и меня ебет синтакисческой ошибкой уже целый час я не знаю что делать уже просто я хочу погромировать за 300к\сек а не поваром рабоать за двести бачей в месяц
160 1668253
>>668251
17, 21, и 25 строки соответсвенно
161 1668254
>>668251
Код ошибки кинь
image.png107 Кб, 988x549
162 1668257
я ошибка.png42 Кб, 623x734
163 1668259
>>668254
воть
>>668257
что не так, я не понимаю
164 1668260
>>668259

>что не так, я не понимаю


Ты кавычку не закрыл там, куда я стрелочкой ткнул.
165 1668261
>>668257
>>668254
всем спасибо, просто я дурашка и забыл двойные ковычки
166 1668263
>>668251
Кстати у тебя там есть мини ошибка ^
у тебя <= и >= , Лучше просто больше или меньше
типо если выпадет одинаковое число то это не победа, а выведет как ну ты понял
и наверное лучше все же не дважды if писать, а elseif
Ну я сам новенький и вкатываюсь, но мне кажется так лучше.
167 1668312
>>668263
да, точняк, так вернее, спасибо!
13442719233989.jpg22 Кб, 604x557
168 1668315
Блять, какие же php-фреймворки развитые, пиздец просто.
Гуглишь любую самую дикую поебень вида "Laravel + анальный аттракцион для клоунов" и получаешь какой-нибудь специально созданный для этого пакет с парой тыщ звезд на гитхабе.

Блять, да даже для той же java меньше результатов по тем же темам бывает, я в ахуе.
(про жс и говорить не чего, там вообще нихуя нет)
169 1668316
>>668315

>анальный аттракцион для клоунов


Это и есть жс.
170 1668321
Как сделать запрос типа select id, title from table_1, table_2 через кверри-бильдер в ларавеле? Не через selectRaw.
172 1668329
>>668322
Есть просто две таблицы, которые не соотносятся ни с какой моделью, так что отношения прописывать некуда.
173 1668334
>>668329
Начнем с того, что с хуев у тебя есть таблицы без моделей?
174 1668415
Дурашка снова на связи.
В обучалке задачка: Некто кладет в банк 10000 р. Банк начисляет 10% годовых (то есть, каждый год на счету становится на 10% больше, чем в прошлом году). Напиши программу, считающую, через сколько лет в банке будет миллион? Сколько лет будет этому некто? Доживет ли некто до этого дня, если сегодня ему 16 лет?

Я вроде бы и домучал скрипт, чтобы он не только деньги считал, но и возраст, однако в результаты выкатывается каждое вычисление внизу скриншота. Как заставить скрипт отобразить только ответное значение?
я ошибка.png22 Кб, 640x496
175 1668418
>>668415
скрин забыл
176 1668422
>>656450 (OP)
Посоветуйте программу с возможностью просмотра результата. Ставил атом с гитхабом беда. Не в блокноте же писать.
177 1668425
>>668422
вс код с плагинами, если места на диске не жалко то пыхошторм
178 1668426
>>668418
>>668415
Выводи содержимое $age после цикла например
179 1668483
P A M A H I T E я, видимо, совсем затупил. Решение задачки 'Я у мамы калькулятор' в какой-то момент начала лупиться. В этих сраных 30 строчках хранится дьявол, но я его так и не нашел. Вот код https://ideone.com/0UxqBC . Спасибо
180 1668486
>>668483
у тебя условия завершения цикла нет
181 1668492
>>668415
У меня от скуки поехала кукуха и я решил сделать эту задачу в ООП. Так вот вопрос - нормально написано или шляпа?
182 1668493
>>668492
Ах да, я на столько поехавший, что забыл ссылку, вот - https://ideone.com/M2GPT2
183 1668497
>>668486
https://ideone.com/hJT7gG так тоже не работает. мб я как-то не так заканчиваю цикл
184 1668501
>>668426
можешь показать, как это должно выглядеть, чтобы работало?

>>668492
Охуенно, когда я смогу так же?
image.png24 Кб, 762x410
185 1668502
>>668426
забей, у меня получилось
однако проверку на то, жив некто или нет, я еще не сделал
эта задача заняла у меня около двух часов плак плак
186 1668503

>>16684>>668497


>>668497
Вау, у меня все получилось. Код: https://ideone.com/YCVfBf . Только у меня есть вопрос: почему до этого не работало без условия $i < strlen($example) ? я ведь принудительно завершал цикл командой break.
187 1668504
>>668497
Что у тебя значит $op? я поставил $char и скрипт завелся. Проверь https://ideone.com/uzYGII
188 1668508
>>668504
$op значило прошлый знак, $char знак, который я вынул из строки сейчас
189 1668512
>>668504
к слову, скрипт выдает неправильные решения https://ideone.com/fhiGNM . для этого я и использовать переменную $op
190 1668522

>>166>>668504


Вот, запилил вроде как норм решение. По итогу проблема оказалась в приоритете условий. Исправил и теперь все идеально работает. Вот код https://ideone.com/HiWp87 .
191 1668560
>>668502
Я вот смотрю и не могу понять, это такой жирный троллинг?Это не байт реально интересно
192 1668585
>>668560
Никак нет, просто я абсолютно впервые сел за код. Что не так?
193 1668596
Сап двощь, поясните ситуацию про тех. задания. Из недавних собесов всегда была какая-то залупа "Напишите прилу без фреймворков и либ но с композером и ООП". Нормально ли подключать psrовские интерфейсы если мне это нужно? Или вот хочу реализацию UriInterface газловскую подрубить, как вероятно что сразу скажут что я дебил и нужно было С НУЛЯ всё писать?
194 1668604
>>668334

>Начнем с того, что с хуев у тебя есть таблицы без моделей?


Пытаюсь поиск на сфинксе сделать. Через eloquent посылаю запросы к демону (не знаю насколько это хорошая идея, я нуб). Первая таблица индексы, вторая rt индексы.
195 1668639
>>668596
А работают они тоже на чистой пыхе?
196 1668727
>>668596
Нужно у тех хуил спрашивать подойдет или нет. Если нет возможности - смотри насколько упрощает код. Смысл такого ограничения - посмотреть как ты пишешь (а не на вызов одной функции из либы). Если остается довольно много - то можно и использовать скорее всего. Если у тебя там под сотню строк (исключая всякий бойлерплейт) и они начнут выебываться - можно слать нахуй. Если конечно финансы не поджимают.
197 1668934
Дурашка-кун снова на связи.
Эдвенсед-задача про кредит мучала меня всю ночь и теперь еще сегодня.
Школьник решил купить айфон и для этой цели взял кредит. Сумма кредита — 40000 р., банк в начале каждого месяца (включая первый) начисляет 3% от остатка долга за пользование кредитом и 1000 р. комиссии (да, а ты думал, обойдешься процентами?). После этого, в конце каждого месяца, наш герой идет в банк и пытается выплатить долг, но он не может заплатить более 5000 р за раз (сэкономленных на школьных завтраках). Вопрос, когда он избавится от долга? Во сколько школьнику обошелся айфон? http://codepad.org/nm9jPcpd

Если исправить ошибку в условии, что $creditBalance <0 на ( $creditBalance * $percent ) + $servicePayment < $montlyPayment, то скрипт останавливается, не давая балансу уйти в отрицательное значение, что есть маленькая победа. А что делать дальше, я сломал себе мозг.
Я правильно понимаю, что мне нужно задать новое значение $monthlyPayment равное остатку по кредиту? Как мне это сделать?Куда бы я не вставил, например, $montlyPayment = $creditPayment скрипт сыпается.

https://ideone.com/gn5MGN
198 1668951
>>668934
if (($creditBalance $percent + $servicePayment) < $monthlyPayment) {
$monthlyPayment = ($creditBalance
$percent ) + $servicePayment;

уот так
199 1668954
>>668951
>>668934
Забыл умножение
if (($creditBalance * $percent + $servicePayment) < $monthlyPayment) {
200 1668960
>>668934
https://paiza.io/projects/ZpENKSqRgSjjyZQomgeD8A?language=php
в общем, допиши дальше сам
мимо тоже дурашка-кун 2
15875393500642.jpg94 Кб, 742x963
201 1668973
>>668954
Да, так тоже пробовал, но что-то не шло, сделал как у >>668960
поменял условие в цикле и убрал break, потому что видимо он останавливал скрипт раньше времени, не давая посчитать последний платёж

Спасибо огромное как перестать чувствовать себя тупым
202 1668976
>>668973
Я и есть он.Я так же вечно туплю и тоже на этом калькуляторе тупил.Ты такой не один. главное продолжать идти вперёд Наверное
203 1669025
Вообще принято где-нибудь не пользоваться магическими методами, фасадами и другими спорными "фишками" ларавеля? Пока изучаю всякие рандомные проекты на гитхабе, и там они всегда задействованы. Как лучше учиться?
204 1669064
>>669025
Эти спорные фишки нужны для более быстрой разработки. То есть за один-два месяца склепать работающую приложуху, и кое как её потом поддерживать иногда. Если проект охуеть какой крупный то там вообще стараются максимально от фреймворка абстрагироваться, ну и как бы для такого от ларки становится много меньше чем от симфони например. Тут смотри под задачи, если есть задача написать какую-то шляпу усатую по тз за 3 недели один раз, то, как бы это хуево не звучало, но можешь без проблем писать всю логику прямо в контроллерах. Так банально быстрее чем что-то пердолить и моделировать.
205 1669109
>>668604
Как только доберешься до условий и лимитов, обнаружишь, что в сфинксе SQL уровня пук-кек и не поддерживает приблизительно нихуя.
Я тебе уже сказал выше по треду, используй json апи
Facebook 206 1669181
Ок спрошу здесь.
А почему Mark Zuckerberg так сильно окуклил свой код? Типа чтобы "безопасно" было?

Я даже элементарно не могу найти в сурс коде названия профилей людей которые лайкнули этот пост:
https://www.facebook.com/mafiamd/photos/a.769452613108524/2848699558517142/
Допустим вы видите что поставил
Egor Smetansky

Но ни в каких .js файлах или .css файлах этого названия не найти, даже в html. Каким образом мой браузер тогда отображает текст: "Egor Smetansky" когда я мышкой навожу на иконку like?

Я сохранял эту страницу на локалку к себе, потом контенты всех файлов (.js и .css в основном), но нигде не было найдено совпадений с "Smetansky".
Вот как например мне, будучи не залогиненным в facebook, найти где в коде "Smetansky" спрятно и как раздобыть id этого чувака?
207 1669203
>>669181
Лол, разумеется, это хранится в БД фейсбука и подтягивается при наведении.
208 1669216
>>669181
При наведении на объект страница посылает ajax-запрос на /api/graphql и получает ответ.

Смотри активность браузера, нажми F12 и посмотри трафик. Ты всё сам увидишь.
209 1669218
>>669181
Такое могли сделать чтобы нагрузку уменшить. Таких кнопок же много на странице может быть. Инфа подтягивается только если она действительно нужна (навели мышку). Плюс у него же SPA - акцент сдвинут на динамическое обновление содержимого страницы а не загрузку всего сразу.
where.jpg663 Кб, 3195x1661
210 1669227
>>669216

>ajax-запрос на /api/graphql


И в каком из этих файлов этот запрос и ответ находятся?
>>669218
есть ли возможность увидеть ссылку на профиль будучи не залогированным, того же Smetansky.
fb.png93 Кб, 1839x640
211 1669331
>>669227
Открываешь вкладку network, потом наводишь мышку - что-то из того что появилось и нужно. Просматриваешь где какая инфа. Когда находишь нужное, смотришь вкладку headers - там инфа которую нужно передавать чтобы твой запрос обработали. Смотришь что там можно менять. Там ебля еще та может быть, особенно если защита от XSS подрублена.
212 1669494
че-то вакансий для вката совсем мало на hh. Есть ли щас смысл вкатываться по гайду из шапки?
213 1669527
>>669494
Так ты и на мидловые откликайся
214 1669559
>>669227
Если руками хочется попробовать, то можно сделать из меню F12 "copy as curl" и с помощью curl воспроизвести запрос. Curl умеет через параметры и куки, и все методы, и все заголовки, конечно.

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

В принципе так можно сложные сессии какие-то воспроизводить.
215 1669858
>>669331
thanks, то что мне нужно было
216 1670186
Как приделать hot reload к apache with php?
Толстой.png97 Кб, 752x690
217 1670336
Ежедневный пост от Дурашка-куна:

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

> слово1 слово2 слово3


> слово1 слово2 слово3


> Я слово4 слово5



Я снова категорически туплю, наработки пока выглядят так:
https://ideone.com/NCPhVd

Вопросы:
1) Как заставить код вместо ключей выдавать значения? В одной из предыдущих задач удавалось это сделать c помощью переменной типа $random[$word1], тут ничего не выходит

2)Почему первая и вторая строки выходят идентичными, хотя по идее должны браться рандомно из массива

3) как выглядит решение?((((
218 1670429
Проверьте решение задачи "Сдача", пожалуйста. https://ideone.com/XY1kBq
219 1670431
>>670336

> Как заставить код вместо ключей выдавать значения?


С помощью ключа получаешь значение. У тебя не выходит потому что ты передаешь не ключ.

> Почему первая и вторая строки выходят идентичными


Пoтому что ты их составляешь из идентичных переменных - для второй строки их нужно заново генерировать.
Попробуй перечитать все (вообще все) заново. Ты путаешся в базовом синтаксисе. Если дальше так продолжишь то запутаешся еще больше. https://ideone.com/HHW3qK
220 1670493
>>670429
фикшу сам себя. немного доработал, убрал повторяющиеся действия. Вот обновленная версия: https://ideone.com/5yI8fA
222 1670850
>>670784
я так и думал, что есть решение проще. Пытался сделать так же, но
кажется у меня рили проблемы с элементарным синтаксисом, потому что как только я пытаюсь юзать подобные переменные $word2[array_rand($word2)], код сыпается.

А есть еще какие-нибудь пособия для самых маленьких? видео или статьи. Часто помогает восприятию изложение одних и тех же тем разными людьми.
bb.PNG116 Кб, 884x787
223 1671057
Есть задача , сразу же первая по ссылке https://phpbooktest2.ga/l1/mou-ikkai.html , прикрепляю скрин самой задачи Вообщем, решаю усложненный вариант( который не решается жадным алгоритмом). В процессе решения было много трудностей,с которыми ОП очень помог, остановка произошла , на том , что я для начала должен был сделать программу для генерации комбинаций , вот я сделал https://ideone.com/XhuCwE .

Следующим моим шагом уже стало решение задачи про банкомат, следуя советам, сделал так: одна функция генерирует комбинации, по примеру как с числами, тут только вопрос правильно ли я это осуществил генерацию комбинаций купюр, с числами было попроще. Другая функция проверяет комбинацию, соответствует ли комбинацию тому количеству денег , которое требуется выдать. Сделал все это пока без оптимизации, хочется для начала узнать адекватно ли я вообще написал этот код , и есть ли тут грубые ошибки. Вот сам код https://ideone.com/6tgkDv . Далее уже буду делать оптимизацию.

Есть еще вопрос , можно же было бы осуществить все без генераторов запихнув функцию проверки в функцию генерации комбинации https://ideone.com/5L3qJh , или это ужасно выглядит ?
224 1671267
Есть PHP скрипт, в котором парсится текстовый файл, который лежит в папке рядом со скриптом (буквально там написано $file = 'data.txt';).
Находится все это в папке D:\Code\
Так вот, оно как-то странно работает, если запускать его из командной строки Windows.
Если перейти в папку (в консоли ввести D: cd code) и запустить скрипт (php script.php) - все работает отлично.
Если же попытаться запустить скрипт не переходя в папку, а задав абсолютный путь (php D:\code\script.php) то скрипт начинает выполняться, но выдает Warning что не может найти файл data.txt.

Почему так? Как это исправить?
225 1671281
>>671267

>Почему так?


>'data.txt'


Это относительный путь. Он считается от точки запуска скрипта, а так как ты запускаешь его из другой директории, то он не может найти файл.

>Как это исправить?


__DIR__ . DIRECTORY_SEPARATOR . 'data.txt'
Пропиши вместо относительного пути.
15878140117112.jpg208 Кб, 1280x958
226 1671304
>>671281
Спасибо.
227 1671336
а можно ли с пхп баловаться в консольке?
228 1671342
>>671336
Да. Можно даже демонов писать. Только тсссс
229 1671343
>>671342
что такое демоны?
230 1671376
>>671343
сам нашел
231 1671677
Тупой вопрос :
strstr - Находит первое вхождение подстроки. Как это можно перевести на человеческий язык?

Ну то есть "находит первое вхождение части строки" звучит не очень понятно.Или это я слишком тупой?
232 1671717
эм, анонсы, поясните мне вот такой момент. работаю с настройками магаза и его моделью. значения сюда записываются через json_encode и поэтому там залупа в виде u043fu0443u043a и соответственно чтобы все было по канону свои астройки которые я посылаю туда (для своей модели собсно) я шлю через енкод. все норм и он спокойно записывает то что мне надо. но проблема в том когда я их обратно достаю и юзаю json_decode() он мне возвращает сука то же самое. т.е. не NULL, не исключение, а просто такую же закодированную строку. в чем трабл? стоит пыха 7.2.3 если че
233 1671812
>>656450 (OP)
Хочу быть фронтендом. Хтмл и ксс с горе пополам знаю. Что дальше учить? JS или PHP?
234 1671818
>>671812

>Хочу быть фронтендом


>JS или PHP


Сам как думаешь?
235 1671821
Что я делаю не так?
https://paiza.io/projects/mNxIIUEXLbF6KWLdsx_NSQ?language=php
Он выводит будто все буквы в тексте гласные, так ещё и сверху накидывает выше нормы. При этом если использовать английские буквы, то всё нормально.
Дело конечно в локале, но mb_internal_encoding('utf-8') не помогает
236 1671827
>>671818
А по фрилансу как на жс или рнр?
237 1671838
>>671827
Новые проекты на пыхе в 99.9% случаев представляют из себя вкидывания 300$ в индуса надеясь получить от него хоть немного юзабельный продукт
На западе даже самые прозженные любители поговнокодить массово перекатываются на питухон/руби как новую тулзу для шлёпанья монолитов
238 1671885
>>671838

>На западе даже самые прозженные любители поговнокодить массово перекатываются на питухон/руби как новую тулзу для шлёпанья монолитов


жаль в роисии сука не так
239 1671907
Дурашка-кун снова просит о помощи.

Ебучая задача про палиндром: как блять это сделать, пользуясь только знаниями из обучалки?

https://ideone.com/NZXJOp вот я разбираю слово на символы, одним циклом с начала строки, другим циклом с конца строки. Как их сравнить и получить только итоговый результат по строке, а не по каждому символу?
Можно ли не делать два цикла, а как-то уместить это в один?
Если закидывать строку посимвольно в массив, как мне сравнить элементы из начала и конца массива? это вообще можно сделать?
240 1671919
>>671907
Твои страдания в этом треде самый лучший пример почему не надо даже думать трогать это говно
241 1671985
>>671907
решил в итоге вот так https://ideone.com/db801m
работает как часы, однако не так, как задумывал автор обучалки, очевидно
242 1672015
>>671985
я тут наговнокодил, можешь посмотреть, если хочешь
https://ideone.com/Lz0ktY
dcvx3gj-4e7a800a-1cf5-40dc-a0f8-c294490f4701.jpg219 Кб, 770x800
243 1672058
>>672015
функции блять какие-то, непонятно нихуя
спасибо, вернусь к этому позже, как начну понимать хоть что-то
244 1672069
Делаю сейчас тестхаб из ОП-поста на ларавеле. Думаю, что через неделю-другую бэк более-менее до ума доведу. Хочу фронт написать на тайпскрипте и вью. Норм связка, или лучше реакт+тайпскрипт? Если что в жс-е, очень плохо разбираюсь, но понравился синтаксис тайпскрипта. На фреймворках никогда ничего не писал, так что все равно что учить.
245 1672133
>>671838

>На западе даже самые прозженные любители поговнокодить массово перекатываются на питухон/руби как новую тулзу для шлёпанья монолитов


Статистику перекатывания в студию. Я уже вскукареков наслушался.
246 1672135
>>672069

>Делаю сейчас тестхаб из ОП-поста на ларавеле.


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

С тех пор как выучил пхп и пошёл по фрилансу и заявкам, то стало очевидно, что местное дрочево никому не нужно - синьоры сами поговнокодить мастера.
247 1672241
>>671821
Попробуй mb_strstr и mb_strlen
248 1672283
>>672241
Спасибо, попробую так
249 1672405
>>672135

>Лучше написать какой-то полезный сервис


>С нулем опыта

250 1672443
>>672135

>пошёл по фрилансу


>синьоры


чего блять
251 1672922
>>671985
https://paiza.io/projects/RqqnXFOCfVQ46FimCGCCUQ?language=php

Мой говнокод Реальный говнокод, держи
252 1672942
>>672922

>Реальный говнокод


Всё так
https://paiza.io/projects/tKHPyGCVRrhdMlVBGW43Iw?language=php
253 1672993
>>672922
А функцией strrev можно пользоваться?
254 1672995
>>672993
>>672942
И даже если без strrev, то зачем пользоваться вырезанием подстроки, когда можно напрямую символы получать как
$test[$i]? Проще ведь будет?

Извитите, не пишу на вашем ПХП, не знаю как у вас писать принято.
255 1672996
>>672942
Просто есть уверенность в том, что можно сделать куда лучше и проще
>>672993
Ну автор учебника не рекомендует тк не работает с русскими буквами Я сам учусь и не знаю тонкостей
256 1673008
>>672996
Да, решил проверить и понял что обделался, строка побайтово сравнивается. Не подумал, что скриптовые языки в 2020 не могут нативно с юникодом работать.

>>672996

>Ну автор учебника не рекомендует тк не работает с русскими буквами


Учи питон, пока не поздно. Не будешь такой хуйнёй страдать, там всё намного лучше.
257 1673013
>>673008
Звучит как начало пасты про dive into python.
А если без шуток, то где объективно синтаксис лучше : у питона или пхп?
258 1673019
>>673013
У питона, однозначно. Его делали специально для того, чтобы синтаксис был стройным и лаконичным. Свои минусы у него есть, но в другой части.
259 1673041
>>673019
Понял, спасибо.Даже если питон возможно лучше хотя мне кажется всё зависит от того на чем ты начал в начале, все дело в привычке, то все равно на пхп больше вакансий для джунов. К тому же принцип работы языков программирования очень схож и думаю в случае чего смогу перекатиться.
260 1673059
>>673019
Питон однозначно хуже. И смешное "развитие" не помогает практически ничем. Вообще он выглядит как один из худших вариантов для бекенда. Даже голый жс получше. Лучше бы питонисты занимались более подходящими задачами, чем вот это вот.
Алсо, нужна не лаконичность, а выразительность. Лаконичностью доведенной до уродства студентота только меряется. И они, кстати, как раз дрочат на питон.
Ноудискасс, т.к. 3 года уже на питоне пишу бек и всей душой его ненавижу, с каждым днем все больше, переубедить не выйдет никак.
261 1673063
>>673041
Ну как хочешь. Хотя проверил сейчас, на ХХ за неделю 1134 вакансий со словом питон и 470 на ПХП, это в Москве.

Языки вроде питона, ЖС и го на разные направления ориентированы, самая широкая область у питона, а ПХП только веб и только в одном стиле.
262 1673067
>>673059
Что для бека в питоне хуже по сравнению с ПХП?
263 1673072
>>673063
Я живу не в москве и у меня в городе одинаковое количество вакаский для пхп/питон`а.
Вот только вакансий без опыта для питона вообще нет.
264 1673076
>>673072
Ты только начал вкатываться?
265 1673084
266 1673178
>>673084
Сколько лет?
267 1673232
268 1673254
>>673232
Дерзай, есть все шансы. Мне 25, уже больше года не могу вкатиться в пыху, работа дворником не оставляет времени на саморазвитие.
269 1673275
>>673254
Дворники вроде мало работают в день.Или ты полный день работаешь?
Если я не смогу за год-полтора научиться и найти работу джуном, то пополню твои ряды.
>>672922
https://paiza.io/projects/Src-bGvqCdab1Jqk6gfqKQ?language=php
переделал, теперь всё должно нормально работать.Если не использовать спец символы...Всё как задумывал автор Наверное
270 1673279
>>673254
Ну ты все же не бросай попытку, даже если систематически по часу будешь в день учить, то через пару лет сможешь вкатиться.Там ещё от удачи всё зависит - видел вакансию в своём городе где вообще не слишком много нужно знать, мол главное желание учиться развиваться Оплата от 15 до 30к, но скорее всего на деле 15к
271 1673285
>>672995
В пыхе по индексу ты читаешь не символ а байт, собсна мультибайтовая кириллица идет по пизде. Исторически сложилось что создатели пыхи ложили хуй на юникод, и поэтому сейчас у каждой функции, которая работает со строками, есть клон с приставком mb_ в виде экстеншена. Такие дела :'c
272 1673377
почему пхп ненавидят?
273 1673379
>>673377
Зависть.
274 1673380
>>673379
или потому что он старый?
275 1673385
>>673380
Моложе него только всякая хипстеркая хуита. Особенно если отсчитывать от появления zend engine. Из относительно мейнстримовых только шарп помоложе будет.
276 1673387
>>673377
Кто его ненавидит? Как вообще можно ненавидеть инструмент?
Какие-то эмоции к нему, да и к прочим ЯП, испытывают только совсем уж ньюфаги в мире ИТ. Чем и палятся.
277 1673390
>>673385
я имел ввиду,что он не поспевает за свежими и модными трендами
278 1673393
>>673390
Схуяли непоспевает? Практически все есть, в 8 версии многопоточность подвезут (хотя она и никому не нужна).
279 1673394
>>673393

>многопоточность


а разве не асинхронность?
280 1673397
>>673393
>>673394
Откуда такая инфа? Ни того ни другого из коробки вроде не будет в 8. Там самое главное jit и синтаксис подтянут в очередной раз, как же без этого. Алсо, Стогов хипстерские запросы коробочной асинхронности уже неоднократно посылал нахуй, т.к. считает ее неважной. Похоже это в самую последнюю очередь будет сделано.
281 1673403
>>673397
ну если они в разы повысят скорость,то асинк нах не нужен
282 1673406
>>673403
Асинхронность не для скорости языка в целом нужна, а для редких кейсов одновременной обработки блокирующих операций. Они реально редкие, поэтому особо не парятся с добавлением асинхронности в пых.
Со скоростью тоже уже давно хорошо, хотя апать есть куда. Все равно это не узкое место.
Критичное для пыхи - это повсеместная и легкая смена парадигмы исполнения на долгоживущие сервисы, т.к. узким местом теперь является повторяющаяся загрузка всякой мишуры одинаковой между запросами. Это, впрочем, уже многими реализовано. Из последнего нашумевшего - роадраннер. И того выходит асинхронность пхп нужна почти никак.
283 1673412
>>673406

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


нихера не понял
284 1673426
>>673406

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


А как быть в ситуации, когда 10k клиентов, которые слушают вебсокет. Держать в памяти и крутить параллельно 10k машин, по одной на каждого клиента, и дальше синхронизировать обмен данных через внешние системы обмена сообщений?

Асинхронность или многопоточность нужны вот для таких вариантов. Один процесс обслуживает много клиентов, за счёт этого радикально снижаются некоторые накладные расходы. Не только память и какие-то вычисления, но и подключения к внешним сервисам и др.
285 1673468
>>673426

>когда 10k клиентов, которые слушают вебсокет.


вот про сокеты тоже интересно послушать
15335074428900.jpg122 Кб, 974x1353
286 1673544
Дурашка-кун упёрся в регулярки.

Как правильно оформить регулярное выражение на определение правильности номера телефона?

" сначала идет +7 или 8, за ними ровно 10 цифр, между которыми может быть любое число скобок, минусов, пробелов"

непонятно, как дать "любое число скобок, минусов и пробелов" на любом участке текста, если символы в регулярке считаются по порядку, как я понимаю.
287 1673568
>>672993
>>672995

По поводу функций для работы с русскими буквами - подробно описано тут: https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md
288 1673609
>>673544
Тут так просто не решается. Можно перед регуляркой почистить от этого, можно так, например ([() -]\d[() -]){10}
289 1673610
>>673609
Звездочки побились, ну ты понел.
290 1673642
>>673544
отвечу сам себе:

все левые символы надо просто убрать с помощью
$number = str_replace([")","(","-"," "], "",$string);
291 1673674
>>673377
До появления жс был самым конченым языком из популярных.
Сейчас место короля параши у js.

(Но по мне, C++ по уебищности никому уже не переплюнуть. Кто на C++ писал - тот в цирке не смеется.)
292 1673676
>>673390

>свежими и модными трендами


Это какими?
293 1673918
>>673642

>все левые символы надо просто убрать с помощью



Ну охуеть, ав самой задачне нельзя ыбло написать что их убирать надо? Я тоже думал что надо в регулярке прописывать любой символ
294 1674006
>>673377
Пых плох и ненавидим не столько сам по себе, сколько в плане того, кто и что на нем разрабатывает. На голом пыхе можно написать что угодно в интернет-мире, что приводит к тому, что есть куча "фрилансеров" 15летних с бирж и прочих начинающих, которые пишут роутинг в стиле switch($_SERVER['REQUEST_URI']) на 150 пунктов, свой класс DB, верстают шаблонами голого пыха куда прокидывают свой же класс DB, и так далее, и так далее. Все это можно делать и на джаве с питоном, но почему-то в основном такие перлы коммьюнити у пхп. Ну и процедурная лапша на глобалках в цмс или фрилансовые заказы шоб работало вчера без какого-либо ревью это тоже большая часть рынка у пхп, там могут быть матерые говнокодеры. Ну а если брать пхп мир симфони с ларой, то чего, нормальные вещи, ничего выделяющегося в плане хуевости на фоне других популярных языков, лара вообще стильная модная молодежная.
295 1674040
>>674006

>15летних с бирж и прочих начинающих, которые пишут роутинг в стиле switch($_SERVER['REQUEST_URI']) на 150 пунктов



Такое кстати пишут не только 15-летние но и с 15-летним опытом без шуток. Когда за 15 лет варишься в этом чане с говном и не видишь как можно по другому написать. Знавал я одного разраба, говорил что все бугуртят от вордпресса просто потому что не знают как с ним правильно работать. Хотя он вроде понимал что в цикле делать запросы к бд это не очень правильно(скорее не очень быстро для него), но это по вордпрессовски и проще ебануть какой-то кеш программный чем пытаться по другому. Ну и конечно не признавал композер, установить сторонние либы это копипаст в локальный файл и подключение через include, в общем лучшие практики 2003 года.
296 1674076
>>674006

>но почему-то в основном такие перлы коммьюнити у пхп


Ты ещё не видывал что пердоли на js лепят порой.
297 1674123
Подскажите в чем ошибка

https://paiza.io/projects/O4cLQ-FFcaq6hvtuQRYOTw
298 1674125
>>674123
У тебя внизу ошибки пишутся в командной строке, балда.
299 1674134
Всем привет, я начал учить верстку. Глянул вакансии и там джва пути:
1. Или ты должен знать в добавок к верстке php, sql и разные cms
2. Или ты должен иметь официальный опыт работы с js-фреймворками

Второй вариант в общем-то отпадает, ибо нельзя взять официальный опыт, если чтобы взять официальный опыт, надо иметь официальный опыт. Попал во фрактал. Значит интересует первый вариант. Это получается надо знать linux-администрирование что ли? Чтобы php на сервере настроить? А как считаете на stepic.org хорошие курсы по linux?
300 1674144
>>674134
Что написать в preg_replace чтобы работало

https://paiza.io/projects/O4cLQ-FFcaq6hvtuQRYOTw
301 1674162
>>674144
Разобрался с реплейсом, но все равно не работает
302 1674300
>>674076
Видел, в одном месте работодатель любил ванилла жс без зависимостей, поэтому все писалось кошмарными велосипедами на кучах ифов и конечно же без какого-либо ES6+
303 1674381
304 1674385
>>674300
Такое в любом языке встречается. Я хз как сильно надо быть ёбнутым мешком чтобы увидев одного говнокодера составлять мнение вообще о всех пишущих на этом же языке.
305 1674470
симфони не создает проэкт,хотя вроде процесс скачки был
return this.PNG3 Кб, 278x121
306 1674551
Почему надо возвращать текущий объект при обращении к нему, как показано на рисунке? Это небольшая часть symfony forms, да и вообще там (в симфони) всегда так, при присваивании данных в объекте
307 1674553
>>674551
Чтобы можно было цепочки писать типая zalupa.foo(123).bar(456);
308 1674563
>>674553
А при создании объекта можно вызвать функцию в одну строку? по типу new CallClass()->create(); или мне все равно придется закинуть new CallClass() в переменную, и обратиться к методу через переменную?
309 1674572
>>674563
(new CallClass())->create();
310 1674579
>>674572
Емаё, а где в мануале php это можно найти?
311 1674584
>>674572
А все, нашел в основах классов и объектов. балдеж
312 1674592
>>674572
Я больше люблю через статический метод создавать. Получается красивее: $result = ClassName::make(foo, bar)->handle(blabla);
313 1674594
>>674592
Слышал мнение, что нахуй не нужна твоя статика.
314 1674598
>>674592
Красивее делать вот так:
(new class {
....public function call($name) {
........echo $name;
....}
})->call("yo");

>>674594
Заметь, что у него статический метод это фабрика, которая возвращает какой-то объект, ничего ужасного в этом нет
315 1674599
>>674594
Ты не въехал в это мнение. Можешь сам нахуй пройти.
316 1674602
>>674598

>Красивее делать вот так


Ебать ты вывернул.
Screenshot2020-05-0221-45-32.png7 Кб, 369x124
317 1674804
Накатил psalm, получился какой-то тайпскрипт на минималках, но всё равно какая-то даже иллюзия появилась что мой код будет меньше ошибок срать. На пике например массив классовых констант с определенным интерфейсом. Радует то что сразу подсвечиваются не обработанные null, которые с функций возвращаются, там главное не ставить самую анальную строгость, а то весь код красный будет.
318 1675166
Приветствую!
Есть у кого скачанный phpbooktest2(точка)ga?
319 1675511
>>675166

Можно зайти сюда: https://github.com/codedokode/phpbook

Нажать "Clone or download", и там нажать Download ZIP.
320 1675520
>>675511
Благодарю!
321 1675543
>>656450 (OP)

>У нас есть свои уроки по основам PHP, они собраны и выложены по адресу http://codedokode.github.io/phpbook


Так, ну а чего ссылка не работает?
322 1675990
>>675543
все работает
15882408591750.jpg41 Кб, 512x511
323 1676056

>Кто-то хочет открыть стартап

324 1676083
>>675990
у меня тоже перестала работать :о
325 1676084
>>676083
а нет, отбой. из закладок не открывает, а из треда нормально
изображение.png410 Кб, 500x500
326 1676086
cacatb.png671 Кб, 808x1108
327 1676099
>>676056

>за 7.5 килорублей

15365995696100.jpg45 Кб, 1280x720
328 1676102
>>676099

>без MVP

330 1676302
>>656450 (OP)
Сап, аноны.
Сложно ли реализовать плату за услугу онлайн, например тура?
То есть, чтобы пользователь забронировал и оплатил тур онлайн?
331 1676373
>>676302
Смотря как. Если ты хочешь сам принимать и хранить карточки (платежную информацию) то сложно. Нужно разные сертификации проходить и подобную ебанину. Если просто подключить сторонний сервис (яндекс-деньги, paypal или подобную парашу) то ничего особо сложного.
dbyp16h-b8717200-426e-44d3-9fa2-3bc452d034ce.jpg181 Кб, 688x931
332 1676435
«Grammar Nazi». Напиши скрипт, проверяющий текст на наличие злостных ошибок:
нет пробела после запятой, точки с запятой, восклицательного знака, вопросительного знака, двоеточия
«жи» или «ши» написано с буквой ы
в тексте есть слово «координально» или «сдесь», «зделал», «зделаю», «зделан»
в тексте есть слова «а» или «но» без запятой перед ними.
(можешь добавить еще несколько правил, если хорошо знаешь русский язык)
В случае обнаружения ошибки скрипт должен писать сообщение об этом и выводить кусок текста с ошибкой (чтобы было понятно, что не так).

>>выводить кусок текста с ошибкой



как?(
333 1676560
>>675990
У меня пишет не удалось получить доступ к сайту, пробовал с впна и другого компа - ничего.
334 1676593
>>676435

>как?


Как хочешь. Это и есть работа программиста.
За говнокод тоже ебать тебя будем.
335 1676701
>>676560

Открывай ссылку http://codedokode.github.io/phpbook - должно работать.
336 1676708
>>676701

Ой, ошибся, там слеш на конце и https: https://codedokode.github.io/phpbook/ - так открывается.
337 1676926
Делаю тестахаб. Такой вопрос. Вот тут ОП предлагает по очереди выводит юзеру каждый вопрос

>/test/NNN/question - страница вопроса теста. Показывается сколько осталось времени, текущий вопрос и дается возможность ответить на него. Можно возвращаться к предыдущим вопросам. Можно не отвечать на вопрос. Контроль времени должен вестись на сервере, чтобы его нельзя было обойти.


Я хочу сделать так: когда юзер начинает тест, то ему приходят сразу все вопросы, а дальше на клиенте джаваскрипт их пагинирует. Так ведь проще, чем каждый раз к серверу через аякс обращаться, чтобы получить следующий вопрос. Или есть какие-то подводные камни?
338 1676973
>>676926

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



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

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

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


Да,про это думал. Но мне кажется, что бесполезно трекать время ответа на конкретный вопрос. Важен же общий результат и время выполнения целого теста.

> для этого лучше сразу какой-то вью подрубать


Я так и хотел. Добра за ответ! Пойду пилить.
340 1676992
>>676708
О, открыло. Пасиб
341 1677001
Помогите, пожалуйста
<?php

$result = $i * $i;

for ($i = 1; $i <= 10; $i++) {
echo "($i)x($i)=($result)\n";
}

Должно вывестись
1x1=1
2x2=4
3x3=9
...
10x10=100
Все в общем работает, только ответы везде 0. В чем ошибка?
342 1677012
>>677001
$result = fn($i) => $i * $i;

echo "($i)x($i)=({$result($i)})\n";

какое же пыха говно
343 1677015
>>677012
Спасибо, но fn это что?
344 1677017
>>677015
Это куколд какой-то не местный - забредают тут контуженные, иногда, со своим никому не интересным мнением.
Он херню пишет.

>Все в общем работает, только ответы везде 0. В чем ошибка?


>$result = $i * $i;


Вот это в цикл убрать надо. Перед echo.
345 1677024
>>677017
Я пробовал, получилось в итоге
11x11=0
346 1677025
>>677024
Выдумываешь.
https://3v4l.org/69LSF
347 1677026
>>677025
Видимо что-то не углядел, сейчас заново попробую.
348 1677027
>>677025
Все работает, спасибо
349 1677141
Почему единица не выводится?

$i = "instructions and recipes";

if (strrpos(" $i ", " instr") == true) {print 1;}
350 1677147
>>677141
Потому что у тебя возвращается 0, что неявно кастится в false. Хуярь явную проверку, и желательно строгую. В твоем случае !== false. Проблема дизайна в старых функциях стандартной либы есть такая.
351 1677151
>>677141

>" $i "


Ну и еще, нахера ты вот так передаешь?
352 1677159
>>677151
Все я понял. 2 пробела нужно было ставить в первом сравнении
353 1677169
>>677159
Звучит как костыль. Покажи.
354 1677173
>>677159
https://3v4l.org/88WvA

Если че вот нормальное использование функции, о котором я говорил.
355 1677177
>>677169
Нужно было найти фразы, в которых содержатся определенные участки текста в корнях (в начале слов)

Эта функция

if (strrpos($url_3, '@') == true) {print 1;} # Эта хуита не работает для начальных строк

не подводила, разве что не возвращала true если искобый обьект не находится между другими обьектами, отчего ставлю пробел
356 1677182
>>677177

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


trim, чтобы от ненужных пробелов и прочего по краям избавляться.
357 1677184
>>677182
Если не будет пробела во фразе, как я определю именно начальные фрагменты слов?

Для удаления пробелов и сносок у меня отдельная функция
358 1677191
>>677184
К примеру мы ищем

if (strrpos("Божество всенародное", ' всена') == true)

найден фрагмент. а

if (strrpos("Божество всенародное", ' Бож') == true)

не найдет

if (strrpos("Божество всенародное", 'Бож') == true)

тем более не найдет. поэтому правильный запрос

if (strrpos(" Божество всенародное", ' Бож') == true)

т.е. 2 пробела во фразе где мы ищем и один пробел в ищущемся фрагменте
359 1677199
>>677184
Можно разбить на слова еще до проверки. Или использовать регулярки, с их помощью легко проверить начальные фрагменты слов.
Даже если ты этого не сделаешь, все равно правильно херачить через !== false. Вторым пробелом ты избегаешь возврата функции 0, и получаешь 1. 0 неявно кастится в false. 1 и выше неявно кастится в true, и только из-за этого неявного кастинга ты вставляешь два пробела в начало, вместо одного. Но это как был костыль, так и есть.

>==


От нестрогих сравнений нужно дисциплинированно отказаться навсегда кстати. Одна из причин, почему такие ситуации возникают. Сравнивается жопа с пальцем, кое как кастинги происходят, а тут вдруг вместо пальца хуй, и вроде ведь похож, да что-то кастинг срет под себя. Ты понял.
360 1677315
Какая CMS самая крутая по вашим ощущениям? Я знаю, вы скажете, У-У-У! все CMS - говно, фреймворки рулят! Но тем не менее, какая CMS самая приемлемая? inb4: KeystoneJS
361 1677442
>>676435
я решил зайти на решение через массив, но как БЛЯТЬ вывести сами "ошибки" значения массива [0] через echo?
https://ideone.com/f9l7uj
362 1677550
>>677442
разобрался, проходите мимо
image.png51 Кб, 1113x505
363 1678026
Как сосется?
364 1678050
>>678026
Отлично, причмокивая!
365 1678263
>>678026
Пиздишь про опыт, делов то
366 1678271
У меня одного Оп-сайт с задачками не открывается?
367 1678290
>>677141

Это неправильный код. Согласно мануалу, strrpos возвращает либо число, либо FALSE. TRUE она не возвращает не при каких условиях, и сравнение некорректное.

>>678271

Попробуй в ссылке заменить http на https: https://codedokode.github.io/phpbook/
368 1678301
Почему обычно используют true === $obj->field вместо $obj->field === true? Это какая-то защита, если $obj окажется null? Как она работает?
369 1678381
>>678301

>Это какая-то защита


Защита от случайного написания = вместо сравнения. В других языках тоже так пишут. Если в левой части что-то типа true, то попытка присвоения сразу же приведет к ошибке. Обратная ситуация могла бы стать трудноуловимым багом.
370 1678388
>>678381
А, всего то. Спасибо, понял. Даже нагуглил https://en.wikipedia.org/wiki/Yoda_conditions
371 1678405
>>678290

>Попробуй в ссылке заменить http на https



Спасибо, заработало
372 1678442
>>678263
Это значение по умолчанию - херочка не указала по невнимательности. Не надо пиздеть.
373 1678501
>>677315
Ну, ребят, ну, скажите! Или шо? Никто с CMS не хочет связываться? Зашквар?
374 1678512
>>678501
Попробуй в /web/ спросить.
375 1678515
>>678512
Объясни положняк этого треда. Тут cms зашкваром считается или нет? Типа cms зашквар и надо уметь в фреймворки?
376 1678564
>>678515
Битрикс норм
377 1678574
>>678515
Тут такое спрашивать зашкваром считается и теперь тебя негласно в петушиный угол определили.
Ну может ОП тебе чего ответит. Он любит петухов всяких няньчить.
378 1678585
>>678574

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


Я интересуюсь, а не спрашиваю. Выбирай выражения. И вообще ты кто такой чтобы запрещать мне интересоваться? Базаришь мне тут. Ты не авторитет для меня, ты меня понял? Все, базар окончен.
379 1678597
>>677315
битриксахахах
380 1678600
>>678597

>битриксахахах


Что это?
381 1678607
>>678585

>Я интересуюсь


Зашкварные интересы - иди парашу чистить. Пацанам западло с тобой за дело тереть.
Будешь базарить много за CMS - в обиженку переведём.
382 1678624
>>678607
Нахуя дефисы лепишь? Грамотей. И вообще ты не авторитет для меня.
383 1678637
>>678624
А я авторитет?
384 1678657
>>678600
СMS от 1С. Пилят ее еще с какого-то 1999 года, пользуется спросом за счет интеграции с 1С.
385 1678663
>>678657

>пользуется спросом за счет интеграции с 1С


Не, у них просто бизнес-модель на маркетинг завязана. Они бабло вливают не в разработку, а в продвижение. В результате внутри она - параша, но про неё каждому кабанчику расскажут в презентации - какая она распиздатая.
Кодер на битрксопарашу стоит довольно дорого потому, что она полна страданий и мало кто любит с ней работать.
386 1678693
>>678663

>она полна страданий


Ужас какой, это же пизнес, а зачем вы говорите, что это самая лучшая CMS? Вы что тролли что ли? Вы злодеи? Занимаетесь обманом? Занимаетесь ложью?
image.png17 Кб, 627x112
387 1678695
программачик, ньюфаг в треде. помоги с задачей пикрелейтед

<?php

for ($a=10000;$a>=1000000;$a/0.1) {
???
}

echo "$x лет";
388 1678746
>>678693
Не понял твоего поста. Что тебе не нравится? Программисты не любят Битрикс и есть за что.
Да - поддержка 1С у тебя будет отличная, но всё остальное будет парашей. А так как Битрикс это для веб, то работа с 1С это только 10% от задач, и остальные 90% - боль и говнокод.
389 1678754
>>678746
Ладно, понял, спасибо.
390 1678783
>>678746
Русский православный гречневый программист должен уметь три вещи: разобраться с Битриксом, разобраться с 1С-кой и кодить на русских православных микроконтроллерах.
15632901350690.jpg137 Кб, 1280x720
391 1678807
Когда изучал пхп, то пошёл сразу на фреймворки, PSR, ООП, и прочее.
Потом пришлось заниматься Вордпрессом. Уже вначале оказалось, что с ним не всё просто и там, где фреймворк предлагает простое и очевидное решение, на CMS это сделано наиболее ебанутым и неудобным способом.
Достаточно попробовать написать на фреймворке тот же блог, как всё станет очевидно.

Единственное, почему CMS ещё живы - они позволяют навасянить себе сайтик мышкой или нанять школьника для этого за копейки. Такое с фреймворком не прокатит - ему подай отдельный фронтенд где свои фреймворки есть, отдельный бекенд. Т.е. разработка несколько дороже выходит и професиональней.
392 1678836
>>678807
На пике каратист Юрий Кормушин? Который в Военной тайне на Рен-ТВ самооборону, удары показывал?
393 1678853
>>678836
Чел, ты чё? Макаку не узнаешь?
394 1678860
>>678853
Стас Михайлов?
15632909407660.jpg494 Кб, 1280x960
395 1678877
>>678860
Макака.
396 1678959
>>678695
<?php
$a=10000;
$x=0;
while ($a<=1000000) {
$a = ($a/100)*10 + $a;
$x++;
}
echo "$x лет"."\n";
echo "некто будет ".($x+16)." лет"."\n";
echo ($x+16)<=100 ? "доживёт" : "обмяк";
397 1679159
>>656450 (OP)
Аноны, нужна ваша помощь.
Пишу магистерскую диссертацию на тему разработки сайта для турагенства да-да, такое тоже бывает.
Могли бы ответить на вопросы:
1) Можете подсказать CMS, который легок в обучении и есть адекватные уроки по нему? И чтобы уроки были не по готовому шаблону или конструктору, а чтобы объясняли как использовать CMS со своей версткой?
2)По идее можно или нужно реализовать возможность покупки специальных туров, которые предоставляет фирма онлайн. Как это реализовать максимально легко и безопасно, если это возможно? Получается нужна база данных, если да, то что она должна хранить?
3) Допустим все же воспользоваться готовым шаблоном. Можно ли его натянуть на CMS и сделать для него оплату онлайн?
4) Можете дать советы по разработке сайта для турагенства? Как что реализовать, может быть кто-то сталкивался с подобным.
398 1679161
G
399 1679185
Верстальщик ужасно лажает, проеб на проебе и затягивание сроков в 10 раз. Какую программу ему можно поставить, чтобы она делала скриншоты раз в минуту и отсылала мне?

мимо пхп кодер с недовольным заказчиком
400 1679245
>>679185
Это не тот, который кнопки сабмита верстает как ссылки, а когда их переделываешь в кнопки то все стили слетают?
401 1679250
>>679159

>1) Можете подсказать CMS, кот


Очевидный вордпресс

>2)По идее можно или нужно реализовать возможность покупки специальных туров, которые предоставляет фирма онлайн. Как это реализовать максимально легко и безопасно, если это возможно? Получается нужна база данных, если да, то что она должна хранить?


Очевидный вукомерс

>3) Допустим все же воспользоваться готовым шаблоном. Можно ли его натянуть на CMS и сделать для него оплату онлайн?


Можно конечно и без особого труда

>4) Можете дать советы по разработке сайта для турагенства? Как что реализовать, может быть кто-то сталкивался с подобным.


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

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

>проеб на проебе и затягивание сроков в 10 раз


Изначальные сроки какие были? В норме на 1 страницу требуется 1-2 дня, от сложности. Может он тебе целый магаз за полдня сверстать взялся? Разумеется, что сильно затянет. Частая нубская тема.
403 1679297
>>679185
Просто найми меня
404 1679348
Ананасы, будьте так любезны, перезалейте с рыги офлайн-зеркало обучалки, а то "файл был удалён", а мне на работе аутировать хочется, интернет только на телефоне
405 1679431
>>679250

>Если твой максимум это laba2.java, то понадобится время, которого может не хватить, в общем тут уж думай сам.


У него в запасе меньше месяца, не думаю, что он вообще может в программирование как таковое. Поэтому да, поддержу только ВП.
406 1679468
Помогите разобраться. Пытаюсь вкатиться в ООП и столкнулся с таким вопросом. Например, хочу создать класс в котором будут базовые элементы - подключение к бд, лог запросов, времени выполнения, другие переменные, доступ к которым хотелось бы иметь из других классов. Как это правильно реализовать (и вообще правильно ли так делать в принципе)?
407 1679480
>>679468

>Как это правильно реализовать (и вообще правильно ли так делать в принципе)?


Гугли ActiveRecord
15651892687250.jpg317 Кб, 1152x1080
408 1679484
>>679468
Каждый класс создаётся под одну задачу, а ты целый слой задумал в один положить. Вангую, что у тебя так получится портянка на 100500 строк, с методами по 100500 строк, что является говной во всех смыслах.
Один класс - работа с БД, один - логирование сюда вобщем-то можно и время выполнения положить, один - всё это объединяетвроде как фасад который инициализирует загрузку и передаёт конфигурацию классам.
Глобальные переменный - удоляй. С данным подходом они не нужны никогда не нужны - класс БД получает от фасада данные, логгер тоже из фасада, ну и тд. И работают с ними на своём уровне.
409 1679502
>>679484
Да я образно все это в один класс объединил. Понятно, что под каждую задачу нужен свой отдельный класс. Вопрос в том, как создать единый экземпляр класса, чтобы он был доступен другим. И как правильно все это связывать
410 1679519
>>679502

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


Положи классы в контейнер при загрузке. Можно тот же php pimple использовать, с гитхаба, для хранения. Это такой класс для хранения других классов зависимостей, с дополнительными плюшками.
Ну и почитай по инъекциям зависимостей, хотя бы доку с примерами по этому Пимплу - там не сложно.
411 1679651
>>679348

Можно попробовать скачать отсюда: https://github.com/codedokode/phpbook - выбрать Clone or Download, и нажать Download as ZIP. ZIP распаковать в любую папку и дважды щелкнуть на html-файл для открытия.
412 1679661
>>679468

Если для работы одного класса нужен объект другого класса, то для этого придумано Dependency Injection: https://github.com/codedokode/pasta/blob/master/arch/di.md

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

Также, тебе стоит почитать про MVC: https://github.com/codedokode/pasta/blob/master/arch/mvc.md
413 1679706
>>679185

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


Зачем какая-то программа? Гит юзайте и все, потом смотришь, если каждые 3 часа нет коммита, значит какие-то проблемы.
414 1679723
>>679185

>чтобы она делала скриншоты раз в минуту и отсылала мне?


Я б не стал работать в таких условиях - нездоровая вахтёрская хрень у тебя в голове.
Не нравится как он работает - решай вопрос с ним напрямую, а не подглядывай, ебло.
415 1679732
>>679185
>>679723

>нездоровая вахтёрская хрень у тебя в голове


this.
Алсо, я не юрист, но мне что-то подсказывает, что поставить такое на личную машину сотрудника - риск быть набутыленным этим же сотрудником в любой момент, когда это вредоносное по заскринит или спиздит любые персональные данные. А машина скорее всего личная сейчас на удаленке.
На рабочую машину разве что можно, твое право, но от такого шизоидного вахтерства уйдет любой адекватный человек сразу же.
416 1679738
>>679732

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


Что шизоидное вахтерство поддержу, но такая ебала есть очень много где, и много людей вынуждены так работать, особенно те, кто изначально до ковида сидели на удаленке. Реальное есть много компаний, которыми рулят люди из 80-х.
417 1679742
>>679738
И люди не уходят, ибо смена рабочего места всегда стресс, это потеря заработка на месяц минимум, плюс многие люди понимают, что по скиллам не потянут, а еще на самом деле есть примерно процентов 50 омежных куколдов, которым это норм. Как и постоянные переработки и т.д., они даже не считают это чем-то таким.
418 1679754
>>679738
Всё это подглядывание по факту - бесполезная хрень. Нужно нанимать человека, чтобы он смотрел. Да не простого вахтёра, а который бы понимал, что там происходит - лишние траты, лишний геморрой. Или самому время тратить, что для двигающегося кабанчика - бред и ненужное занятие.
Блэт, это только извращенец и мог придумать - чтобы людей в напряжении держать и то первое время, а потом привыкают.

А ещё если учесть, что тут не машинистки работают и порой надо почилить-позалипать в думах, то чё как вообще? Та же помидорка-стайл требует регулярного отдыха. И что? Потом это сотруднику предъявлять - типа он в ютуб смотрел на работе? Ну охуеть теперь.
419 1679763
>>679754

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


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

>а потом привыкают.


Чисто создание атмосферы страха. Бывает, правда, что и за гит предъявляют. Как вон на хабре чел писал, что его привели к боссу и сказали от руки (!) на бумажке номера коммитов записать (sic!).
420 1679787
>>679763

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


Как-то не уверен, что суд этот аргумент примет в случае чего. В ТК вроде нет таких требований, чтобы разработчки без остановки код писал.
421 1679818
>>679787

>В ТК вроде нет таких требований, чтобы разработчки без остановки код писал.


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

Знаю парней, гребут на околомусарской конторе, занимаются дактилоскопией. Склад характера собственника и руководителя конторы соответствующий сфере деятельности. Там не то, что скриншоты, там над каждым рабочим местом установлены камеры, фиксирующие сотрудников. На фирме установлены штрафы. Например, один пацан уснул рабочим месте, хуяк - штраф 5,000 рублей, ну а че ФОТ оптимизировать как-то надо? Новая яхта сама себе не купит.

Пацаны вынуждены из толчка капчевать, это единственное место, где камер нет. Так вот и живут.
422 1679826
>>679818
А если они попробуют уволиться - их в лесу закопают? Или у них такая ничтожная квалификация, что после этой работы разве что в дворники идти?
423 1679832
>>679826

>А если они попробуют уволиться - их в лесу закопают?


Почему, з/п рассчитают и до свидания. Там очередь новых стоит.

>Или у них такая ничтожная квалификация, что после этой работы разве что в дворники идти?


Высокой квалификации там не требуется, плюс есть технические вузы да и специалистов полно еще со времен союза.
424 1679847
>>679832

>Почему, з/п рассчитают и до свидания.


И нахуя в такой помойке сидеть? Все что угодно будет лучше этого.

>Там очередь новых стоит.


Эта очередь из продавцов пылесосов, которые получили справку о прохождении курса за 100500 шекелей и теперь всем рассказывают, что уж они то программисты? Из тобою описанного никакой человек туда не пойдет при наличии выбора, а выбор в этой сфере пока еще есть и очень большой.
Не верю я, что такие существуют, тем более целыми очередями.
425 1679864
>>679847

>И нахуя в такой помойке сидеть? Все что угодно будет лучше этого.


Потому что там платят немного больше, чем в соседних конторах и намного больше, чем на заводе. А работа там - это электроника + лоу левел стафф на с/с++ и асме. Если не там, то на завод за 40к станки настраивать. А тут все-таки в теплом офисе с кофе-машиной и за компом, а не в цеху с выбитыми окнами в грязной робе поверх рубахи. Согласись, есть разница.

>Эта очередь из продавцов пылесосов, которые получили справку о прохождении


из студентов, только что окончивших технический вузик регионального миллионника, которые ниче кроме сишки и паскаля не знаю, а мамка с папкой оплачивать съемную квартиру и еду как-то не горят желанием. Понимаешь? Дети богатых родителей в ИТ не идут. А если родыки не богатые, то долго держать тебя на шее они не будут.

>Не верю я, что такие существуют, тем более целыми очередями.


Существуют. А еще существуют люди, которые живут в кризисе с 14 года и просто-напросто панически боятся потерять работу: у них очень узкая специальность, понимаешь? Таких контор всего-то несколько штук на всю Россию, это не ПХП, где потеряв работу, ты за неделю найдешь новую, похуй корона, не корона, ты завтра будешь снова гребсти, даже в условиях анальной оккупации, пока есть интернет, ты свои $5/h заработаешь. Тут немного по-другому.
426 1679866
>>679847
Работаю на силовиков в ИТ, ничего такого нету, получаю джуном 100к.
мимо бывший продавец пылесосов
427 1679921
насколько сокеты из базовой библиотеки рабочая тема?
428 1680464
Представляю вниманию господ PHP Собеседование .
430 1680542
>>680465

>Хекслет


Нахуй иди со своим хекслетом.
431 1680548
>>680465
Ты ещё бы Гикбрейнс притащил - те же помои, только вид сбоку.
432 1680554
>>680548
Я прошел там курсы и стал программистом. До этого собирал теплицы и мебель 10 лет
433 1680565
>>680554
А я прошёл там курсы и стал техлидом. До этого подметал улицы и пил бояру.
434 1680570
>>680565
Ты подороже курсы купил, судя по всему.
14760329563780.jpg60 Кб, 568x604
435 1681416
Прошло 5 лет, как я прогаю на php и сегодня я впервые установил и настроил XDebug.
В докере. На удивление, вроде без пердолинга встал и даже работает, я в шоке
436 1681458
>>681416
А что в нём такого? Как-то ставил, но ничего кроме красивого вардампа не использовал.
Есть у него какие-то наиболее полезные фичи, а то ради вардампа влом конфиги пхп ковырять.
437 1681732
>>656450 (OP)
Хех, помню я еще где-то в 7-8 классе сюда пробрался, наполненный уверенностью что скоро стану погромистом и буду загребать бабло лопатой. Прошел двачерский учебник похоже что он совсем не изменился с того времени, после чего меня угораздило посмотреть на настоящий php код какого-то сайта, я охуел, обосрался и больше в программирование не возвращался, при всем при этом поступил в айти шарагу и думал что когда-то начну изучать прогерство, лол. 6 лет выходит прошло, а ощущение что даже шапка почти не изменилась. Шарагу уже заканчиваю, через неделю сдача диплома, одногруппники уже миддлы, а я 4 года занимался хуй пойми чем и так и не начал ничего изучать. Подумал я на днях что не очень то хорошо будет всю жизнь мешки грузить, а с моим дипломом особо других вариантов нету, буду начинать заново походу, пожелайте удачи долбоебу, земля пухом.
438 1681736
>>681416
>>681458
Вы в голове что ли бек дебажите?
D984734071200.jpg84 Кб, 1200x801
439 1681763
>>681736

>Вы в голове что ли бек дебажите?


var_dump, для эстетов vardumper
440 1681826
>>681736
Ну в редких случаях пользуюсь - когда странное поведение присутствует.
Когда сам чёто пишу - вообще не приходится пользоваться. Оно либо ошибку синтаксиса выдаст, либо работает сразу.

Сейчас на каждый пук бросается исключение и стектрейс выводится. Толку от вардампа?
441 1681968
>>681732
Если до сих пор не вкатился, скорей всего тебе это и не надо, что за двухбитное мышление - или программист сверхразум 300к\наносек попивающий смузи в офисе или говночист и обслуживатель, видимо поэтому толпы зумеров и идут в ит - методички не поменялись, в свое время бумерам вдалбивали мысль стать офисными работниками всех мастей.
442 1681990
>>680465
Включил на пять секунд, и уже услышал "не ебу" "блять"
443 1682046
задам тупой вопрос,но все же.
для joomla нужно изучит БД,жс,пхп?
444 1682080
>>682046
Смотря на каком уровне работать собираешься. Если писать под неё и поддерживать, то надо учить и пхп, и жс, и саму архитектуру жумлы. Если просто сайтики делать из того, что есть, не не надо - это ж CMS, тут мышкой можно. Правда таких мышевозов - по 30 школьников на копеечный заказ.
445 1682094
>>682080
мне нужна регистрация,личный кабинет для каждого юзера в котором нужно совершить действие(думаю придеться допилить).из коробки там есть простой конструктор,я смотрел темы-все они перегруженное говно
мож друпал?
446 1682098
>>682094
но что мне подсказывает,что придется дрочиться с фреймворками
447 1682105
>>682098
Если какой-то уникальный функционал делать собрался, то придётся. CMSки хорошо идут только под определённые задачи и никак под оригинальные.
448 1682109
>>682105
мне импонирует,что в ЦМС не так много дрочева с фронтом,а я полный ноль в этом,пхп я хоть имею представление о языке.
мне всего то надо пару блоков для описания и картинки,вверху пару менюшек и кнопка авторизации и регистрации.
все шаблоны в магазине для меня избыточны,но мож я хреново искал
449 1682115
>>682109
Найди образец в сети и закажи его верстале. Делов-то.
450 1682116
>>682115
а что по ценам?
451 1682121
>>682116
От сложности зависит же - чего закажешь.

Пчел, если тебе надо для дела и побыстрее, то учить всякую срань - не вариант вообще. Либо сразу садишься и васянишь - лишь бы работало, либо нанимаешь человека. Третьего не дано.
452 1682193
>>681458
Дебаггер позволяет гораздо быстрее отлаживать.
Тебе не надо писать все эти вардампы, логи на каждый пук.
Ты просто ставишь точку останова, запускаешь код и тут же видишь все состояние программы реалтайм.
Особенно полезно, когда тебе надо посмотреть потроха какого-то объекта, куда без смазки так просто не залезть.
453 1682205
>>681736

> level 1: неделю разбираешься, почему программа не работает. Понимаешь: syntax error.


> level 2: отличаешь ошибку синтаксиса от других типов ошибок.


> level 3: видишь ошибки синтаксиса ДО запуска программы.


> level 4: освоил var_dump().


> level 5: впервые написал программу длиннее 1 килобайта так, чтобы там не было ошибок.


> level 6: обнаружил, что ошибки выводятся не только на экран, но и в логи и даже хранятся там.


> level 7: впервые нашел сложную ошибку путем последовательных var_dump'ов через каждую строку.


> level 80: прогал 2 часа, написал 50 классов, впервые запустил проект, охуел от того, что все идеально работает без каких-либо ошибок.


> level 90: исправляешь ошибки в фреймворках и либах.


> level 100: коммитишь в ядро php.

454 1682216
>>682205

> прогал 2 часа, написал 50 классов, впервые запустил проект, охуел от того, что все идеально работает без каких-либо ошибок.


Жиза. Постоянно себе пеняю за то, что сперва много пишу и только потом проверяю. При каждом запуске очко сжимается в ожидании часов отладки, но как-то жидко проносит.

>исправляешь ошибки в фреймворках и либах


Придирчивый стал до внутренностей всяких либ, что пиздос. Если код не по мне - не ставлю звезду.
455 1682220
>>682205

>> level 80: прогал 2 часа, написал 50 классов, впервые запустил проект, охуел от того, что все идеально работает без каких-либо ошибок.



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

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


Это не двухбитное мышление, для меня это суровая реальность. Образование уже не поменяю, даже каким-то продажником стать не смогу из-за дефектов речи и охуенных коммуникативных навыков, тут либо IT либо говночист. За деньгами не гоняюсь, это вообще последнее дело для меня
457 1682245
>>682238
Не слушай его, мне вообще было похуй на погромирование, после универа начал вкатываться только ради денег, а потом со временем всё больше и больше начало нравится, я настолько аутистом стал что вместо анимы смотрю разные доклады и презентации
458 1682264
>>681732
Дисциплина бро, нужны конкретные сроки и конкрентые цели, сделай пару проектов для портфолио и ищи работку джуном, висеть в вакууме дома и что-то учить очень сложно дольше 3-5 месяцев, ну примерно.
459 1682273
>>679921

Не понял вопрос. Ты бы описал, что у тебя за задача.

>>677315

Ты тоже не описал задачу, для чего тебе понадобилась CMS.

>>676926

Можно сделать и так, и так, оба варианта годятся. Аякс не обязателен, можно делать и с перезагрузкой страницы при переходе к следующему вопросу.

>>677442

Там лучше использовать foreach ($errors as $error) { echo "{$error[0]}"; }
460 1682276
>>676435

Выводить кусок текста рядом с ошибкой можно несколькими способами:

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

>>673544

Можно сделать регулярку, которая ищет ровно 1 цифру, и любое число минусов, скобок, пробелов после нее. А затем взять эту регулярку в скобки и указать повторение 10 раз: (одна цифра и символы){10}

>>673426

Для работы с вебсокетом можно либо использовать сторонний готовый демон, либо делать свое решение с использованием библиотек вроде ReactPHP.
461 1682318
>>682276

>Для работы с вебсокетом можно либо использовать сторонний готовый демон, либо делать свое решение с использованием библиотек вроде ReactPHP.


лучше не надо
462 1682757
Аноны, я тут залетный. Срочно нужна хелпа. Суть вопроса: мне нужно скомпилировать файс с кодом программы в исполняемый файл на винде. Использую MinGW x64, компилятор gcc. Сделать это нужно из php скрипта. Вызываю shell_exec() и передаю туда строку с путем компилятора, именем файла с кодом и выходным имеенм файла. Если эту же строку скопировать и вставить в cmd, то все работает так как нужно. Но если я делаю это из shell_exec(), то вылетает пикрил1. При чем, если я в shell_exec() передам "gcc --version", то он так же работает норм и выдает пикрил2. Уже не знаю что делать. Хоть винду переустанавливай.
463 1682766
>>656781

>уже думал что


Просто зачем учить пхп, если есть Python/Javascript?
464 1683289
>>682757

Гуглить gcc windows + код ошибки не пробовал?
465 1683292
>>682766

Если тебе нравится Яваскрипт, то что ты забыл в этом треде? Переубеждать тебя никто не будет. PHP вполне решает задачу разработки бекенда веб-приложений. Также, есть статья и про твой яваскрипт с питоном: https://habr.com/ru/post/315152/
466 1683463
Тестирования на JS вопрос!
В Jest'е пытаюсь затестить свою обертку над axios. Ничего не получается. В тестировании новичок, как и что мокать непонятно, особенно axios.create() и axios.interceptors.

https://codesandbox.io/s/jest-axios-testing-kx8gu — вот ссылка, пытаюсь написать тест на функции модуля client.js.

Буду очень рад вашей помощи, советам и подсказкам.
467 1683622
>>681416
Серго, ты? Нашел уже свой секуре контроллер или тебя таки пидорнули?
11.jpg145 Кб, 1042x848
468 1683705
В чем ошибка?
469 1683716
>>683705
Точки с запятой ставь после выражений.
https://dbfiddle.uk/?rdbms=mariadb_10.4&fiddle=aa478b703d477e236919ab951b938f60
470 1684001
в чем разница между симфони и ларавелу,кроме того,что 2 на основе 1?
с виду симфони какой то более сложный,конфиги и пр...
471 1684015
>>684001
Какие там основы, заебали уже. Ларавель сам по себе. От симфони только http foundation использует вместо psr 7 15
472 1684022
>>684001
Конвеншион овер конфигурэйшион - это ларавель, но ты должен придерживаться правил, что в какой папочке должно находиться. Симфони - все настраевается, но настроек охулиард и легко поломать: у тебя может падать сервис потому что зависимость через зависимость через зависимость через зависимость отсутствует или не настроена и хер поймешь.
473 1684079
Господа, подскажите как правильно реализовывать проверку прав доступа RBAC?
Есть у меня объект user, у него есть роли и разрешения. И допустим я хочу что бы кнопка "загрузить" была доступна только пользователю с ролью "admin". Дайте инфы или код - как принято делать такие вещи правильно и опрятно.
А то у меня естественно мозгов на большее чем допустим такое в контроллере -
if(! isset( user->permission->download)){
//доступ к кнопочке запрещен
return/редирект / и т.п.
}

не хватает

Как првоерять по феншую?
474 1684134
Хм, есть тут такие ебланы как я? "Вкатываюсь" уже 3 года.
1 год "вкатывался" во фронт JS пинал хуи на остоебеневшей говноработе. Уволился слава Будде, жаль не лет на пять раньше, походил по мухосрани и понял что со своим JS/react уровня около ноль я могу идти на хуй,и вкатился в другую ламповую работку гос-шарага где ультра-лайтовые условия. Там уже освоил пистон кое как, sql, пхп и ноду. На пхп запилил приложуху для шараги и несколько скриптов которые регулярно исполняются в базе. На ноде пишу всякие невнятные парсеры авито с сохранением данных в базу,в штаны, к Аллаху за пазуху.
Но все это у меня уровня хобби. Фактически я не вкотился. Код - говнокод. Коммерческой разработки нет. Ответственности тоже нет особой.
И блядь никакой предпринимательской жилки, уже года полтора как, имея такую хорошую работку, я должен был копротивляться на дно-фрилансе, набивая опыт - шишки.
Но сейчас уходить с нынешней работы - вообще не хочу. Если бы не оклад в 40 косарей - прям идеальная работа.да и эту зп могли бы поднять, если бы я активнее писал на пхп - задачи есть.

Короче годы прошли в битвах с прокрастинацией, инертностью и зоной комфорта. И не смотря на то что я таки что то научился пилить, считаю что я пример как раз тех вечно-вкатывающихся.
Аноны , все таки сосредоточьте ваши усилия на дисциплине и целеустремленности.
И дайте совет как мне поступить, что делать? Это с учетом того что увольняться сейчас точно не хочу, а времени свободного на работе много.
Фрилансить? Удаленку для джуна типа меня искать? Или вкатываться в какое то сообщество где что то пилят, и где код-ревью сделают, чем то помогут? Такие вообще существуют?
475 1684167
>>684134
Да потерпи еще лет нцать, жизнь не такая долгая штука, как кажется на первый взгляд.
476 1684270
>>684079

Можно как в Симфони: сделать сервис для провекрки наличия прав, в который ты передаешь юзера и константу действия. А в базовом контроллере или трейте сделать метод isGranted(действие), которое берет текущего юзера и через сервис проверяет права. Еще можно сделать метод denyAccessUnlessGranted(действие).

Почитай про Симфони: https://symfony.com/doc/current/security.html#security-securing-controller

>>684022

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

>>684134

Не знаю. Можешь попробовать фреймворк еще освоить какой-нибудь. Если ты будешь разбирать код компонентов Симфони, то может быть, чему-то научишься. Если не знаешь ООП, то в учебнике из шапки есть глава по ООП, а тут https://github.com/codedokode/pasta/ есть всякие статьи про паттерны и архитектуру.
477 1684293
>>684167
Тут ты прав. Нужно выползать из зоны комфорта. А то сейчас у меня прогинг - хобби просто, ответственности никакой.

>>684270

>>Можешь попробовать фреймворк еще освоить какой-нибудь


Я плотно использую slim, eloquent, sentinel и всякую бороду из либ. Буду в ларочку въезжать. ООП знаю, "знаю" громко конечно звучит. Пишу на классах.

Зона комфорта короче.
Пизда ей суке.
okrav.png88 Кб, 372x370
478 1684672
Вопрос по уроку ОП о шаблонах. Там на стадии "Умник" есть шаблон, в котором какая-то псевдо-управляющая констукция внутри тегов <if></if>. Я не могу понять принцип ее взаимодействия с функцией super_mega_template_engine(). Кому не лень посмотреть и вкратце растолковать, как все работает? Или может работать в принципе - сама функция ведь не показана, потому можно только догадки строить.
Ссылка: https://github.com/codedokode/pasta/blob/master/php/templates.md#умник
479 1684699
Кто-нибудь проектирует тут в yii2. Тут недавно интервью было с SamDark-ом, где он говорил что нельзя писать бизнес логику в моделях наследующихся от ActiveRecord и контроллерах. Где их размещать тогда?
480 1684701
>>684699

>Тут недавно интервью было с SamDark-ом


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

>Где их размещать тогда?


В сервисном слое.
481 1684722
>>684672
Просто посмотри как работает популярный шаблонизатор https://twig.symfony.com/doc/2.x/internals.html
482 1684761
>>684699
Такие вопросы у тебя из-за того, что ты получил следствие без причины.
"Модель" в юии это не "модель" из MVC, это просто неудачное название, по факту это интерфейс для работы с записью в базе данных. И для этого юии, собственно, и нужен - для максимально быстрого и удобного протаскивания этого интерфейса работы с записью в базе данных до конечного пользователя. Если это именно то, чем должно заниматься твое приложение, то бинго, юии идеально выполнит твои задачи.

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

Вот вкратце причина. Собственно это все обсосано по сто раз на форумах юии. Хороший пример Елисеев, который постепенно эволюционировал от курсов "как генерить формы на юии" к курсам по созданию самописного фреймворка, использованию DDD и PSR. Рекомендую именно его почитать, чтобы немного проветрить мозги.
483 1684780
>>684699
В сервисный слой убери, как тебе посоветовали.

>>684761
Человек спросил куда девать бизнес-логику, а ты пространно высрался про доки Yii и порекомендовал читать Елисеева.
Пиздец какой-то просто.
484 1684810
>>684780
Охиутельный совет про "сервисный слой" конечно поможет больше. С тем же успехом посоветовал бы писать "не в модели и не в контроллере".

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

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

По моему это гораздо лучший совет, чем "ну в классе код пиши, хуе мое".
485 1684812
>>684810
Посоветую тебе меньше читать и больше писать - по ходу разберёшься.
486 1684818
>>684722
>>684780
А где вы размещаете сервисный слой? Создали папку serices и классы ModelNameService?

>>684761
Да уже поняли что ошибались, что поделать. Нужно теперь рефакторить, но хотелось бы знать как нормальные люди это реализовывают.
487 1684886
>>684818

>ModelNameService


Сервис это элемент функционала приложения. К модели он имеет посредственное отношение и называть его так не стоит.
488 1684903
Аноны, подскажите вот что, не могу понять. Допустим я записываю в бд пароль пользователя в виде хэша с солью.
Соль - рандомная строка.
Как потом проверяется при аутентификации пароль пользователя, если соль с которой он регестрировался - рандомно-уникальная?
489 1684905
>>684903
Соль вытаскиваеться из бд.
490 1684955
>>684905

>>Соль вытаскиваеться из бд.


Большая часть алгоритмов вроде как с рандомной солью.

Я правильно понимаю что выглядит это так.

$randomSalt = "rsalt";
$password = 'пароль';
$hash = hash($randomSalt . $password );

А в базу пишется уже такая строка - $randomSalt . $hash ;
Я правильно понимаю?
491 1684963
>>684955
Типа того. Соль генерится случайно, записывается в бд и в последующих проверках используется записаная в бд.
492 1685316
>>684818

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

Например, User - это сущность (со свойствами email, pass_hash, blocked итд), а RegistrationService - это сервис, решающий задачу регистрации пользователей. У него могут быть такие методы:

- createUser($email, $pass): User
- deleteUser(User $user)
- validateLogin($email, $pass): bool
- blockUser(User $user, bool $blocked)

Заметь, что сервис не имеет дела с Request/Response/куками/сессией/HTTP-заголовками - это задача контроллера. Благодаря этому сервис можно вызывать даже из CLI скриптов, где нет никаких реквестов.

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

Также, "сервисный слой" описан в книге Фаулера про паттерны: https://martinfowler.com/eaaCatalog/serviceLayer.html
493 1685319
>>684903

При регистрации:

- генерируем соль
- берем хеш от (пароль + соль)
- записываем в БД соль:хеш

При логине:

- вытаскиваем из БД соль
- берем хеш от (пароль + соль)

Зачастую соль и хеш для удобства объединяются в одну строку, хранятся в одной ячейке таблицы и разделяются каким-нибудь спецсимволом.
494 1685489
Аноны, как подходить к разработке на Ларавель?
Пишу себе пет: сделал минимальную маршуртизацию на админку, на главное приложение, определил моделей штук 5 реально доделана только 1, под них миграции, начал работать с шаблонами и вконец запутался.
Т.е. у меня почти никакого функционала не готово, кроме вывода категорий, куча наработок на и я в них уже тону. Всё сделано на 20-50% и приходится прыгать по файлам всего проекта, дописывая то тут, то там понемногу.
Есть подозрение, что дальше я так совсем зароюсь.

Что в первую очередь надо писать админку или публичную, какие этапы? У гугла чёто ничего толком не нашёл.
495 1685725
>>685489
Тупо ебашь дальше. Тебе просто опыта не хватает. Через полгода будешь смеятся как ты в 5 моделях запутался. Как добъешь проект может быть смысл просмотреть какую-то книгу по ларавелю - тут идея в том чтобы столкнуть твое сложившееся представление о фрейморке с каким-то другим и на конфликтах можно неплохо прокачаться.
496 1685738
>>685725
Ну ок. Обнадёжил.
Буду дальше тащить.
497 1685827
анон, кинь ссылку на сайт который ты считаешь красивымне 2ch.hk
498 1685836
>>685827
Щитаю, что такая характеристика неприменима к сайту. Такое максимум лендосу пойдёт, но не функциональному сайту.
Лучший дизай - тот, который не видно. (с)
499 1685880
>>685836
красивый != функциональный?
500 1685933
>>685880
Дизайн не должен отвлекать от функционала. Сам посмотри на наиболее посещаемые ресурсы 2ch - минимализм везде. Разве только с цветами играются.
А вот где наворотов фронтендовских куча, так это посадочные всякие, авторские блогите же лендинги по сути, какие-то тематические сайты. А вот форумы, социалки, админки, прочие сервисы - с минимальным оформлением.
501 1686009
>>685316
Бля, ну это тот случай когда простота хуже воровства. Ты насоветовал полной хуйни, еще и Фаулера вырвал из контекста.

>"Сервисом" часто называют класс, объект которого существует в одном экземпляре


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

>Например, User - это сущность (со свойствами email, pass_hash, blocked итд), а RegistrationService - это сервис, решающий задачу регистрации


А вот это опреление хуевое. Наличие свойств никак не говорит, что объект стал сущностью. У сервиса точно так же могут быть свойства, определяющие как он будет работать.

>У него могут быть такие методы:


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

>Заметь, что сервис не имеет дела с Request/Response/куками/сессией/HTTP-заголовками


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

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


А я не советую писать ебанутую приписку Service везде. А то ты ведь забудешь что это сервис не дай бог. UserRegistration или RegisterUser гораздо лучше выглядит.

>Также, "сервисный слой" описан в книге Фаулера про паттерны:


И вот тут самый жесткий обсер. Ты и сам обосрался и человеку жизнь основательно подпортил. Всю дорогу твой тейк в том, что бизнес логику нужно хранить в сервисном слое, и вот ты показал откуда этот бред вычитал. Фаулер конечно человек авторитетный и хуйни не напишет. А дело все в том что по ссылке только начало главы про сервисный слой. Там не написано что же блядь делает доменная модель если вся бизнес логика в сервисах. Просвещайся, вот тебе полная глава из книги https://www.informit.com/articles/article.aspx?p=1398617&seqNum=4

Если вкратце, то сервисный слой это всего лишь обертка над бизнес логикой доменной модели. Транзакции, уведомления, workflow - вот что находится в сервисном слое. Если взять твой пример с регистрацией пользователя, то в сервисном слое будет открытие и закрытие транзакции в бд, логи для графаны и отправка сообщения в рэббит. А в доменной модели будет собственно процесс регистрации. Все по Фаулеру.
501 1686009
>>685316
Бля, ну это тот случай когда простота хуже воровства. Ты насоветовал полной хуйни, еще и Фаулера вырвал из контекста.

>"Сервисом" часто называют класс, объект которого существует в одном экземпляре


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

>Например, User - это сущность (со свойствами email, pass_hash, blocked итд), а RegistrationService - это сервис, решающий задачу регистрации


А вот это опреление хуевое. Наличие свойств никак не говорит, что объект стал сущностью. У сервиса точно так же могут быть свойства, определяющие как он будет работать.

>У него могут быть такие методы:


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

>Заметь, что сервис не имеет дела с Request/Response/куками/сессией/HTTP-заголовками


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

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


А я не советую писать ебанутую приписку Service везде. А то ты ведь забудешь что это сервис не дай бог. UserRegistration или RegisterUser гораздо лучше выглядит.

>Также, "сервисный слой" описан в книге Фаулера про паттерны:


И вот тут самый жесткий обсер. Ты и сам обосрался и человеку жизнь основательно подпортил. Всю дорогу твой тейк в том, что бизнес логику нужно хранить в сервисном слое, и вот ты показал откуда этот бред вычитал. Фаулер конечно человек авторитетный и хуйни не напишет. А дело все в том что по ссылке только начало главы про сервисный слой. Там не написано что же блядь делает доменная модель если вся бизнес логика в сервисах. Просвещайся, вот тебе полная глава из книги https://www.informit.com/articles/article.aspx?p=1398617&seqNum=4

Если вкратце, то сервисный слой это всего лишь обертка над бизнес логикой доменной модели. Транзакции, уведомления, workflow - вот что находится в сервисном слое. Если взять твой пример с регистрацией пользователя, то в сервисном слое будет открытие и закрытие транзакции в бд, логи для графаны и отправка сообщения в рэббит. А в доменной модели будет собственно процесс регистрации. Все по Фаулеру.
502 1686048
>>685933
ну хуй знает, думаешь если изменили интерфейс 2ча - онлайн упадет?
503 1686489
>>656450 (OP)
В шапке:

> Здесь мы изучаем язык PHP (а также JS/CSS/HTML/SQL)



Что учить вначале? Знаю азы html, css, js.
504 1686679
Аноны, может кто поможет. У меня трабла с нодой, но в сущности и с пхп получается. Суть такова:

Короче разобрался. Все упирается в ошибку 'Error: Too many connections' - слишком много соединений с базой.
Использую mysql2, с пулом коннектов равным 10.

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

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

Означает ли пул в 10 коннектов то что в не более 10 запросов одномоментно в sql базе может исполняться? И что остальные запросы ждут пока эти 10 исполнятся где ждут? самому очередь формировать??
У меня ошибку 'Error: Too many connections' выдает даже если я просто рефрешу страницу - там простой код который несколько статей из базы достает. Неужели я где то так обосрался что эти мои простенькие sql запросы где то в базе залипают? Я вроде соединение освободжаю в коде.

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

Где почитать как пхп взаимодействует с базой под нагрузкой, и как база под нагрузкой работает?
505 1686774
>>686679

В СУБД есть ограничение на число одновременно сделанных соединений. Либо у тебя этот лимит очень маленький (меньше, чем размер пула), либо ты неправильно реализовал пул, он создает постоянно новые соединения, не закрывая, и упирается в лимит.

Пул (правильно реализованный) нужен для 2 целей:

- не тратить время на установку соединения, а взять готовое из пула
- защитить БД от перегрузки, притормозив бекенд, если все соединения в пуле заняты

Есть у пула и недостатки. Если кто-то вернет в пул соединение в неправильном состоянии (например, с открытой транзакцией), то будут баги.

В PHP пул обычно не исопльзуют и создают новое соединение при старте скрипта и закрывают по завершении.
506 1686919
>>686679
Тут дело не столько в самом пуле, сколько именно в работе ноды. Пхп однопоточный, и когда ты делаешь запросы через PDO ты всегда будешь использовать одно соединение, даже если есть пул.
А вот нода асинхронная и многопоточная, так что когда ты вызываешь запросы в цикле они выполняются параллельно, используя все доступные соединения из пула.
Например пул на десять соединений, ты делаешь двадцать запросов в пхп. Берется одно соединение и запросы выстраиваются в очередь на использование этого соединения. Ты делаешь двадцать запросов в ноде. На каждый запрос берется соединение, а кому не досталось становятся в очередь и ждут, когда соединение освободится.
Но это не объясняет откуда у тебя ошибка 'Error: Too many connections'. Возникнуть она может если твой пул больше доступного в MySQL количества соединений. Выполни запрос SHOW VARIABLES LIKE 'max_connections'; и посмотри че там по количеству. Дальше сам решай уменьшить пул или увеличить значение в MySQL.
И еще. Выполнение запросов в цикле это хуевая тема, хоть нода и делает их параллельно. Если тебе нужен список, то получай его одним запросом, а не по одной записи.
507 1686932
>>686774
>>686919

Спасибо большое за ответы. Я по итогу разобрался. Я накосячил с реализацией пула в ноде- на каждый обработчик роута я создавал по пулу в десять коннектов, естественно спамя страничку через f5 я все лимиты превышал.

>>SHOW VARIABLES LIKE 'max_connections'


Это проверял.

>>Выполнение запросов в цикле это хуевая тема


Нет, sql запросы конечно не в цикле.
508 1686937
>>686932

>>на каждый обработчик


на каждый вызов обработчика роута
самофикс
509 1686977
>>686919

Либо я не понял написанное, либо тут ошибка:

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



В PHP (без пулов), если сделать 20 запросов к серверу, запустится параллельно 20 копий скрипта, они откроют 20 соединений и будут выполнять SQL запросы по очереди каждый в своем соединении. Защитить БД можно ограничением числа воркеров PHP (либо ограничить число передаваемых запросов на nginx), тогда лишние HTTP-запросы будут вставить в очередь.

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



Это очень странный паттерн, я думаю, лучше выполнять запросы по очереди в одном соединении.
510 1686978
>>686977
а как в пхп размножить один скрипт?
511 1686990
>>686978
прохожу мимо
Первый вариант - запустить несколько в одном окне (ы)
Второй вариант - использовать брокер сообщений (напр., rabbitmq)

если конечно я правильно понял то, что ты хочешь сделать
512 1686991
а есть замеры,сколько пхп может осилить запросов к базе?
что нибудь простое,там имя,логин,дата
513 1686992
>>686990
я вообще другой анон,просто увидел тему про клонирования,вообще не в курсе такой фичи.
я что то подобное давно слышал в ньюфаге,но там сказали что для этого есть Эрланг
514 1687064
>>686977

>>Это очень странный паттерн


В ноде судя по всему обычное дело. Что бы экономить время на открытие/закрытие коннекта к базе, и что бы не создавать очередей.
В сбалансированном состоянии в соответствии нагрузка/открытые коннекты видимо выигрыш имеет место быть. Нода нужна в сущности для в некоторой степени специфических задач.
515 1687066
>>687064
п.с.
судя по доке коннекты не висят открытые без дела долго. Через какие то секунды они закрываются.
516 1687198
>>686991
А причем тут пхп?
Это к базе вопросы, сколько она может коннектов держать
517 1687204
>>686992
Ну да, rabbitmq на эрланге написан
518 1687353
>>686977

>В PHP (без пулов), если сделать 20 запросов к серверу


Я имел ввиду работу именно одного скрипта.

>Это очень странный паттерн, я думаю, лучше выполнять запросы по очереди в одном соединении.


Смотря для чего. Представь, что тебе нужно перебрать таблицу на десять миллионов записей. В десять потоков это все выполнится гораздо быстрее.
519 1687504
Чет я затупил с установкой хомстеад для ларавел на win7. Скачал виртуал-бокс, вагрант - поставил.

ДАлее выполнил команду - vagrant box add laravel/homestead

Полтора часа что то качалось, и наконец залилось. Но где мне найти то что залилось?

Далее по иструкции идет следующее:

Installing Homestead
You may install Homestead by cloning the repository onto your host machine.......
Нужно скоприровать с гита пакет
git clone https://github.com/laravel/homestead.git ~/Homestead

Это все это альтернативный вариант установки? Типа могу командой vagrant box add laravel/homestead, а могу сам качть с гитхаба?

Чет я торможу.
520 1687512
>>687204
разговор про чистый эрланг
521 1687517
>>687504
мне нужно править конфиги в Homestead.yaml
Но я не могу понять куда установилась эта чертова коробка. Где это сраный файл?
522 1687565
>>687353

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



В общем случае это плохая идея. Как правило, полный обход таблицы СУБД делает так: читает файл с данными таблицы с диска последовательно и отбирает нужные строки. То есть она упирается в скорость чтения с жесткого диска. Распараллеливание тут никак не поможет: несколько параллельных процессов СУБД будут конкурировать за доступ к диску, больше ждать и в итоге все станет медленннее.

Распараллеливание запросов может иметь смысл, если мы упираемся в CPU (чтобы нагрузить не одно ядро, а несколько), либо если мы шлем запросы параллельно на разные сервера.

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

Да, в PHP SQL запросы выполняются последовательно, но это вполне работающий подход, так как эти запросы обычно простые и выполняются быстро, и сам PHP скрипт работает короткое время.

>>687504

По идее, ты должен изучить хотя бы в общих чертах, что такое Homestead, а также освоить основы командной строки в Линуксе.

> Это все это альтернативный вариант установки?



Похоже, что так.

> Но где мне найти то что залилось?



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

В крайнем случае, найти файл Homestead можно командой линукса find / -name 'Homestead.yaml'
523 1687662
>>687565
Через боль, страдания, слезы и гайд с ютуба я таки все это дело запустил, установил лару и все это завелось.

Не очень понимаю как это все в кучу работает, и зачем там вагрант, буду читать
524 1687750
>>687662
нахер тебе вагрант?
525 1687819
>>687750
это к слову.
Вообще я о ларавел и о хомстед.
До этого просто пробовал развернуть ларавел, как допустим приложуху на слим.
Но чет не разернулось нихуя нормально или развернулось но что то постоянно глючило, я забыл уже.
Тут хоть работает.
526 1687940
>>687819
п.с. буду вкатываться в ларочку.
Скажите ларакаст - это платные курсы? Или бесплатные ? На ютубе нашел канал Laracasts -
https://www.youtube.com/channel/UC3s5g0_lyZYOu8Jjo27udAQ/featured
Это оно?
527 1687949
>>687819
у меня на винде все норм работает
528 1687954

>

529 1687956

>Мы должны сконцентрироваться на улучшении поддержки долгоживущей (long-running), асинхронной модели исполнения, ориентированной на микросервисы. Вероятно, не секрет, что одной из главных причин популярности Node.js является его умение очень эффективно обрабатывать огромное количество одновременных подключений, генерирующих относительно лёгкие запросы. Это хорошо соответствует особенностям современных микросервисных архитектур. Есть уже несколько проектов, которые реализуют в PHP аналогичную функциональность, например, ReactPHP и более свежий Swoole.



Но главная проблема в том, что большинство операций ввода-вывода в PHP не поддерживают асинхронное исполнение. Я считаю, нам нужно добавить как можно больше поддержки асинхронного ввода-вывода в различных расширениях и потоках, чтобы расширить круг задач, где имеет смысл применять инструменты типа Swoole. Точнее, нужно предложить авторам расширений механизмы, которые те могли бы использовать для реализации опциональной асинхронности своих расширений/функций, не делая всю работу самостоятельно. Мы уже провели некоторые исследования в этом направлении, и нужно сделать гораздо больше, но я оптимистично настроен. Возможно, для решения этой задачи мы возьмем libuv, и, возможно, перепишем или отрефакторим некоторые части системы PHP-потоков.
530 1687996
Нормально ли отдавать редирект в контроллерах?
Например по ид поста - отдавать редирект в тред, в соответствующем контроллере. Вообще есть ли с ним подводные камни которые стоит знать?
531 1688711
>>687949
Я на винде не смог руками собрать даравел. Поэтому пришлось хомстед ставить.
1589528133159.jpg28 Кб, 451x93
532 1688805
Анон, нужна помощь. Есть скрипт, который срабатывает каждые 5 сек, он добавляет в txt файл, с ограничением в 10 строк, определенный текст из постоянно обновляющегося $item. Но сейчас, он просто дублирует его на все 10 строк. Как сделать условие, чтобы одинаковый текст из $item не дублировался, а добавлялся лишь 1 раз? Код на пикрил
533 1688849
Помогите ответить на вопрос:
https://stackoverflow.com/questions/61760338/how-to-test-a-custom-laravel-console-command-without-of-installing-full-framewor

Как тестировать консольную команду Laravel, если я ее разрабатываю как пакет, то есть, фреймворк у меня не установлен и есть только в зависимости composer?

Да и вообще, вопрос не только про консольную команду. Как тестировать любую хуйню в ларавеле без инициализации самого ларавеля?
534 1688859
>>688805
Покажи как у тебя происходит запись в $item. Судя по тому что в скрине, ты пытаешься вложить массив под определённым ключём, и если у тебя массив $item добавляет что то новое в конец массива, а не в начало, то будет как у тебя. Варианта решения два:
Первый, в массив $item записывать данные в начало массива, что бы при этом в нём же изменялась нумерация. Второй с помощью for постоянно перебирать массив $item.
535 1688969
Наверное немного не по теме вопрос, но все же. А как ютуб отдает видео на клиент? Посмотрел хтмл, и там для видео такой урл "blob:https://рандомный урл". Погуглил, что такое blob, но ясно так и не стало. В чем преимущество такого подхода, а не, например, просто с сервера mp4 отдавать?
536 1689526
Извиняюсь за то что в пхп тред пишу. Но тут есть аноны которые в ноде разбираются. Столкнулся с такой странной штукой, которую я не понимаю.
Вот при таком конфиге:

const express = require('express');
const passport = require('passport'); //если закомментить - будет ошибка req.logout is not a function, а console.log(req.logout); вернет undefined

const app = express();
app.get('/', (req,res)=>{
_console.log(req.logout); //возвращает [Function]
_req.logout(); //откуда это блядство? Откуда этот метод. И как он тянется из passport
_res.end('end');
});

app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});

Аноны, разверните у себя такой конфиг, проверьте пожалуйста, кому не лень. req.logout - метод не стандартный, его нет в дефолтном объекте req. Как он тянется?
537 1689540
>>689526

>Как он тянется?


Через прототип, не?
538 1689568
>>689540

>Через прототип, не?


Ну технически то его можно подтянуть. Но как то странно что фремворк express захардкоден получается на либу passport. И по идее все что меняет объект запроса req должно подключаться в мидлвэйрах.
Может я ошибаюсь конечно. Но мне эта тема мозг вынесла.
539 1689576
>>689568

>фремворк express захардкоден получается на либу passport


Так-то наоборот, это passport зависит от express. Он отдельно никому не сдался без экспресса.

>все что меняет объект запроса req должно подключаться в мидлвэйрах


Не должно - у мидлвари другая задача.
540 1689608
>>689576

>>Так-то наоборот, это passport зависит от express.


Тут ты прав конечно, но я не о том.

>>Не должно - у мидлвари другая задача.


Дока;
Функции промежуточной обработки (middleware) - это функции, имеющие доступ к объекту запроса (req), объекту ответа (res) и к следующей функции промежуточной обработки в цикле “запрос-ответ” приложения. Следующая функция промежуточной обработки, как правило, обозначается переменной next.

Ну в контекте экспресс работа с req, res - одна из основных задач. Впрочем это не суть. Видимо это не я пизданулся, что у меня объекты методами просто так обрастают. Это express зачем то слегка отступил от своей парадигмы. Пасспорт меняет объект запроса без мидлвэйра, а сами фактом своего подключения к странице.
541 1689670
>>689608

Эта сомнительная "техника" называется Monkey-patching. В Руби он рейлс, по моему, тоже такое применялось, когда ты подключаешь одну библиотеку, то она меняет или добавляет что-то в другую. Это плохой подход, так как сильно запутывает восприятие кода и добавляет побочные эффекты.
542 1689761
У меня вопрос : Это можно посчитать решением ?https://paiza.io/projects/X0HSLZfAJv6azNVrW9TB4Q?language=php
Знаю что работает коряво, но я про принцип выделения ошибки...
543 1691404
>>688969
Копай в сторону HTTP Live Streaming и его аналогов
544 1692329
>>657272
Не слушай этого >>667623
Современный PHP - это Laravel и Symfony - в них собраны лучшие практики программирования на этом языке. Laravel по подходам ближе к Ruby on Rails, Symfony к Spring из Java. Берешь почти любой учебник по этим фреймворкам за последние 2-3 года и пролистываешь.
Насчет собесов. Сам искал работу миддлом в апреле в разгар коронавирусной истерии - не было ни одного вопроса по тонкостям ПХП, зато, например, почти везде и много спрашивали по СУБД (оптимизация запросов, индексы, объектно-реляционные СУБД, шардирование таблиц и т.д.). Так что налегать надо на фундаментальные знания в первую очередь, а не на ПХП как таковой.
545 1692333
>>657910

>какие подводные


Искать _продуктовую_ компанию, и всячески избегать аутсорс-шараги.
547 1692476
Пацаны, вы реально каждый раз перед именем переменной ставите знак доллара? Это же просто ахуеть до него тянуться
548 1692599
>>692476
Ты просто пишешь знак, а IDE тебе сразу предлагает все местные переменные в списке. Удобно.
549 1692711
>>692476
Что у тебя с пальцами? До всех скобочек (круглых, фигурных и квадратных) тянуться можешь, а до доллара, который прямо под уркой нет?
image.png4 Кб, 160x210
550 1692873
Иногда на новых серверах при вставке в базу появляется ошибка что-то типа "у поля нет значения по умолчанию".

Раньше просто поле пустое при вставке оставалось. Какого хуя на одних серверах вставляется нормально, а на других нет?

Ладно, х с ним. Сделал по умолчанию Null. При клике в поле там ниче нет, но так выводится Null серым цветом, пик.

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

= 0 не работает
='' тоже
= 'Null' тоже

Что делать и как выборку сделать?
551 1693031
>>692873
Используй IS NULL. Опережая твой будущий вопрос IS NOT NULL.
552 1693099
В php есть аналог функции ucfirst для кириллицы?Или только примерно таким образом :
mb_internal_encoding("UTF-8");
function mb_ucfirst($text) {
return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1);
}
echo mb_ucfirst("тест\n");
?
553 1693217
Как должно выглядеть по канону форматирование кода? Все эти скобочки, условия и т.д. А то меня всю жизнь преподы за странный формат доёбывали. Мне нравится как Visual Studio скобочки расставляет сам по себе, а если на лампочку нажать то вообще красоту делает. Оказалось что PHPStorm так не умеет. Да и вообще во всем проигрывает этому поделию от мегакорпорации Microsoft по понятным причинам, но мог хотя бы сразу подсказывать что делает функция, а то приходится сначала выбрать в сплывающем окне непонятную функцию, потом нажимать ctrl+shift+i и выискивать её назначение в комментариях. Охеренная фича была для ньюфага, больше всего спасала с посторонними библиотеками.
554 1693224
>>692476
Двачую, я циклы for после С-подобных всё еще с первого раза правильно ввести не могу, всегда перед одним из трех $i забуду поставить доллар.
555 1693430
>>693217
Окей, сорри за тупой вопрос, не отвечайте, в глаза ебусь. Посмотрел на первый пост, всё нормально у меня с форматом пока что. И приношу свои извинения PHPStorm, автоформат у него оказывается есть. И что бы я без двачей делал?
556 1693910
Появился вопрос, гугл бессилен.
Скачал я с сервера папку с одним шаблоном сайта и это пиздец, но сейчас не об этом внезапно понял, что могу просто поисковиком винды находить код в файлах, а не просто файлы и папки, как обычно. Не так то проста эта функция, как кажется.
Искал я определённый кусок кода и не нашёл, хотя как выяснилось, код этот был. Был он в папке с пхп файлами, тип которых - исходный пхп файл. А вне этой папки были пхп файлы с типом пхп файл и в них можно было найти нужный код.
Что это за исходный пхп файл и что за нюансы с поиском его внутренностей? Это что-то с доступом связанное? Я
Целый рабочий день проебал в том числе из-за этого.
557 1693950
>>693910
Что за шизофазия, блядь? Поставь себе норм ide, git и не еби мозгу с файлами и их содержимым. Поисковик винды для поиска кода, охуеть вообще.
558 1694259
Сап. Такая проблема. Сделал панель, что при нажатии на кнопку выезжает слева на сайте. Хотел сделать как панель профиля пользователя. Но когда вставляю любой код на php (в данном случае на вывод из бд), у меня ломается код панели и кнопки не отображаются. Кнопки просто пропадают. В чем проблема?
559 1694295
>>694259

>В чем проблема?


Как минимум в смешении слоев логики.
Отдели View от общения с бд
560 1694380
Сап двоч. Можете посоветовать какую-то статью или объяснить как адекватно и бест практис работать с часовыми поясами в вебе? Например у нас типичный бложик, все даты создания постов я так понял лучше в UTC конвертить перед сохранением? И вопрос как их потом адекватно показывать клиенту. В жсе вроде есть toLocaleTimeString или что-то подобное, то есть браузер дает инфу о текущем часовом поясе клиента. На уровне пхп я так понимаю это сделать невозможно без каких-то хаков вроде проверки локации айпи или кук установленых жсом? И как тогда лучше всё это по дефолту показывать? Или предполагается что если у нас бложек "принадлежит" Москве (так решил клиент или разраб) то по дефолту мы время показываем тоже московское там?
15898318632190.webm8,8 Мб, webm,
848x432, 0:33
561 1694450
>>694259

>tovars

image.png70 Кб, 1441x531
563 1694497
анон, наставь на путь истины

Мне нужно сделать подачу заявления на сайте. Заявление сложное (заполняется на двух листах А4 мелким почерком)

Окно для заполнения я сделал. Все работает.

Но теперь возникла проблема - мне нужно чтобы оно распечатывалось в таком же виде как будто человек заполнял бумажную копию - то есть все форматирование должно быть идентично бумажному носителю (чтобы можно было электронную заявку распечатать и приколоть к делу)

Я конечно решил делать эту задачу через генерацию pdf (потому что pdf тоже нужен чтобы его в архиве хранить). юзаю fpsf

Но проблема с форматированием:
1) в итоге код - полное говно
2) приходится чуть ли не пипеткой отмерять координаты
3) все расползается по форме если вводится более длинные или наоборот более короткие данные

Есть какое-то решение? Блин просто это какой-то зашквар во времена адаптивных версток сидеть и руками набивать координаты для pdfки

(сразу, работаю в мухосрани за жалкие копейки, поэтому не придерайтесь к тому что не умею, вы за такую зп даже работать не будете)
564 1694498
>>694497
а еще самый зашквар что мне там еще и пробелами приходится отступы набивать.
565 1694686
>>694497
Ну так юзай другую либу. Есть либы, которые для форматирования CSS используют, типа https://github.com/dompdf/dompdf .
566 1694878
Пилю оффтоп-кулстори
нашел баг в телеге с секретными чатами, написал им. Баг пофиксят, а мне 500 евро за находку. Таки дела.
567 1695024
>>694878
Я бы говорил "Нам известна эта бага, мы ее фиксим."
568 1695036
>>695024
В интернетах читал, что они кладут хуй на баг репорты, но мой баг имеет некое отношение к приватности/безопасности. Наверное поэтому так срегагировали
569 1695607
>>694452
Моё увожение
570 1695893
>>694686
хм, попробую
571 1696212
>>694497

Есть простой вариант - использовать Knp snappy https://github.com/KnpLabs/snappy. Это библиотека, использующая утилиту wkhtmltopdf, которая (как очевидно из названия) конвертирует HTML в PDF.

Если бы этой библиотеки не было, то я бы посоветовал не копипастить одинаковый код, а сделать шаблон, например, в XML, в котором указываются размеры блоков, и свою систему расстановки этих блоков на странице. Но тут проще использовать wkhtmltopdf.
572 1696754
есть таблица mysqli и поле datetime в ней, нужно его достать и в пхп вставить в строку, как это сделать?
573 1696994
Что скажете за перспективы пыхи? В любом другом треде мне бы 9 из 10 человек сказали что перспективы отсутствуют, поэтому спрашиваю здесь. Сейчас по пыхе в два раза больше рабочих мест чем по любому другому ЯП, при этом если новичок спросит куда ему вкатываться - пхп не посоветует никто. По вашему мнению, будет ли дальше падать популярность этого языка? Не по экспертному мнению программистов, а вообще. Я ньюфаг, но такое ощущение что все другие программисты просто не любят пхп из-за сравнительной лёгкости вката и ограниченности его применения, из-за этого и не считают кодеров на пхп программистами и именуют их макаками. Поясните если понял что-то не так.
574 1697060
>>696994
Смотря что понимать под перспективами. Есть перспектива клепать онлайн магазины всю жизнь. Пхп это дорога в один конец. Да на хлеб с маслом и даже икрой хватит, но чем дальше, тем меньше шанс перепрыгнуть на другой язык.
Че думаешь все пхп макаки вдруг резко подорвались на го? В го треде спросишь, так вакансий с гулькин хуй, а когда я ходил по пхп собесам, на каждом сука заходила речь про го. Это как последняя соломинка, если тебе тридцать, начать писать реальный софт, а не формы верстать.
Тут даже похуй на развитие языка какое-то. Асинхронность, многопоточность, дженерики, ридонли поля, функциональщина, пока это все введут пройдет еще пять лет. А в это время можно хуярить на ссаной джаве, делая плюс минус то же что и на пхп, но с комфортом и реальными перспективами.
575 1697273
>>696994
Плохие перспективы у пыхи. Иди лучше в джавускрипт или питон.
576 1697541
>>697273

> джавускрипт или питон


по сути,не сильно лучше
577 1697597
>>697541
Ну вкатывайся нахуй тогда - там тебе гораздо лучше будет.
Тоже мне ценитель нашёлся.
578 1697789
>>697060

>Асинхронность


есть

>многопоточность


не нужна, когда есть php-fpm

>дженерики


почти не нужны, но скорее всего будут в 8

>ридонли поля


по большей части не нужны, но может и добавят в 8

>функциональщина


в пыхе функциональщины больше, чем в gовне
579 1697849
>>697789

>есть


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

>не нужна, когда есть php-fpm


Для вывода HTML конечно не нужна, мистер формошлеп

>дженерики почти не нужны


>ридонли поля по большей части не нужны


Ну тут все ясно. Нахуй я распинаюсь перед долбаебом. >>696994 вот твоя перспектива если выберешь пыху
580 1697855
>>697849

>пока восьмая версия не выйде


ее не будет,инфа 100
581 1697870
>>697849
А я например вообще питонист. И все эти тухлые претензии к пыхе не то что плесенью поросли, а уже просто говном. Годы идут, а банальные вбросы не мегяются. У того же питона при этом насущных проблем, а особенно в вебе, куда больше.
Ебанутые совершенно стандарты и пережиток прошлого - раз пыха значит плохо, а не пыха - хорошо.
582 1697875
>>697870
Так пиши на пыхе, хули ты за питон свой схватился. Щас за недельку синтаксис подучишь и будешь сайты делать. Увлекательнейшее занятие, скажу вам, хуярить сайты на пхп. Бросай свой тухлый питон и давай к нам, как раз нужно капчу в поле регистрации добавить.
583 1697881
>>697060

На Го писать сомнительное удовольствие. Симфони нет, Доктрины нет, не знаю, есть ли IDE с автодополнением и визуальный отладчик. Нет сотен библиотек на все случаи жизни.
584 1697887
>>697881
Я и не говорил, что писать на нем заебись, го кал тот еще. Просто рассказал про тренд. В ВСЕХ конторах, в которых я был пытаются уйти от пыхи на го.
585 1697891
>>697875
Ну ок, отвечу. До питона я 4 года работал на пхп. На питоне 2 года пока что. Чем дальше, тем больше разочаровываюсь. По этой же причине кажется развитие пхп более правильным.
Притом я не говорю, что питон сам по себе говно, только что он хуже для бека по сравнению с пхп. Но, справдлевости ради, хуже пыхи по беку вообще многие. Все таки пых именно по беку развивается без отвлечения на что-либо еще пока что.
Хотя кто я такой, чтобы с маэстро на дваче спорить.
>>697887
Го пиздато закрывает узкие места, чувствительные к производительности. Сама же бизнес-логика на го будет куда сложнее писаться, чем на пхп. Кроме того логика не сильно чувствительна к производительности, а значит часто пыху оставляют в роли монолита с бизнес логикой.
586 1697899
пых
какое прикольное погоняло
587 1697900
>>697875

>Увлекательнейшее занятие, скажу вам, хуярить сайты на пхп


Тебе не за развлечение платят, а за то, что ты кабанчиковы хотелки исполняешь.
Если бы ты хоть раз в жизни работал, то знал бы это, борщехлёб. Вас по этим постам на раз выкупают, дебилов необучаемых.
588 1697904
>>697891

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



Все так.
589 1697906
>>697887
Никто не уходит с пыхи на го, как сказал анон выше - на го переписывают логику, к которой есть высокие требования по производительности. Писать онли на го бизнес-логику - это много гемора, там ведь даже нормальной ОРМ нет.
590 1697934
>>697906
С пыхи уходят программисты, а не компании. Легаси говно на пыхе остается конечно, и остается пара додиков на поддержке. Те кто тему с го в компании продавал быстренько перескакивают на него полностью и на пхп болше не пишут ни строчки.
image.png3 Кб, 357x81
591 1697980
Анон который спрашивал за перспективы здесь. Забавная у вас тут атмосфера, ничего не скажешь. Насчет того, почему я сейчас пытаюсь что-то делать на пыхе и задаюсь такими вопросами: к удивлению я последние несколько лет кручусь возле всего этого дерьма, но все еще совсем ничего не понимаю в современном рынке айти. Не понимаю какие существуют стеки и кто чем занимается. Ориентируюсь на существующие вакансии и их описание: выглядит на то, что питон это в основном датасаенс, машинное обучение, нейросети, ИИ и т.д. Я не такой амбициозный и не настолько в себя верю чтобы в это вкатываться, хотя это однозначно самая перспективная на многие года отрасль. Немного знаю Java мне кажется она устарела, хотя могу ошибаться конечно и сишарп, не представляю что на этих языках делают в реальной жизни, вроде бы как годами поддерживают и допиливают всякие мифические проекты. Но самая большая загадка для меня - это яваскрипт. Когда вижу код на яваскрипте мне хочется плакать, самый ебанутый дизайн и синтаксис который только можно представить. Почему-то на яваскрипте делают все что только можно: Front-End, Back-end, десктопные приложения, даже целые операционные системы и многое другое, вроде даже микроконтроллеры на нем программируют. Сайты верстать я в гробу видал, как то пробовал себя в этом, понял что это пиздец какое нудное дело, мешки таскать и то интереснее, ну а всё остальное на яваскрипте писать мне кажется извращением, буду рад если объясните почему это не так. Так вот, потому решил учить пыху. Так я хотя бы на 100% знаю на что подписываюсь - писать до конца жизни бык-енд онлайн-магазинам. Надеюсь что это окажется менее нудным занятием, чем верстка, в противном случае вернусь к сишарпу наверное.
592 1697987
>>697980
Да пиши бек к чему захочешь на пыхе, хоть к шутерам. Но работ много именно на говномагазины, исторически так сложилось.
593 1697990
>>697980

>Java


новое,не всегда лучше.
ну возьми котлин или скалу,это надстройка над жвм
594 1698000
>>697980

>пик


Не забывай что пыхорынок это чаще всего два стула, сидеть в студии 10 человек и на цмсоговне собирать сайты за неделю(зп 500-700 баксов), или в средней-большой компании делать то, что обычно делают на жаве, но походу в своё время только пыхомакакены были. Есть еще прослойка между этими двумя стульями, это сидеть в студии 10 человек, только у вас клиенты не гали с улицы а джоны из Австралии, которым ты пилишь говно на ларавеле уже не за неделю, а хотя бы пару месяцев а то и год, по мне это самый удачный стул. Люблю просто говно на ларке писать, приятное с полезным так сказать
595 1698007
>>698000
еще на рельсах для Сев Америки
596 1698010
>>698000
Современные проекты на пыхе да при знающих тему руках получаются хорошими прям. Ну а легаси оно и в африке легаси, на то время все это было нормой, а расплачиваться иногда приходится сейчас.
597 1698045
>>697934
Опять теплое с мягким путаешь. Я дома пишу вообще на эликсире, но работу с ним не найду, да и не хочу, меня и на пыхе неплохо кормят. Потому что проганье для себя и проганье для компании за деньги - это как бы блять совсем разные вещи. Пыха отлично подходит там, где джава оверхед, и никто с нее не уйдет, язык активно развивается, Ларка - лучший веб-фреймвок на данный момент, придется просто это принять.
598 1698050
>>698045
а как же симфони ?
599 1698052
>>698050
Симфони - это корпоративный уровень для больших проектов с длительной поддержкой аля Спринг на Джаве, не всем он нужен.
600 1698072
>>698000
Был на всех трех видах работ, самый спокойный имхо второй, т.е. продуктовая компания с отлаженных рабочим процессом, скрамами, митингам и всем этим говном. Хоть я щас и зарабатываю немного меньше, чем на аутсорсе, зато больше нет задач, которые надо было сделать вчера, жестких дедлайнов, текучки в команде и просто сильно долбоебистых коллег-говнокодеров, которых никто палкой не гонит, потому что они таски быстрее всех закрывают. Ищите продакт-компани короч.
image.png10 Кб, 611x85
601 1698415
>>698000

>или в средней-большой компании делать то, что обычно делают на жаве, но походу в своё время только пыхомакакены были


Это как? Типо поддерживать и допиливать фичами существующие сайты?

>Есть еще прослойка между этими двумя стульями, это сидеть в студии 10 человек, только у вас клиенты не гали с улицы а джоны из Австралии, которым ты пилишь говно на ларавеле


Возможно большинство просмотренных мною вакансий - именно такие. Ну или второго типа. Практически везде аутсорс, просят инглиш на высоком уровне, СУБД и ларавел. Symphony только разок видел в требованиях, про html-css-javascript для джуна всегда пишут только что will be a plus. Ну а если на цмсговне собирать то вакансия чаще всего так и зовется - менеджер по работе с wordpress вордпресс-разработчик, я их и не просматривал. Кстати можешь за этот ларавель рассказать? А то похоже в шапке о нем ни слова, а я еще особо не интересовался. Конечно могу нагуглить информацию что это охуенный фреймворк с пиздатыми функциями, но мне кажется что ты можешь рассказать что-то более интересное, даже в одном предложении.
602 1698446
>>697900
Нихуя ты подорвался. Ебать ты меня выкупил, никогда я не работал. Хотя подожди, это ведь ты конч прикован к уебищной работе и кабанчикам с их хотелками. Где родился там и пригодился, да?
603 1698493
>>698446

>прикован к уебищной работе


А, ты ты идейный РНН-бич. Так-то я мог бы и догадаться по твоим высерам-постам. Такую хрень только такие бичи и пишут: про сайтики, про вкат за 3 месяца на одном синтаксисе.
Вангую, что ты даже не программист, а залётное быдло из /б.
hqdefault.jpg17 Кб, 480x360
604 1698526
>>698493
Нихуя предьявы. Ну тогда испытай меня. Спроси то, что знать может только пхп макака.
605 1698548
>>698526
В гугл каждый бич нынче умеет, а у пхп довольно активное коммьюнити и загуглить проще простого.

Ты себя выдал вскукареками про вкат за 3 месяца. Пиздеть - не мешки ворочать и от знания синтаксиса до сносно работающего приложения ещё минимум полгода. Хотя тебе и все 2 года будет мало.
606 1698551
>>698548
Бля, ну не сливайся ток. Можешь на гитхабе че-нить написать, а я ревью сделаю или пул реквест.
Хуй знает где ты прочитал про три месяца, я советовал питухонисту недельку синтаксис подучить и хуярить сайты.
607 1698553
>>698551

>не сливайся


Ясн. Школотраль.
608 1698554
>>698553
Ну хочешь я че-нить напишу, а ты поревьюишь. Че ты, нормально же общались.
609 1698762
laravel
610 1699148
Помогите нубу 611 1699632
Надо сделать так, чтобы выводилось случайное слово из каждого массива. В конечном итоге должен выйти стишок. Я пытался, но выводит у меня просто (array).

<?php

error_reporting(-1);

$word1 = array('Чудесных', 'Суровых', 'Занятных', 'Внезапных');
$word2 = array('слов', 'зим', 'глаз', 'дней', 'лет', 'мир', 'взор');
$word3 = array('прикосновений', 'поползновений', 'судьбы явлений',
'сухие листья', 'морщины смерти', 'долины края', 'замены нету',
'сухая юность', 'навек исчезнув');
$word4 = array('обретаю', 'понимаю', 'начертаю', 'закрываю', 'оставляю',
'вынимаю', 'умираю', 'замерзаю', 'выделяю');
$word5 = array('очертания', 'безысходность', 'начертанья', 'смысл жизни',
'вирус смерти', 'радость мира');
612 1699806
>>656450 (OP)
Ты работаешь? Как начать фрилансить на PHP? На биржах или CMSки пилить предлагают или овердохуя разных фреймворков. Как лучше поступить, изучить 1 популярную цмску и 1 фрейморк, и где брать заказы?
613 1699957
>>699806

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

Многим проще искать удаленную работу, или долговременные проекты, а не разовые заказы.

Если у тебя ноль опыта, тебе надо быть менее придирчивым и изучать не "одну CMS-ку", а посмотреть, что востребовано и изучать все это. CMS, как правило, проще фреймворков.

>>699632

"array" пишется, если ты пытаешься вывести массив с помощью echo. Она выводит только строки и числа. но ты можешь вывести массив с помощью var_dump() или print_r().

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

$value = $array[$key];

Если ты не понимаешь, что такое ключ и значение, перечитай начало урока, где это поясняется.
614 1699975
>>699957

>Если у тебя ноль опыта, тебе надо быть менее придирчивым и изучать не "одну CMS-ку", а посмотреть, что востребовано и изучать все это. CMS, как правило, проще фреймворков.


Ты толком не ответил. За двумя зайцами погонишься... Это я про CMS. Их же много популярных. В каждую сильно не углубишься. Думаю лучше одну популярную хорошо знать, чем все, но поверхностно. Я понимаю все минусы и риски фриланса. Но мне нужно начать зарабатывать еще вчера. Работа в офисе мне не подходит. На удаленку без опыта не очень берут. Поэтому остается фриланс.

У тебя есть опыт фриланса? Меня интересует какой стек для фриланса прокачивать. Фреймворки, если да то какие. Или CMS. Мне не важно что изучать, главное чтобы был наименьший порог входа. Чтобы начать что-то зарабатывать, и попутно стремиться уже к работе в компании. Жрать извини хочется каждый день.

У меня нет времени искать постоянную работу. Это нужно хорошее резюме, нормальные проекты чтобы не стыдно показать было, проходить овердохуя собеседований. Боюсь что моей мотивации на это не хватит. Если бы я хоть что-то уже зарабатывал, это бы мотивировало. А так руки опускаются. Хер знает когда я смогу в компанию устроится. Как то так в общем.
615 1699977
>>699975

>главное чтобы был наименьший порог входа


Даже не так. Что не порог входа был низкий, а чтобы можно было без проблем заработать копейку не выходя из дома в любой момент. Будут деньги тогда я смогу нанять профи ментора для прокачки.
616 1699978
>>699977
Вордпресс, на еду и даже больше хватит, только это путь в никуда
617 1700005
>>699978
Лучше синица в руках чем журавль в небе. Лучше начать зарабатывать прямо сейчас и попутно прокачиваться до следующего левела, чем сидеть нищуком в надежде на светлое будущее. Я знаю что CMS это путь бесперспективный, но мне нужны деньги прямо сейчас. Чтобы прокачаться нужны деньги, нужно же кушать хотя бы пару раз в день, покупать что нужно, например новый комп по мощнее, чтобы нанять ментора тоже нужны деньги, понаехать в ДС в конце концов, для это нужно дохера денег.
image.png5 Кб, 468x140
618 1700152
Сап, двач. Помогите нюфагу пожалуйста, скажите, где я обосрался?

$sql = "INSERT INTO Clients (SURNAME, NAME, PATRONYMIC, PHONE_NUMBER) VALUES ('$surname', '$name', '$patronymic', '$phone_number')";
$result = mysql_query("SELECT 'Id_client' FROM Clients WHERE 'Phone_number' = '$phone_number'");

if (mysqli_query($conn, $sql)) {

echo "<h1><center>Заказ добавлен. N ". mysql_result ($result) . "!</h1></center> " ;
}
else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);

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

Хелп плиз
619 1700167
>>700152

Ты взял 'Id_Client' в кавычки, и MySQL понимает это буквально, как строку, а не название поля.

Также, у тебя в коде SQL инъекция, почитай это https://github.com/codedokode/pasta/blob/master/security/sql-injection.md

Также, почитай рекомендации по поводу того, как выбирать названия таблиц и колонок: https://www.sqlstyle.guide/ru/
620 1700197
>>694259

Не стоит смешивать логику получения данных и логику вывода данных в HTML. Почитай про шаблонизацию: https://github.com/codedokode/pasta/blob/master/php/templates.md

Код ломается скорее всего оттого, что в нем происходит ошибка. Посмотри логи ошибок или включи отображение ошибок, поставив display_errors=on в php.ini.

>>693910

Во всех нормальных редакторах и IDE есть "поиск по файлам". Он гораздо удобнее.

>>693099

Нету, надо писать свою функцию.
621 1700212
>>692873

NULL обозначает "неизвестно". Потому эти сравнения возвращают тоже NULL, а не TRUE:

0 = NULL - мы сравниваем 0 с неизвестным числом и не знаем, что в итоге получим, потому получается NULL
'' = NULL - тоже самое
NULL = NULL - мы сравниваем 2 неизвестных значения и не знаем, равны они или нет, потому сравнение вернет NULL

Ты можешь увидеть, что вернет сравнение, выполнив запрос SELECT без FROM, например:

SELECT NULL = NULL

Тебе нужен IS NULL. SELECT NULL IS NULL вернет 1.
622 1700248
>>689761

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

>>688969

Ютуб скачивает видео кусочками определенной длины и их воспроизводит. Это дает ему такие плюсы:

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

Можешь почитать про Media Source Extensions, начиная отсюда: https://developer.mozilla.org/en-US/docs/Web/Guide/Audio_and_video_delivery#Media_Source_Extensions_MSE
623 1700261
>>688849

Я не знаю про Ларавель, но команды там напоминают Симфониевские команды. Ты не можешь в тесте просто создать объект команды, создать объекты Input и Output, вызвать run или execute, и проверить что то, что ты хотел сделать, сделано?

>>687996

Редирект обычно делают, когда какой-то раздел переехал на новый адрес. Или для реализации коротких ссылок. В случае с тредами и постами - не логичнее ли сразу формировать правильную ссылку на нужный тред, а не заставлять клиента делать лишние запросы?
624 1700264
что значит,что симфони корпоративная?
625 1700270
>>700264

Корпоративные/энтерпрайзные приложения - это приложения, которые развиваются в течение долгого времени большой командой и обладают высокой сложностью.
image.png18 Кб, 651x323
626 1700330
>>700167

>Ты взял 'Id_Client' в кавычки, и MySQL понимает это буквально, как строку, а не название поля.



убрал кавычки, но ничего не поменялось

C инъекцией и неймингом постараюсь разобраться, но сначала хотелось бы с этим решить. Пикрил тоже не работает, сука ((
627 1700419
>>700152
Ты обосрался когда намешал все в кучу.
Во первых сначала подготовь запросы, убедись что все в них работает. https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=556ec70420cf4a7b466236ffe6aa0dbf
Во вторых чекай актуальность своих инструментов. Какой-то блядь mysql_result замшелый, пиздец вобщем. Используй либо напрямую PDO, либо какую нибудь ORM, желательно доктрину, но можно и попроще. Версию пхп минимум 7.1, а лучше 7.4
В третьих не экономь на переменных и функциях и давай человекочитаемые названия. Хуй проссышь где у тебя какой запрос и результат. Помести результат запроса в переменную, а вывод делай отдельной функцией. Примерно так должен выглядеть твой код https://3v4l.org/EFcTC, в идеале это должно быть ООП.
В четвертых спизди уже себе пхпшторм, он сильно облегчит работу и многие ошибки сразу подсветит.
Ну и проделав все это станет понятно, что ты блядь сначала делаешь запрос на получение данных $result = mysql_query("SELECT 'Id_client', а потом на вставку if (mysqli_query($conn, $sql)) {.
628 1700456
>>700419
спасибо, братик. я скрафтил какую-то залупу, она вроде пока работает. если все сломается опять, то воспользуюсь твоим кодом я слишком тупой, а он кажется сложным на первый взгляд
дай бог здоровья тебе
629 1700507
https://informatics.mccme.ru/mod/book/view.php?id=815
Как это развидеть? До этого все задачи решал в хард моде достаточно быстро и без заглядываний под спойлера, но сейчас уже полчаса втыкаю по сути в готовое решение и понимаю что ничего не понимаю.
630 1700610
ОП, начал делать задачу про файлообменник (уже давно, с паузами). Посмотри, пожалуйста, промежуточный вариант.

https://github.com/deadj/uppu
631 1701418
PHP на десктопе
Вышло ли что-то годное, чтобы пилить гуишные проги на пхп. Либо в крайнем случае - "консольные".

Помню в 2013 можно было через .bat запускать *.php файлы без сервера. Было удобно, что не нужно изучать новый язык программирования, когда тебе просто нужно порезать текстовый файл на куски, или сделать перестановку строк.

А что сейчас?
632 1701606
>>701418
PHP не для десктопа.
Возьми c#/js
633 1701682
>>700248
Спасибо за ответы.

Кто-нибудь может оценить задачу на переворачивания текста?
https://paiza.io/projects/s8B0SyRLZ982NbIPTtdUEQ?language=php
634 1701705
пхп использует одно ядро процессора?
635 1701952
>>700507

Это не так сложно. Динамическое программирование - это подход, когда мы сложную задачу раскладываем на набор простых. То есть, чтобы определить, как выдать сумму в N рублей, мы определяем, как выдать сумму в N-k рублей, и добавляем банкноту номиналом k, чтобы получилось ровно N рублей. Чтобы найти, как выдать сумму в N-k рублей, мы добавляем банкноту номиналом l к сумме в N - k - l рублей. И так, пока не дойдем до нуля, когда мы получим результат.

Если посмотреть внимательно, то нам придется сделать не более N * M действий, где N - требуемая сумма, M - число номиналов банкнот.

Ну например, у нас есть банкноты номиналом 10 р, 6 р (много) и 1 р (только 1 штука). Нам надо выдать 12 р. Жадный алгоритм тут не сработает - он возьмет 10 р и запнется, так как не хватает однорублевых купюр. Используя динамический алгоритм, мы можем сделать это 3 способами:

- добавить 1 р к комбинации на 11 р
- добавить 6 р к комбинации на 6 р
- добавить 10 р к комбинации в 2 р

В свою очередь, получить 11 р тоже можно тремя способами:

- добавить 1 р к 10 р
- добавить 6 р к 5 р
- добавить 10 р к 1 р

И так далее, пока мы не дойдем до нуля. Так мы получим комбинации вида 10 + 1 + 1 (невозможна, так как не хватает однорублевых купюр), 6 + 6 (возможна), 6 + 1 + 1 + 1 + 1 + 1 + 1 (невозможна) и так далее.

Если рисовать на бумаге возможные варианты решения, то мы получим "дерево": от суммы в 12 р отходят 3 ветки (к суммам в 11, 6 и 2 р), от каждой из них тоже отходит по несколько веток. Попробуй это нарисовать, так, чтобы между вершинами дерева суммы менялись на одну купюру.

У меня получился такой рисунок (он нарисован только частично): https://dreampuf.github.io/GraphvizOnline/#digraph G { 11 -> 12 [label="+1"] 6 -> 12 [label="+6"] 2 -> 12 [label="+10"] 10 -> 11 [label="+1"] 5 -> 11 [label="+6"] 1 -> 11 [label="+10"] 5 -> 6 [label="+1"] 0 -> 6 [label="+6"] 1 -> 2 [label="+1"] 0 -> 1 [label="+1"]}

Если идти от 12 к 0, против стрелок, рано или поздно мы дойдем до нуля, и получим ответ. Либо поймем, что ответа нету. Вершин не более N, в каждую вершину ведет не более M стрелок, значит нам надо сделать максимум N * M шагов.

Чтобы реализовать это в программе, мы можем использовать рекурсию.

Рекуррентная последовательность - это последовательность, где следующий член вычисляется из предыдущего, вроде x(n) = x(n-1) + 1, x(0) = 0.

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

Вообще, динамическое программирование - не единственный способ. Еще можно решать задачу "в лоб" - перебором всех возможных комбинаций банкнот, пока не получим нужную сумму. Тут, правда, количество действий может оказаться большим: a * b * c * d ... , где a, b, c, d, ... - количества банкнот каждого номинала.

Если что-то непонятно в решении, задавай уточняющие вопросы.
635 1701952
>>700507

Это не так сложно. Динамическое программирование - это подход, когда мы сложную задачу раскладываем на набор простых. То есть, чтобы определить, как выдать сумму в N рублей, мы определяем, как выдать сумму в N-k рублей, и добавляем банкноту номиналом k, чтобы получилось ровно N рублей. Чтобы найти, как выдать сумму в N-k рублей, мы добавляем банкноту номиналом l к сумме в N - k - l рублей. И так, пока не дойдем до нуля, когда мы получим результат.

Если посмотреть внимательно, то нам придется сделать не более N * M действий, где N - требуемая сумма, M - число номиналов банкнот.

Ну например, у нас есть банкноты номиналом 10 р, 6 р (много) и 1 р (только 1 штука). Нам надо выдать 12 р. Жадный алгоритм тут не сработает - он возьмет 10 р и запнется, так как не хватает однорублевых купюр. Используя динамический алгоритм, мы можем сделать это 3 способами:

- добавить 1 р к комбинации на 11 р
- добавить 6 р к комбинации на 6 р
- добавить 10 р к комбинации в 2 р

В свою очередь, получить 11 р тоже можно тремя способами:

- добавить 1 р к 10 р
- добавить 6 р к 5 р
- добавить 10 р к 1 р

И так далее, пока мы не дойдем до нуля. Так мы получим комбинации вида 10 + 1 + 1 (невозможна, так как не хватает однорублевых купюр), 6 + 6 (возможна), 6 + 1 + 1 + 1 + 1 + 1 + 1 (невозможна) и так далее.

Если рисовать на бумаге возможные варианты решения, то мы получим "дерево": от суммы в 12 р отходят 3 ветки (к суммам в 11, 6 и 2 р), от каждой из них тоже отходит по несколько веток. Попробуй это нарисовать, так, чтобы между вершинами дерева суммы менялись на одну купюру.

У меня получился такой рисунок (он нарисован только частично): https://dreampuf.github.io/GraphvizOnline/#digraph G { 11 -> 12 [label="+1"] 6 -> 12 [label="+6"] 2 -> 12 [label="+10"] 10 -> 11 [label="+1"] 5 -> 11 [label="+6"] 1 -> 11 [label="+10"] 5 -> 6 [label="+1"] 0 -> 6 [label="+6"] 1 -> 2 [label="+1"] 0 -> 1 [label="+1"]}

Если идти от 12 к 0, против стрелок, рано или поздно мы дойдем до нуля, и получим ответ. Либо поймем, что ответа нету. Вершин не более N, в каждую вершину ведет не более M стрелок, значит нам надо сделать максимум N * M шагов.

Чтобы реализовать это в программе, мы можем использовать рекурсию.

Рекуррентная последовательность - это последовательность, где следующий член вычисляется из предыдущего, вроде x(n) = x(n-1) + 1, x(0) = 0.

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

Вообще, динамическое программирование - не единственный способ. Еще можно решать задачу "в лоб" - перебором всех возможных комбинаций банкнот, пока не получим нужную сумму. Тут, правда, количество действий может оказаться большим: a * b * c * d ... , где a, b, c, d, ... - количества банкнот каждого номинала.

Если что-то непонятно в решении, задавай уточняющие вопросы.
636 1702034
>>700610

Ты пишешь код контроллера и в коллбеках в index.php, и в отдельных классах. На мой взгляд, это не имеет смысла и надо сразу ставить твои контроллеры как обработчики. У контроллеров есть зависимости (которые ты передаешь в конструктор), потому логичнее всего сделать так:

- зарегистрировать контроллеры как сервисы в контейнере Slim
- указать их в качестве обработчиков. Это описано тут: http://www.slimframework.com/docs/v3/objects/router.html#container-resolution

Сейчас модно в качестве имени сервиса использовать имя класса. То есть твой код будет выглядеть как:

$container[MainCtrl::class] = ....;
$app->get('/', MainCtrl::class . ':indexAction');

Либо же ты можешь использовать тот факт, что Слим может сам создать объект, передав контейнер в конструктор, и тебе остается написать лишь:

$app->get('/', MainCtrl::class . ':indexAction');

А если в твоем контроллере всего одно действие, ты можешь использовать "invokable class" отсюда http://www.slimframework.com/docs/v3/objects/router.html#using-an-invokable-class и писать просто:

$app->get('/', MainCtrl::class);

Также, перечитай урок по Dependency Injection, если забыл, что это такое.

> $app->get('/{nameId}'


Это не очень удачный URL, так как он конфликтует с другими URL.

dbConnect.php можно ликвидировать и перенести его в коллбек контейнера.

Конвертировать видео лучше бы в фоне, так как это может занять время. Для того, чтобы это сделать, нужна очередь задач. Ты лишь постишь задачу в очередь, а фоновый процесс подхватывает ее и обрабатывает видео. Попробуй с этим разобраться. Для начала можно взять библиотеку вроде https://github.com/anorgan/QuTee с бекендом на MySQL, а для высоконагруженных систем используют очереди в Redis или RabbitMQ.

В README надо написать про ffmpeg.

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

> preg_replace('/.*[.]/', '', $uploadedFile->getClientFilename(


Это лучше вынести в функцию с понятным названием.

> if (preg_match('/[.]php$/', $link)) {



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

> (trim($_POST['name']))


Надо использовать объект request.

https://github.com/deadj/uppu/blob/master/src/Models/MediaInfo.php

Здесь вместо массивов можно было бы попробовать сделать классы, для разных видов файлов, вроде VideoParams, AudioParams итд.

Размер файла можно определить встроенной функцией PHP, не прибегая к id3.

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

> $statement = $this->pdo->prepare("SELECT id FROM files WHERE nameId = :nameId");



Используй lastInsertId().

> foreach ($filesId as $id) {


> $filesArray[] = $this->filesTable->getFileThroughId(intval($id));



Запросы в цикле - неэффективно, лучше использовать 1 запрос с WHERE id IN (...).

> private function convertCommentsObjectToArray


Вообще, для преобразования объекта в массив (и обратно) есть библиотеки вроде JSMSerializer. Может, она тебе тут пригодилась бы?

Сохранение ошибок конвертации в лог можно сделать функцией error_log().

> <script type="text/x-template" id="templateReplyComment">



Кстати, для новых браузеров доступен тег <template>. Но script, конечно, лучше поддерживается.

Для ограничения текста в поле есть атрибут maxlength.

> <a href="/"><h1>


Логичнее вкладывать строчный тег в блочный, хотя новый стандарт уже позволяет вкладывать блоки внутрь <a>.

> var date = document.createElement('h5');


> date.innerHTML = commentsList.date;


Тут нужно использовать шаблоны. Как тут править верстку?
636 1702034
>>700610

Ты пишешь код контроллера и в коллбеках в index.php, и в отдельных классах. На мой взгляд, это не имеет смысла и надо сразу ставить твои контроллеры как обработчики. У контроллеров есть зависимости (которые ты передаешь в конструктор), потому логичнее всего сделать так:

- зарегистрировать контроллеры как сервисы в контейнере Slim
- указать их в качестве обработчиков. Это описано тут: http://www.slimframework.com/docs/v3/objects/router.html#container-resolution

Сейчас модно в качестве имени сервиса использовать имя класса. То есть твой код будет выглядеть как:

$container[MainCtrl::class] = ....;
$app->get('/', MainCtrl::class . ':indexAction');

Либо же ты можешь использовать тот факт, что Слим может сам создать объект, передав контейнер в конструктор, и тебе остается написать лишь:

$app->get('/', MainCtrl::class . ':indexAction');

А если в твоем контроллере всего одно действие, ты можешь использовать "invokable class" отсюда http://www.slimframework.com/docs/v3/objects/router.html#using-an-invokable-class и писать просто:

$app->get('/', MainCtrl::class);

Также, перечитай урок по Dependency Injection, если забыл, что это такое.

> $app->get('/{nameId}'


Это не очень удачный URL, так как он конфликтует с другими URL.

dbConnect.php можно ликвидировать и перенести его в коллбек контейнера.

Конвертировать видео лучше бы в фоне, так как это может занять время. Для того, чтобы это сделать, нужна очередь задач. Ты лишь постишь задачу в очередь, а фоновый процесс подхватывает ее и обрабатывает видео. Попробуй с этим разобраться. Для начала можно взять библиотеку вроде https://github.com/anorgan/QuTee с бекендом на MySQL, а для высоконагруженных систем используют очереди в Redis или RabbitMQ.

В README надо написать про ffmpeg.

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

> preg_replace('/.*[.]/', '', $uploadedFile->getClientFilename(


Это лучше вынести в функцию с понятным названием.

> if (preg_match('/[.]php$/', $link)) {



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

> (trim($_POST['name']))


Надо использовать объект request.

https://github.com/deadj/uppu/blob/master/src/Models/MediaInfo.php

Здесь вместо массивов можно было бы попробовать сделать классы, для разных видов файлов, вроде VideoParams, AudioParams итд.

Размер файла можно определить встроенной функцией PHP, не прибегая к id3.

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

> $statement = $this->pdo->prepare("SELECT id FROM files WHERE nameId = :nameId");



Используй lastInsertId().

> foreach ($filesId as $id) {


> $filesArray[] = $this->filesTable->getFileThroughId(intval($id));



Запросы в цикле - неэффективно, лучше использовать 1 запрос с WHERE id IN (...).

> private function convertCommentsObjectToArray


Вообще, для преобразования объекта в массив (и обратно) есть библиотеки вроде JSMSerializer. Может, она тебе тут пригодилась бы?

Сохранение ошибок конвертации в лог можно сделать функцией error_log().

> <script type="text/x-template" id="templateReplyComment">



Кстати, для новых браузеров доступен тег <template>. Но script, конечно, лучше поддерживается.

Для ограничения текста в поле есть атрибут maxlength.

> <a href="/"><h1>


Логичнее вкладывать строчный тег в блочный, хотя новый стандарт уже позволяет вкладывать блоки внутрь <a>.

> var date = document.createElement('h5');


> date.innerHTML = commentsList.date;


Тут нужно использовать шаблоны. Как тут править верстку?
637 1702294
Бесплатно проконсультирую по веб-программированию в своем чятике https://crawc.net/ru/#¢ґ@ẘ¢η€☂
опыт работы: 8 лет
638 1702432
Неужели новичок, дочитав http://codedokode.github.io/phpbook до конца, должен быть в состоянии сделать задачу на список студентов? Выглядит слишком уж сложно.
image.png137 Кб, 1360x768
639 1702470
>>701952
ОПчик ты же опчик?, ты охуенен даже если не опчик, то ты охуенен, на таких людях мир держится. Большое спасибо за развернутый ответ, прочитал я часа 4 назад и с того времени пытаюсь осознать этот алгоритм. Еще вчера с момента когда я задал вопрос я часа три читал за динамическое программирование, рекуррентные функции, множество страниц перерыл насчет конкретно этой задачи и других похожих. Ничего сложнее чем Фибоначчи я тогда так и не понял. Нагуглил в архиве решение, пытался в нем разобраться, не получилось. Заметил что в архиве на любой вопрос об этой задаче нету ответов ни от кого кроме ОПа, понял что 98% треда пропустили её усложненный вариант, сделал так же и перешел к Лиличке, сделал её минут за 10 и пошел спать. После того как увидел твой пост понял, что он окажется зря написанным если забью на эту задачку, начал дальше углубляться во всё это. Поигрался с этим твоим digraph, потом наконец-то перевел код решения из си на пыху, после чего оказалось что если придать переменным осмысленные названия а не $a $b $c $k $m то код легко читается. Забавно, я нашел первый плюс того, что перед переменными в пыхе пишется знак $. Без него нельзя было бы менять названия переменных через автозамену одним кликом. Написал для каждой строчки комментарии, по комментариям заново воссоздал код. Теперь хочу еще раз заново воссоздать код без комментариев с нуля из головы, после чего попробую ввести туда ограниченное количество купюр. Теперь вопрос: конечно код решения методом динамического программирования намного меньше, чем если бы я решал "в лоб - перебором всех возможных комбинаций банкнот". Но неужели это нормально, что например при необходимой для выдачи сумме 350000 рублей, в массив F будет записано 350000 элементов? Еще и не пустых, так как в итоге каждое значение (value) будет отвечать минимальному количеству купюр для ключа, см. пикрил
640 1702478
Хех, еще и для 99.9% элементов этого массива из 350001 элементов значение равно самому большому возможному числу для INT. Вот на что идут государственные деньги!
641 1702480
>>702470
Анончик, расскажи пожалуйста, что это у тебя за сайт с задачками. Ты выполняешь их все на php, таким образом изучая его? Или именно прокачиваешь знание алгоритмов?
image.png114 Кб, 800x560
642 1702486
>>702480
Ты за этот? https://informatics.mccme.ru/mod/book/view.php?id=815
Это ссылка, которую разместил ОП на этой странице http://phpbook.ga/l1/mou-ikkai.html, задачу пикрил видишь сам, она самая первая на этой странице. По ссылке размещено решение усложненного варианта этой задачи, когда номиналы купюр не каноничны и их количество ограничено.
643 1702489
>>702486
Спасибо <3 пользуясь случаем, также благодарю ОПушку.
644 1702516
Кстати, нужно бы для потомков оставить пример этого алгоритма на пыхе, с комментариями и нормальными названиями переменных, не все си знают. Если бы я на такое наткнулся в архиве, то сэкономил бы несколько часов жизни. Код переведен на пыху не мной, а комментарии я писал для себя и вполне вероятно что они неверны так как я сам в этом коде пока мало понимаю, но это лучше чем ничего. Кстати комментарии немного странные, не обращайте внимания, они близки к псевдокоду и сделаны были для того, чтобы по ним написать нормальный код самому.
Ключевые слова: банкомат сдача рюкзак
Полезное сообщение от ОПа: >>701952
Сам код: https://ideone.com/FBhunR
645 1702623
>>702432
А ты не тупо читай, а код пиши.
646 1702645
>>702470

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

> Заметил что в архиве на любой вопрос об этой задаче нету ответов ни от кого кроме ОПа,



По моему, кто-то все же решил ее методом перебора всех возможных комбинаций купюр.

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

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

> Но неужели это нормально, что например при необходимой для выдачи сумме 350000 рублей, в массив F будет записано 350000 элементов?



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

Если ты будешь искать путь на графе рекурсивной функцией (функцией, которая вызывает сама себя), то ты можешь такое же количество памяти выделить на стеке (стек - это место, где хранится информация о вызовах функций, внутри которых ты находишься).
647 1702646
Сап анчоусы, есть тут кто с Екб? Сколько там з/п платят джунам, можно ли сразу без опыта на 40к выйти?
648 1702649
>>702516

Ты только слово "флаг" неправильно использовал. Обычно флагом называют переменнную, которая принимает значения true/false (да/нет).

Также, в коде повторяется $bills[$j] много раз, от копипасты лучше избавиться, например написав $bill = $bills[$j]. А еще лучше, вместо for применить foreach:

foreach ($bills as $bill) { .... }

$i можно заменить на $sum.
649 1702683
>>702645

>По моему, кто-то все же решил ее методом перебора всех возможных комбинаций купюр.


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

>Мне кажется, тут стоит порисовать графы.


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


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

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



Давно думаю что надо бы подтянуть свое понимание в этих вещах, так как никогда бы не подумал что сначала задать значение для 350001 клеток памяти, после чего проверить для каждой из них по 7 условий окажется менее тяжело ( времязатратность это ведь следствие большой нагрузки? ), чем обычный перебор. Хотя возможно я просто не совсем понимаю что такое этот обычный перебор, но всё равно надо бы в этом подтянуться. Однажды написал калькулятор на мк с памятью 14 кБ, на другом мк с меньшей памятью он уже не работал. Так и не понял что нужно было оптимизировать чтобы уменьшить объем занимаемой памяти. А вообще нужно ли с этими вещами заморачиваться на пхп? Я почему то очень дорожу памятью, лишний раз новую переменную не ввожу. Есть ли в этом вообще смысл?. У банкомата понятное дело что памяти не терабайт, но ведь в случае с пыхой все эти дела будут храниться на сервере.
>>702649

>Ты только слово "флаг" неправильно использовал. Обычно флагом называют переменнную, которая принимает значения true/false (да/нет).


Да, я знаю, просто ведь писал для себя, не думал что выкладывать буду, так исторически сложилось что мне удобно такое название. На счёт остального, это просто транслитерированный на пхп код с сайта, оптимизировать буду потом.
649 1702683
>>702645

>По моему, кто-то все же решил ее методом перебора всех возможных комбинаций купюр.


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

>Мне кажется, тут стоит порисовать графы.


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


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

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



Давно думаю что надо бы подтянуть свое понимание в этих вещах, так как никогда бы не подумал что сначала задать значение для 350001 клеток памяти, после чего проверить для каждой из них по 7 условий окажется менее тяжело ( времязатратность это ведь следствие большой нагрузки? ), чем обычный перебор. Хотя возможно я просто не совсем понимаю что такое этот обычный перебор, но всё равно надо бы в этом подтянуться. Однажды написал калькулятор на мк с памятью 14 кБ, на другом мк с меньшей памятью он уже не работал. Так и не понял что нужно было оптимизировать чтобы уменьшить объем занимаемой памяти. А вообще нужно ли с этими вещами заморачиваться на пхп? Я почему то очень дорожу памятью, лишний раз новую переменную не ввожу. Есть ли в этом вообще смысл?. У банкомата понятное дело что памяти не терабайт, но ведь в случае с пыхой все эти дела будут храниться на сервере.
>>702649

>Ты только слово "флаг" неправильно использовал. Обычно флагом называют переменнную, которая принимает значения true/false (да/нет).


Да, я знаю, просто ведь писал для себя, не думал что выкладывать буду, так исторически сложилось что мне удобно такое название. На счёт остального, это просто транслитерированный на пхп код с сайта, оптимизировать буду потом.
650 1702700
Ох, все таки еще раз заглянул на этот код что я сюда >>702516 выложил, аж кринжово немножко стало. Надо было бы таки отредактировать комментарии перед тем как на люди выкладывать, так как местами действительно наркомания написана. То что я счетчик флажком назвал это еще херня по сравнению с тем, что я цикл назвал массивом, хех. Да и вообще эти комментарии лепту для понимания алгоритма не привносят, надо было без них кидать.
image.png4 Кб, 261x83
651 1702705
Двойной дабл выпал.
652 1702721
Анончики, в чем проблема? Хотел на форму вывести логин, но пишет ошибку.
653 1702857
как очистить поле формы?
а то он сохр все,что я вводил
654 1702981
>>702857
Код скинь. Если форма сохранила прошлый твой ввод, значит ты сам подрубил это себе через value
655 1703173
>>702721
Опять логику и шаблон мешаете в кучу
656 1703196
>>657523

>полному нулю


ну наверно почитать как работают базы данных
2134214895110.jpg288 Кб, 872x1906
657 1703793
Разобрался таки в алгоритме банкоматовском еще вчера ночью, стоило представить на месте его элементов настоящие числа не без помощи дебагера и я понял как и главное почему он работает. Кстати, ты не что-то подобное на пикрил мне советовал порисовать? Рисовал для себя ночью чтобы понять алгоритм, сейчас обнаружил что оно сходит на твое описание:

>граф, где вершины (кружочки) обозначают сумму, а ребра (стрелочки) - добавление купюр



Так вот, после осознания алгоритма переписал код быстренько с нуля чтобы закрепить знания, вот код кстати: https://ideone.com/nOtKLT, уже пол дня пытаюсь прикрутить туда ограниченность количества банкнот, почти безрезультатно. Похоже что это не так и легко. Есть догадка что для этого необходимо ввести еще один массив массивов, подобный массиву $F, где каждый элемент будет включать еще один массив, в котором хранятся комбинации купюр. Это конечно можно хоть сейчас сделать правда расход памяти увеличится в семь раз, но что тогда делать дальше я даже представлять не хочу, мозги закипают. Всё таки мне кажется что не может здесь решение быть таким сложным, я себе хрень какую-то мудрую, наверняка есть более простой способ. Если это так, то посоветуй как это дело реализовать.
658 1704316
симфони тяжелая однако система
659 1704421
>>704316
Тяжелая в плане изучения?
660 1704470
661 1704497
>>702646
Джуны уже пять лет на хуй никому не нужны, если только дико повезет за бесплатно пол года поработаешь на испыталке, и не факт что возьмут за еду даже
662 1704514
Копротивляюсь в ларавел, чет нихуя не могу фасад запустить. Из сервис провайдера доступен класс, а фасад для него настроить не могу.

фасад:
<?php
namespace app\customFasades;

use Illuminate\Support\Facades\Facade;

class customFasade extends Facade{
protected static function getFacadeAccessor() { return 'facade1'; }
}

файл app.php:

aliases = [
...
'Custom1'=> App\customFasades\customFasade::class,
]

//контроллер где должен использоваться фасад
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

//зависимость
use App\customService\customService;

//фасад - вроде как нужно
use Illuminate\Support\Facades\Custom1;

class mainController extends Controller
{
public function __construct(customService $myService){
$this->myService = $myService;
}

public function main(){

//Custom1::test(); -- не определяется, где я торможу?

}
}
662 1704514
Копротивляюсь в ларавел, чет нихуя не могу фасад запустить. Из сервис провайдера доступен класс, а фасад для него настроить не могу.

фасад:
<?php
namespace app\customFasades;

use Illuminate\Support\Facades\Facade;

class customFasade extends Facade{
protected static function getFacadeAccessor() { return 'facade1'; }
}

файл app.php:

aliases = [
...
'Custom1'=> App\customFasades\customFasade::class,
]

//контроллер где должен использоваться фасад
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

//зависимость
use App\customService\customService;

//фасад - вроде как нужно
use Illuminate\Support\Facades\Custom1;

class mainController extends Controller
{
public function __construct(customService $myService){
$this->myService = $myService;
}

public function main(){

//Custom1::test(); -- не определяется, где я торможу?

}
}
663 1704515
>>704514

>Из сервис провайдера


Из сервис контейнера конечно
664 1704540
>>704514
Срань какая то, вроде по инструкции. Но кастомный фасад недоступен по:
use Illuminate\Support\Facades\Custom1;
665 1704599
достаточно ли в пхп встроенных фич по сравнению с др ЯП?
666 1704644
А что анон может сказать про конструкторы сайтов, типа викс, тильда..?
667 1704677
>>704644
Бездушная хуета
668 1704755
А зачем на всяких вк и фейсбуках такая фича: если есть ссылка на другой сайт, то сначала редирект на страницу "вы покидаете фейсбук", а потом уже на саму ссылку? Типа защита от фишинга?
669 1704756
>>704644
1. Появляется новый конструктор сайтов, все начинают кукарекать что программисты больше не нужны.
2. Программистов убирают, приходят бабы Сраки накидывающие блоки.
3. Для того, что бы удовлетворить потребностям клиентов, конструктор начинает обрастать настройками, параметрами, исполняемыми высокоуровневыми скриптами, хуками и тд.
4. Бабы Сраки перестают с ним справляться, их убирают и берут программистов умеющих работать с этим конструктором.
670 1704789
>>704470
А мб ты просто не осилил ООП, СОЛИД и паттерны?
671 1704824
>>704599
Для бекенда достаточно
672 1704826
>>704755
Наверное чтобы скинуть с себя какую-то ответственность, оповестить неуверенного пользователя ПК что дальше они за его безопасность не отвечают и по ссылке может быть фишинг, гуро с детьми или даже, не дай Б-г, критика действий власти.
673 1704870
>>704824
но джава может больше выкрутасов на сервере?
674 1704893
>>704870
Может, но она и дороже в разработке и поддержке
675 1705124
>>704677
>>704756
Я как раз с нашей точки зрения и спрашиваю: будет толк пилить там лендосы по-быстренькому (кушать совсем нечего), попутно изучая php? И может ли так получиться что мне, с зачатком мозга, станет там слишком уютно и весь php пойдет на хуй?
676 1705128
>>705124
Там может быть уютно, если найдешь лохов, которые будут кучу денег тебе платить за якобы "поддержку" этих поделий. Есть такие люди, хитрожопые и неприятные. Ну и да, кодить для этого практически не надо уметь.
Но само по себе это не тема этой доски и треда.
677 1705200
Чет я тупой, нихуя не пойму как работает сервис контейнер в ларавел.
концепцию то я понимаю, но как это в ларе реализованой - нихуя не ясно. В ларакасте как то хуево для меня объясняется.
класс:

class Bar{}

типа свзяываем в контейнер класс:
App::bind('tormoz', function(){
return new Bar();
});

в маршруте роутера:
//через ревлексию достанет мне Bar
Route::get('/', function(Bar $bar){

dd($bar);

});

//но если так- мой контейнер называется tormoz:
Route::get('/', function(tormoz $bar){

dd($bar);

});
то хуита

Я не пойму когда ларавел через ревлексию дергает класс, а когда дергает контейнер. Контейнер называется tormoz, но как тайпхинт это не проходит.
677 1705200
Чет я тупой, нихуя не пойму как работает сервис контейнер в ларавел.
концепцию то я понимаю, но как это в ларе реализованой - нихуя не ясно. В ларакасте как то хуево для меня объясняется.
класс:

class Bar{}

типа свзяываем в контейнер класс:
App::bind('tormoz', function(){
return new Bar();
});

в маршруте роутера:
//через ревлексию достанет мне Bar
Route::get('/', function(Bar $bar){

dd($bar);

});

//но если так- мой контейнер называется tormoz:
Route::get('/', function(tormoz $bar){

dd($bar);

});
то хуита

Я не пойму когда ларавел через ревлексию дергает класс, а когда дергает контейнер. Контейнер называется tormoz, но как тайпхинт это не проходит.
678 1705205
>>705200
блядь, как то у меня не задалось с ларавелом(
679 1705270
И еще вопрос по контейнеру зависимости, что бы не заграмождать тред - код и вопрос по ссылке.
Странно как то, вроде все норм, а в деталях у меня с контейнером этим какой то треш. В данном случае - если не орпределена в конструкторе инъекция с классом - то у меня фасад App::make() возвращает ошибку.
Я такой боли вообще еще не испытывал, как от ларавел.

https://ideone.com/Hs7hh1
680 1705498
>>705200
>>705205
>>705270
Разобрался более менее
681 1705609
Cап аноны, я хочу с помощью чекбоксов удалить данные из базы данных, но у меня проблема в том, что значение удаляемого поля не заходит в value, а как это поправить я все никак не пойму, по идее все id которые у меня отмечены с помощью чекбокса должны помещаться в массив box но значения не переходят
<?php
$connect = mysqli_connect("localhost","root","", "sad");
mysqli_set_charset($connect, "utf8");
$query = "SELECT *
FROM `квитанция `";
$result = mysqli_query($connect, $query);
if($result){
$rows = mysqli_num_rows($result);
echo "<form method=\"post\" action=\"\">";
echo "<table>";

for ($i = 0 ; $i < $rows ; ++$i)
{
$row = mysqli_fetch_row($result);
echo "<tr>";
for ($j = 0 ; $j < 5 ; ++$j)

echo "<td>$row[$j]</td>";
echo "<td><a href='TableDeti.php?id=";
echo $row[2];
echo "'>Информация о детях</a></td>" ;
echo "<td><input type='checkbox' name='box[]' value=$код ></td>'";
echo "</tr>";

}
echo "</table>";
echo "<input type=\"submit\">";
print_r($_POST);
echo "</form>";

}
681 1705609
Cап аноны, я хочу с помощью чекбоксов удалить данные из базы данных, но у меня проблема в том, что значение удаляемого поля не заходит в value, а как это поправить я все никак не пойму, по идее все id которые у меня отмечены с помощью чекбокса должны помещаться в массив box но значения не переходят
<?php
$connect = mysqli_connect("localhost","root","", "sad");
mysqli_set_charset($connect, "utf8");
$query = "SELECT *
FROM `квитанция `";
$result = mysqli_query($connect, $query);
if($result){
$rows = mysqli_num_rows($result);
echo "<form method=\"post\" action=\"\">";
echo "<table>";

for ($i = 0 ; $i < $rows ; ++$i)
{
$row = mysqli_fetch_row($result);
echo "<tr>";
for ($j = 0 ; $j < 5 ; ++$j)

echo "<td>$row[$j]</td>";
echo "<td><a href='TableDeti.php?id=";
echo $row[2];
echo "'>Информация о детях</a></td>" ;
echo "<td><input type='checkbox' name='box[]' value=$код ></td>'";
echo "</tr>";

}
echo "</table>";
echo "<input type=\"submit\">";
print_r($_POST);
echo "</form>";

}
682 1705646
>>705200
Ты просто какую-то хуйню делаешь. Перечитай еще раз доки.
Если тебе нужен сервис Bar, и все его зависимости с тайпхинтом то тебе вообще ничего не нужно делать. Если сервис Bar принимает какой-то конфиг или скалярные значения, то юзай bind и кложу фабрику, которая возвращает объект. Если тебе нужна более тонкая настройка то там вообще есть when(Classname::class)->needs(ServiceInterface::class)->give(Concrete::class) или не ебись и уровнем выше бинди реализацию объекта. Еще ты биндишь не к имени класса, а к какой-то рандомной строке. В контейнере есть алиасы, но это другая вещь. Например, $app->alias(Bar::class, 'tormoz'); $app->make('tormoz'); отработает как нужно.
683 1705741
как браузер понимает пхп код?
684 1705774
>>705741
Дергает через API google translate, потом с помощью движка V8 код компилируется в машинный и исполняется в браузере.
685 1705784
>>705741
До браузера пхп код не доходит
686 1705810
>>705609
Нынче за цп квитанции выдают?
687 1705935
>>705741

Браузер не понимает PHP код. Когда ты открываешь страницу в браузере, браузер шлет запрос к веб-серверу, где работает PHP. PHP выполняет PHP скрипт, и то, что скрипт выводит (HTML-код), отправляется браузеру в ответ на запрос. Браузер отображает полученный HTML.

Это называется "протокол HTTP". Браузеру не важно, какой язык используется на сервере, он шлет запрос, как описано в протоколе, и получает в ответ HTML.

Здесь это подробнее описано: https://github.com/codedokode/pasta/blob/master/network/http.md
688 1705938
>>705935
а если нет HTML,а просто echo?
689 1705960
>>705938

Я не точно выразился. То, что выведет скрипт, браузер будет воспринимать как текст с разметкой HTML. Если просто написать echo "hello", то браузер все равно будет воспринимать это как текст с разметкой HTML, и выведет слово hello.

Тип содержимого можно задать явно, отдав браузеру заголовок Content-Type. Например, Content-Type: text/plain; charset=utf-8 говорит, что у тебя просто обычный текст без разметки HTML.
690 1706010
Хочу запилить агрегатор каналов в телеге. В качестве клиента MadelineProto, написанный на пхп. Как вам такой алгоритм: гружу новые посты с каналов смотрю сколько просмотров, самый топовый по просмотрам постит агрегатор. Дальше через 15-20 минут чекаю опять последние посты каналов и прирост просмотров, самый топовый пост по приросту просмотров постит агрегатор и так далее. Норм?
691 1706672
>>702646
Без опыта начинал с 25. Свяжись-ка со мной locY/aalpostANUS2HLZchPUNCTUMhB`vk
692 1706850
>>702646
я в мск без опыта начинал в 2017 на 28к в одной обосранной продуктовой компании, мне тогда было 30

сейчас 180к зарплата, уже в другой конторе естественно.
693 1706874
анчоусы, подскажите как работодателю намекнуть на то чтобы он начал ставить меня на норм проекты на нормальном стеке я знаю что они у них есть а не на всякое говно типо битриксов/вордпрессов. имеется в виду фреймворки типо той же ларки или симфони.заебало в говне ковыряться
свалить на другую галеру я не могу, щас в своем зажопье из за вируса с работой пиздец. но не со всеми конечно, знаю например что довольно таки успешная контора к се берет людей всех мастей, на там стек это полностью битрикс
694 1706906
>>706874

>свалить на другую галеру я не могу, щас в своем зажопье из за вируса с работой пиздец


Сам же ответил на свой вопрос
Ищи удаленку на ларе или yii2 если не брезгуешь мертвечиной. Как найдешь - вали
695 1706910
симфони на 8 ядрах будет работать быстрее,чем на 2?
696 1707017
>>706910
Смотря что за ядра. Могут быть слабые 8 ядер 2010 года и мощнейшие 2 ядра нового поколения.
697 1707021
>>707017
я про совр реалии
698 1707042
>>707021
Зависит от приложения также, от архитектуры и режима работы PHP. В режиме умирающего приложения 2 скорее всего будут быстрее. Это все чепуха, не об этом надо думать. Вот сделаешь 10 высоконагруженных проектов, тогда и будешь про оптимизации думать.
699 1707046
>>707042
а мне интересно
700 1707082
>>707046
Вот создай приложение, сделай нагрузку на него, и тестируй.
701 1707085
>>707046
Кроме самого PHP, есть еще запросы в базу данных. Обычно это самое узкое место.
702 1707138
>>706910
Запили бенчмарки, че спрашиваешь?
703 1707165
>>706910

На 8 ядрах может параллельно обрабатываться 8 запросов, не мешая друг другу. Но если посещаемость низкая, или вообще на сайт заходишь ты один, то разницы не будет.
704 1707245
>>707165

>На 8 ядрах может параллельно обрабатываться 8 запросов


Не совсем верно, это вообще тема очень заковыристая. Вот если бы это был Эрланг, можно было бы с уверенностью сказать, что все будет скейлиться на все имеющиеся ядра. С PHP такого сказать нельзя. Он работает в разных режимах. И вообще хер знает как он скейлится. Возможно при большой нагрузке много ядер будут мешать, если код не оптимизован для них, ОС будет постоянно переключаться с ядра на ядро, а это затратно по времени.
705 1707303
>>707245
PHP не скейлится. Вообще. Один процесс на ядро, точка. Ни PHP-FPM, никакие режимы этого не меняют. Хочешь обслуживать восемь клиентов одновременно - покупай восемь ядер. Хочешь обслуживать клиентов быстрее - покупай большую герцовку.
706 1707364
>>707303
Так речь про ядра вообще то
707 1707371
>>707303

>Хочешь обслуживать восемь клиентов одновременно - покупай восемь ядер.


А это разве не касается вообще всех языков по понятным причинам?
708 1707590
Как правильно название этой хуйни выговаривать чтоб не засмеяли? Пэ ха пэ? Пи эйч пи? достойные вопросы для достойного треда
709 1707616
Как авторизоваться ВК через похапэ и сервер? Именно в самом ВК через логин-пароль, чтобы потом можно было парсить авторизованную страницу через файл гет контентс или типа того (нужно добраться до сведений, которые без логина ВК тупо не отображаются)
710 1707652
>>707590
Эр Эн Эр
711 1707653
>>707616
VK API
712 1707991
>>707590
Меня триггерит от пи эйч пи, что-то на уровне пайтон и ява/яваскрипто
713 1707994
>>693950

>Поставь себе норм ide, git


Мерзавец такой мерзавец: https://translate.google.com/#view=home&op=translate&sl=en&tl=ru&text=git
714 1708027
>>707245

Мне кажется, что ты ошибаешься.

> Он работает в разных режимах. И вообще хер знает как он скейлится.



В каких еще режимах?

> Вот если бы это был Эрланг, можно было бы с уверенностью сказать, что все будет скейлиться на все имеющиеся ядра



Чем для ОС отличаются процессы или треды Эрланга от процессов PHP? Планировщик ОС в обоих случаях один и тот же.

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



Чем больше ядер, тем больше процессов будет работать параллельно. Даже с учетом затрат на переключение.

>>707303

PHP благодаря stateless модели как раз прекрасно масштабируется - можно добавлять ядра, можно добавлять сервера. На практике все это прекрасно работает. Такое ощущение, что тебе просто чем-то не нравится PHP и ты судорожны пытаешься найти недостатки. Давай я тебе помогу, есть целая статья про недостатки языков: https://habr.com/ru/post/315152/
715 1708141
>>708027

>В каких еще режимах?


CGI, FastCGI, PHP-FPM, + ассинхронные сервера есть.

>Чем для ОС отличаются процессы или треды Эрланга от процессов PHP?


Всем. В Эрланге потоки существуют внутри виртуальной машины.

>Планировщик ОС в обоих случаях один и тот же.


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

>Чем больше ядер, тем больше процессов будет работать параллельно. Даже с учетом затрат на переключение.


Только небольшое количество процессов будет нормально существовать. Потому что когда их станет существенно больше чем ядер, переключение начнет отнимать больше времени чем вычисление. В Эрланге можно держать миллионы процессов/потоков (не помню там процессы или потоки, в общем не так важно) на одной машине.
716 1708168
>>708141

CGI никто не использует уже давно. PHP-FPM использует FastCGI. Ты толком ничего про PHP не знаешь, но пришел сюда зачем-то рекламировать Эрланг. Хотя я не слышал, чтобы кто-то писал сайты на Эрланге. Все-таки PHP больше для этого подходит, как не крути.

> В Эрланге можно держать миллионы процессов/потоков (не помню там процессы или потоки, в общем не так важно) на одной машине.



Только при условии, что эти потоки ничего не делают и не тратят процессорное время. Что на практике не бывает.
717 1708287
Если я не могу решить задачу на сумму прописью.Кстати, а смысл её решать, если есть готовые функции в гугле.То не смогу стать пхп макакой 15-20к в месяц?
718 1708302
>>708027
так как пхп использует ядра,сразу все,или как нода только одно?
719 1708310
>>656450 (OP)
Аноны, есть у кого-нибудь решение задачки из шапки с таблицей работников ООО Вектор? Чет я нихуя не понимаю, как там правильно все сделать. Типа, нужен новый класс, который будет выводить таблицу?
720 1708325
>>708168

>CGI никто не использует уже давно.


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

>PHP-FPM использует FastCGI.


Да, но это не одно и то же.

>Хотя я не слышал, чтобы кто-то писал сайты на Эрланге.


Снова даун проецирует свое скудное мышление на других. На Эрланге пишут, и даже в СНГ.

>Только при условии, что эти потоки ничего не делают и не тратят процессорное время. Что на практике не бывает.


Не умничай, ты нихуя не знаешь, а пиздишь. Держит миллион вебсокет соединений спокойно, каждое соединение обрабатывает отдельный поток. И это не предел.
721 1708326
>>708302

>как пхп использует ядра,сразу все,или как нода только одно?


Кто сказал, что нода использует одно ядро?
722 1708331
>>708326
по умолчанию 1 ядро 1 поток.
если надо больше-кластеризация
723 1708344
>>708331
Уже давное завезли многопоточность.
724 1708346
>>708344
она не тру
725 1708385
>>708027

>PHP благодаря stateless модели


Ты бы хоть почитал, что такое приложение без состояния. Это блядь вообще не характеристика языка. Твой код может вполне быть statefull, просто php будет твое состояние каждый раз заново собирать и каждый раз выкидывать. Пиздец, так этот недостаток пхп еще никто на моей памяти с ног на голову не переворачивал.

>как раз прекрасно масштабируется


Еще раз. Ты написал консольное приложение на симфони, запустил его. И в процессе выполнения оно не масштабируется. Никак. Если тебе нужно быстрее, то придется запустить симфони N раз, а еще придумать как распределить нагрузку и как согласовать результаты выполнения вне кода. Понимаешь? ВНЕ твоего кода блядь, потому что в пхп таких инструментов нет. В эрланге есть, в ноде есть, в джаве есть, в го есть, в си шарпе есть, а в пхп нет.
И начинаются танцы с базой, блокировки, очереди, процедуры. И на всех собесах по пхп на сеньора только вопросики: А вы CTE используете? А процедуры писали? А мап редьюс на SQL сбацаете? А с го знакомы? Спросишь их: а пхп? А что пхп? Пхп рожден чтобы html отдавать и умирать, а настоящую работу нужно же где-то делать.
726 1708427
>>708346
С чего вдруг?
727 1708535
Анончик, что делать, чтобы прогрессировать? Изучать код крупных опенсорс проектов? Читать книги? Смотреть курсы? Что из этого приоритетнее?
728 1708559
>>708287
Сначала внятно выражаться научись
729 1708560
А как копипастить свои высеры итт? Не просто же копировать стену кода из иде.
Сделал задачку из гайда, хочу чтоб обоссали
730 1708562
>>708560
ссылку на гитхаб репу
731 1708566
Копипастну под спойлером все же...
Задание из главы про ООП. Хотелось бы сразу понять, что я делаю не так, дабы в будущем не делать хуйни. Погромирование начал изучать сегодня.

<?php

abstract class AbstractQuestion {

public $text;
public $answerUser;
abstract function CheckAnswer($answer);

}

class ChoiceQuestion extends AbstractQuestion {

public $options;
public $checkOptions;

public function CheckAnswer($answer)
{
// TODO: Implement CheckAnswer() method.
if ($answer == $this->checkOptions) {
echo "Right!\n";
} else {
echo "Miss\n";
}
}

}

class NumericQuestion extends AbstractQuestion {

public $answer;
public $deviation;

public function CheckAnswer($answer)
{
// TODO: Implement CheckAnswer() method.
if ($answer == $this->answer || $answer + $this->deviation == $this->answer
|| $answer + $this->deviation == $this->answer) {
echo "True";
} else {
echo "False";
}
}
}

$a = new ChoiceQuestion();
$a->text = "
what's 2+2?";
$a->options = "
a) 4
b) 2
c) 3\n";
$a->checkOptions = "a";

$b = new NumericQuestion();
$b->text = "what's 2+2?\n";
$b->answer = 4;
$b->deviation = 0.01;

$questions = [$a, $b];

echo "{$a->text}";
echo "{$a->options}";
$a->answerUser = readline('Ur answer: ');
$a->CheckAnswer($a->answerUser);

echo "{$b->text}";
$b->answerUser = readline('Ur answer');
$b->CheckAnswer($b->answerUser);
731 1708566
Копипастну под спойлером все же...
Задание из главы про ООП. Хотелось бы сразу понять, что я делаю не так, дабы в будущем не делать хуйни. Погромирование начал изучать сегодня.

<?php

abstract class AbstractQuestion {

public $text;
public $answerUser;
abstract function CheckAnswer($answer);

}

class ChoiceQuestion extends AbstractQuestion {

public $options;
public $checkOptions;

public function CheckAnswer($answer)
{
// TODO: Implement CheckAnswer() method.
if ($answer == $this->checkOptions) {
echo "Right!\n";
} else {
echo "Miss\n";
}
}

}

class NumericQuestion extends AbstractQuestion {

public $answer;
public $deviation;

public function CheckAnswer($answer)
{
// TODO: Implement CheckAnswer() method.
if ($answer == $this->answer || $answer + $this->deviation == $this->answer
|| $answer + $this->deviation == $this->answer) {
echo "True";
} else {
echo "False";
}
}
}

$a = new ChoiceQuestion();
$a->text = "
what's 2+2?";
$a->options = "
a) 4
b) 2
c) 3\n";
$a->checkOptions = "a";

$b = new NumericQuestion();
$b->text = "what's 2+2?\n";
$b->answer = 4;
$b->deviation = 0.01;

$questions = [$a, $b];

echo "{$a->text}";
echo "{$a->options}";
$a->answerUser = readline('Ur answer: ');
$a->CheckAnswer($a->answerUser);

echo "{$b->text}";
$b->answerUser = readline('Ur answer');
$b->CheckAnswer($b->answerUser);
732 1708672
>>708535
Делать больше чем делал вчера. Делать лучше чем делал вчера. Каждый новый день быть лучше во всех чем вчера, хотя бы на чуть чуть.
733 1708739
>>708559
Двачую. Синтаксис php сложнее чем синтаксис русского языка.
734 1708755
>>708566
Чую ты пиздишь, невозможно за день без опыта в программировании до ООП в ОП-гайде дойти. Или ты все задачки что тебе не нравятся пропускал? Давай свой банкомат в хардмоде или хотя бы навигатор продемонстрируй.
735 1708804
Насчёт Вектора:

>Потребление кофе или зарплата не являются свойствами так как они вычисляются из других свойств и хранить их не надо.


Это как? Ну ладно, зарплата понимаю что вычисляется из ставки и множителя. Но ведь потребление кофе никак не вычисляется особо, зависит лишь от профессии ( а значит и класса ) сотрудника. Ну ладно, еще зарплата и потребление кофе зависит от того, является ли сотрудник боссом. Но количество отчетов в месяц тоже от этого зависит, так почему бы и их не записать в этот список? Хотя я все еще не понимаю почему бы все это не записать в свойства, после чего множить по всяким факторам.
736 1709244
>>708804

Идея в том, чтобы хранить в свойствах минимальный набор данных, а то, что можно вычислить - не хранить, а вычислять в методе при необходимости.

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

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

Так как они зависят от профессии, то теоретически можно и их не хранить, можешь попробовать это реализовать.
737 1709253
>>708566

> $answer == $this->answer || $answer + $this->deviation == $this->answer


|| $answer + $this->deviation == $this->answer

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

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

Варианты ответа лучше хранить не большим куском текста, а массивом.

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

Код лучше не копипастить, а запостить на сайт вроде ideone, а сюда скинуть ссылку.
738 1709261
>>708560

Запости код на сайт вроде ideone, а сюда скинь ссылку.

>>708385

Ты пишешь полную ерунду. Модель PHP как раз очень удачная, так как позволяет избежать проблем вроде утечек памяти, которые часто бывают на той же ноде. Очищать состояние интерпретатора после обработки запроса довольно удачная идея. И веб-скрипты прекрасно масштабируются, чему доказательство сайты вроде Вконтакте или Баду.

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

>>708310

Вывод таблицы можно сделать и без классов, на функциях. А можно и классом, конечно. Также, нужны классы для представления работников, департаментов, компании.

Поискать решения можно в архиве на phpclub.tech.

>>708287

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

Например, попробуй сделать функцию, которая умеет склонять суммы от 0 до 9 рублей, а потом расширь ее до 99 и 999 рублей.
739 1709283
>>703793

Боюсь, что использовать тот алгоритм не получится при ограничениях. Там создается массив F[n], где n - сумма, а F[n] - количество купюр.

У нас же возможность выдачи зависит от суммы n и остатка купюр amount: y = F(n, amount). Построить простой массив, перебирая n тут не выйдет.

У нас есть 2 подхода:

1) полный перебор комбинаций всех купюр
2) обход графа из 0 к N или из N к 0 с помощью рекурсивной функции

Второй вариант может выглядеть так. Пишем функцию

$y = canPay($sum, $amount)

Где $sum = сколько надо выдать, $amount - количество оставшихся купюр, $y = можно ли выдать сумму или нет.

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

То есть, если у нас есть купюры 1x100, 3x60 и сумма = 60, то функция сразу вернет "да". Если же сумма = 160, то функция должна проверить 2 варианта:

- используем банкноту на 100, и вызываем себя с параметрами 60, (3x60)
- используем банкноту на 60, и вызываем себя с параметрами 100, (1x100, 2x60)

То есть мы обходим граф, пробуя все возможные варианты выдачи.
740 1709421
>>709261

>так как позволяет избежать проблем вроде утечек памяти


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

>Очищать состояние интерпретатора после обработки запроса довольно удачная идея


Нихуя себе! Очень полезная фишка, расскажешь чем? А то мы с пацанами хуй поймем зачем все данные на каждый запрос из базы грузить.

>И веб-скрипты прекрасно масштабируются, чему доказательство сайты вроде Вконтакте или Баду


Facebook забыл. Помимо этого есть много крупных компаний, в которых используют пхп, я сам работал в нескольких компаниях с миллиардными оборотами и тысячами сотрудников. Все они использовали пхп потому что очень легко начать. Дешево и быстро, программистов опять же много очень. И заканчивали все одинаково - пхп слишком медленный, устаревший, а программисты на нем 90% долбоебы, которые код писать учились на двачах.
Badoo прямо показательный пример. У людей 300 серверов, которые работают на пределе, и как они только не извращаются и fpm сделали, и фреймворк прелоадят, и го пытаются юзать. HHVM, KPHP, FPM все, чтобы хоть как-то ускорить это говно. Только вот огромная кодовая база на пхп уже живет своей жизнью, и плодит новые вакансии.

>И вообще, ты какой-то недадекватный, если тебе не нравится PHP, просто не используй его


Так это не для тебя написано. Ты то совсем конченый, со stateless php и без утечек памяти. Это написано для тех кто пытается вкатиться в эту помойку. Не лезь блядь, она тебя сожрет.
741 1709431
>>709421

> пхп потому что очень легко начать


наверно Цуку надо было на джаве начинать
742 1709496
>>709421

Ты мыслишь очень ограниченно. Чтобы не "грузить данные из БД", есть множество кешей от APC до redis, но это создает проблему устаревания данных, (о которой ты кстати не упомянул). То есть PHP позволяет держать данные в памяти, при этом избегая проблем вроде утечек памяти, свойственных для кода на Node.JS, Ruby, Python. Модель работы PHP очень хорошо подходит для веба.

И, как мы видим по Баду, прекрасно масштабируется. С их числом пользователей 300 серверов это не много. И я уверен, что радикально ты число серверов сменой языка бы не сократил. И не забывай про скорость разработки, новые фичи надо добавлять быстро, а не по полгода пилить.

Также, важна скорость разработки, для PHP есть фреймворки, инструменты (IDE с автодополнением и рефакторингом, визуальной отладкой), куча библиотек. И действительно, много разработчиков, что облегчает выбор. Разработчики, кстати, разного уровня.

В Эрланге я не разбираюсь, но отмечу недостатки Node.JS, Python и Руби в сравнении с PHP:

- нет тайп-хинтов, труднее анализировать код статически, труднее автодополнять код в IDE
- трудно обнаружимые утечки памяти. Есть ли визуальный профайлер памяти для твоего языка?
- у Python и Ruby ниже производительность

А твои миллион коннектов не очень-то и нужны. Когда производительности PHP не хватает, просто пишут микросервис на Го или Си++, в который ходят скрипты из PHP.
743 1709556
>>709496

>но это создает проблему устаревания данных


А как кстати разбивать кеш когда очень много серверов с пхп? Понимаю что может быть много разных способов и всё зависит от архитектуры но если можно так сказать некое дефолтное решение c:
744 1709560
>>709556

Можно использовать распределенный кеш вроде redis, который хорошо масштабируется (разные ключи разносятся на разные сервера).
745 1709565
>>709560
Если мы через пхп инвалидируем то у редиса по идее есть какая-то единая точка входа, некий сервис который знает где какие ключа валяются?
746 1709590
>>709244
Большое спасибо за ответ. Сначала не понял, потом поразмыслил над ним, всё осознал. Посмотрел на следующую задачу и понял что если бы я все поля вычислял в методе-конструкторе и классах профессий, то функции для изменения значений были бы намного длиннее и сложнее, а в предложенном тобой варианте необходимо будет просто сделать альтернативные функции вывода.
747 1709594
>>709283
Спасибо что расписал, ОПчик, отличный вариант, очень похоже на алгоритм поиска пути это он и есть. Я даже задумывался об этом когда делал навигатор, но что-то не зацепился за эту идею, т.к. ты написал в гайде что есть лишь два варианта решения.
748 1709638
>>709496

>Чтобы не "грузить данные из БД", есть множество кешей от APC


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

>до redis


А редис это что по твоему блядь, не база?

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


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

>И, как мы видим по Баду, прекрасно масштабируется


Любой код на любом языке можно бесконечное количество раз запускать на бесконечном количестве серверов. Каким хуем это стало преимуществом пхп? И откуда ты взял что в badoo все прекрасно? Я вижу судорожные попытки хоть как-то соптимизировать этого монстра, fpm, RoadRunner, Preload из 7.4 все это прямо противоречит твоей охуенной модели.

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


Возможно дело в том что ты просто некомпетентный еблан. Вот тебе видео про badoo "Как 200 строк на Go помогли нам освободить 15 серверов" https://www.youtube.com/watch?v=uO268voCGwA

>В Эрланге я не разбираюсь, но отмечу недостатки Node.JS, Python и Руби в сравнении с PHP:


>нет тайп-хинтов, труднее анализировать код статически


Просто не позорься. Зайди в руби тред, там тебе мигом хуев в глотку наебенят за "отсуствие аннотаций".

>трудно обнаружимые утечки памяти


И тут я проиграл. Ты понимаешь, что когда речь идет об "утечках памяти" имеется ввиду не твой код? Утечки в твоем коде это проблема долбеба в кресле программиста. Когда я говорил об утечках я имел ввиду сам язык. Когда сама виртуальная машина пхп течет, даже если ты нихуя и не делал. Да хули говорить, одной из задач PHP-FPM является отслеживание утечек памяти.

>А твои миллион коннектов не очень-то и нужны


Ты совсем ебанулся, таблетки прими. Я вообще ничего не писал про миллион коннектов.
748 1709638
>>709496

>Чтобы не "грузить данные из БД", есть множество кешей от APC


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

>до redis


А редис это что по твоему блядь, не база?

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


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

>И, как мы видим по Баду, прекрасно масштабируется


Любой код на любом языке можно бесконечное количество раз запускать на бесконечном количестве серверов. Каким хуем это стало преимуществом пхп? И откуда ты взял что в badoo все прекрасно? Я вижу судорожные попытки хоть как-то соптимизировать этого монстра, fpm, RoadRunner, Preload из 7.4 все это прямо противоречит твоей охуенной модели.

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


Возможно дело в том что ты просто некомпетентный еблан. Вот тебе видео про badoo "Как 200 строк на Go помогли нам освободить 15 серверов" https://www.youtube.com/watch?v=uO268voCGwA

>В Эрланге я не разбираюсь, но отмечу недостатки Node.JS, Python и Руби в сравнении с PHP:


>нет тайп-хинтов, труднее анализировать код статически


Просто не позорься. Зайди в руби тред, там тебе мигом хуев в глотку наебенят за "отсуствие аннотаций".

>трудно обнаружимые утечки памяти


И тут я проиграл. Ты понимаешь, что когда речь идет об "утечках памяти" имеется ввиду не твой код? Утечки в твоем коде это проблема долбеба в кресле программиста. Когда я говорил об утечках я имел ввиду сам язык. Когда сама виртуальная машина пхп течет, даже если ты нихуя и не делал. Да хули говорить, одной из задач PHP-FPM является отслеживание утечек памяти.

>А твои миллион коннектов не очень-то и нужны


Ты совсем ебанулся, таблетки прими. Я вообще ничего не писал про миллион коннектов.
749 1709720
>>709638
на чем тогда писать свой сайт-стартап?
750 1709749
>>709720
Пиши на чем умеешь, пхп тоже сойдет. Если не взлетит, то все равно похуй, а если взлетит наймешь макак задешево.
Но если собрался зарабатывать на жизнь программированием держись от пхп подальше.
751 1709751
>>709749
стоит ли после базы городить свой велосипед на голом пхп(допустим простой бложик),или поставить ларавел?
752 1709765
>>709751
Бля, ну как тут ответить. Нужно и велосипеды городить и с устройством фреймворков ознакомиться.
Я бы выделил три этапа становления пхп программиста:
1) Пишешь как пишется, велосипедишь, набиваешь шишки. Такой код обычно выкидывается, за него потом стыдно.
2) Программируешь на фреймворке. Фреймворк может быть любой, ты просто пишешь код по его доке. В треде мог заметить фразы типа "пишу на ларавель", "симфони для энтерпрайза" вот это оно. Такой код обычно устаревает вместе с фреймворком, как говорится легаси по прибытии.
3) Понимаешь что ты используешь не фремворк, а инструменты, которые он предоставляет. И начинаешь выбирать себе инструменты сам. Не нравится роутинг в симфони? Пожалуйста, используешь более быструю библиотеку. Не нравится актив рекорд? Не вопрос, ставишь доктрину или автомаппер.
Звучит легко, но третий этап самый сложный. Для того чтобы делать осознанный выбор инструментов нужно знать как они работают. А для того чтобы понять что фреймворк это обуза нужно похоронить пару проектов. Ну и всегда есть вариант оказаться в первом пункте. Так что с первого и рекомендую начать.
753 1709782
>>709765

>Такой код обычно устаревает вместе с фреймворком


Если прямо по доке херачить без задней мысли, то устаревает в момент написания. Почти все фреймы задрочены под здесь и сейчас, а завтра пусть потоп нахуй. Так и делают в 9 из 10 случаев, за возможность так сделать фреймы и берут.

>фреймворк это обуза


Это правда. Хотя большинство на подобное у виска покрутит. Разработчик на фреймворке - рак современно пхп (и не только). И это притом, что еще от старого рака в виде вебмастеров не избавились. В конфе каждого фрейма и дня не проходит, чтобы очередной сениор-фреймворк-девелопер 300к не бзднул незнанием даже банальных вещей в синтаксисе/окружении/вебе/базе, слезно прося ему помочь и прикладывая скрины где все красным по белому, а сверхразуму все равно нихуя не понятно. Потому что пропускают все этапы и сразу к методичке "высрать блог за два копипаста" обращаются. Дешево, сердито, скорбно за профессию. Иногда даже скромные потуги местных в решение оповских задачек кажутся более интеллектуальными, чем эта идиократия на фреймах.

Так что по виду чаще этапы следуют как 2, 3, 1 (по желанию).

>>709751
Попробуй нагородить небольшой, но качественный(самое важное, если будет не качественно - зря время потратил, вероятно даже с вредом для себя) велик похожий на ларавел и работающий на демке как ларавел (или другой фрейм, похуй). Для меня загадка почему эту простую задачу ныне даже мидлы часто не могут осилить, которые не мало знаний имеют. А можно сделать с виду даже приятнее ларки.
Если сможешь, то вопрос завязки на фрейм для тебя отпадет навсегда. Не выйдет - фрейм в процессе тоже поковырял получается, профит.
754 1709783
какой самый примитивный фреймворк?
755 1709785
>>709782

> качественный


откуда я узнаю,если в процессе изучения с большой вероятностью я буду смотреть и копипастить чужой код и часто с разным подходом?
756 1709788
>>709785
Ну конечно никак. Более того статьи и книги, которые ты будешь читать уже устарели. А еще хуже что сам язык отстает на десять лет от мейнстрима. И сообщество соответственно тоже.
757 1709792
>>709788
а что код регистрации на сайте пхп7 будет отличаться от пхп5 сильно?
758 1709813
>>709792
Ну во первых код действительно будет отличаться, держать в голове кучу вариантов написания это полная хуйня.
А во вторых разница с кодом времен пятой версии будет в самом подходе к написанию. Я даже в 2014 году слышал: да кто ето такой ваш солид? Про него ниче в доке не написано.
759 1709882
>>709421
Интересно, почему когда кто-то хает PHP, то обычно выясняется что это node.js/python петух?
760 1710009
>>709565

Вообще, редис очень быстрый и одного сервера с редисом вполне может хватить для нескольких PHP-серверов. Если этого мало, то придется делать шардинг (partitioning) - разделение данных в кеше на несколько серверов. Самый простой способ это сделать - на клиенте брать хеш от ключа, затем делить хеш на число серверов и по остатку от деления понять, куда нам коннектиться:

server_number= hash(key) % server_count

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

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

Еще есть такая штука, как мастер-слейв репликация. Мы пишем в мастер, а читаем со слейвов. Слейвы подхватывают изменения с мастера. Это еще используют для отказоуcтойчивости как hot backup.

Также, можно почитать документацию по теме: https://redis.io/topics/partitioning
761 1710022
>>709638

Если бы ты поменьше ругался и побольше читал документацию, ты бы таких ошибок не делал. Redis - это in-memory key-value хранилище, он держит данные в RAM, хотя у него есть возможность сохранять их на диск через снапшоты и WAL. Он хорошо работает как кеш для снятия нагрузки с реляционной БД.

Заметь, что у редиса есть плюс в сравнении с твоей идеей держать данные в RAM процесса на Эрланге или ноде:

- он позволяет иметь один общий кеш, в отличие от in-process кеша, одновременно его перестраивать или очищать. А как ты будешь очищать in-process кеш кучи процессов на ноде, это отдельный вопрос
- он не замедляет сборщик мусора (скорость которого зависит от размера RAM), в отличие от in-process кеша

А вот APC позволяет кешировать не только код, но и данные в shared memory.

> И откуда ты взял что в badoo все прекрасно?



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

> Зайди в руби тред,



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

> сама виртуальная машина пхп течет



Ссылки на issue?
762 1710023
>>709783
Сам php если ты пишешь по заветам ООП
763 1710024
>>709783

Есть микрофреймворк Slim, он намного меньше и проще "больших" фреймворков вроде Laravel или Symfony.

>>709882

Обычно это значит, что кому-то нечем заняться.
764 1710349
>>701682
Ох, бля ну и пиздец твой код.
Режешь предложение по пробелам и кладешь в массив. Удаляешь точку, затем array_rand, ну капс там заменить и точку доставить. Всё, анончик.
765 1710395
Сделал парсер картинок из тредов, работает. Но на 18+ досках где надо подтвердить переход закономерно получаю ничего. Можно ли как-то обойти это говно?
766 1710398
>>710024

>кому-то нечем заняться



Кто-то уже выполнил свою задачу на node.js/python и надсмехается над пыхтящим выбравшим PHP недопрограммистом?
767 1710404
>>710395
Куки свои прокинь из браузера ему.
768 1710405
>>710404
А можно пожалуйста пример? Или ссылку на доку?
769 1710409
>>710398
а что,на пхп долго писать бэк?
770 1710434
>>710409
Бек пишется относительно быстро
771 1710443
>>710434

>Кто-то уже выполнил свою задачу на node.js/python


тгда к чему это?
772 1710458
>>710443
Я другой анон пыхер
774 1710483
>>710405
Куки - просто строки ключ-значение. Вот смотри:

https://www.php.net/manual/ru/function.setcookie.php

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

setcookie() задает cookie, которое будет передано клиенту вместе с другими HTTP-заголовками. Как и любой другой заголовок, cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться до остального вывода, включая вывод тегов <html> и <head>, а также пустые строки и пробельные символы.

>>710478
тут хуйня, долго искать, не то я скинул
775 1710491
>>709785

>копипастить чужой код


Ну как бы на этом уже и фейл, толку будет 0, копипастер ты наш.

>откуда я узнаю


Для начала можешь начать с правила - все по псрам.
В процессе читаешь/смотришь всякую хероту по ооп и архитектуре. Ее очень много, то, что тут у опа даже не верхушка айзберга. И стараешься применить.
Результат закидываешь сюда (или в пыхоконфу для джунов в телеге) и узнаешь, вышло у тебя или нет. По желанию правишь, пока пиздато не выйдет.
776 1710496
>>710491

>в пыхоконфу для джунов в телеге


Это та мертвая конфа на 15 тел?
Или какая-то другая? Кинешь ссыль?
image.png1 Кб, 172x59
777 1710499
>>710496
Я про эту, а не местную.
Слышал она именно для таких вещей существует, из остальных каналов с глупыми джуновскими вопросами по пхп гонят.
@phpGeeksJunior - новичкам
778 1710501
>>710499
А, я там тоже есть
15084260521300s[1].jpg7 Кб, 170x170
779 1710503
Анончики, отвлекитесь от бесконечного спора, что лучше php или еще что. У меня такой прикладной вопрос к вам. Вот вы спецы же:

Допустим, у меня есть php-страничка. И на ней плеер с mp4-файлом, вот только не_на_моей_сервере, а на удаленном.

Как мне при помощи php или php+js зашифровать его url, чтобы хитрый юзер или парсер, не выкупил, что я пирачу по лайту?
780 1710509
>>710491
если я не вижу как пишут регистрацию,я не никогда не напишу ее сам
781 1710531
>>710022

>Если бы ты поменьше ругался и побольше читал документацию


Если бы ты читал что я пишу, то понимал бы что у меня хватает компетенций отличиить redis от mysql. Расположение данных и способ их хранения не отменяет того факта что это все еще внешнее по отношению к пхп хранилище. И время на получение из него данных на каждый запрос все еще тратится. Ну и чтобы закрыть тему с определениями вот тебе цитата с офф сайта редиса Redis is an open source (BSD licensed), in-memory data structure store, used as a database

>в сравнении с твоей идеей держать данные в RAM процесса на Эрланге или ноде:


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

>А вот APC позволяет кешировать не только код, но и данные в shared memory.


А пхп позволяет использовать goto, но это не значит что так нужно делать. APC это устаревшая забагованая параша https://bugs.php.net/bug.php?id=57825 нахуй ты вообще её приплел.

>Ссылки на issue?


Две секунды в гугле https://bugs.php.net/bug.php?id=76982 критический баг с утечкой памяти внутри самого пхп. Подтвержден и висит джва года.
782 1710533
>>710503
Проксируй через свой сервер. Делай запрос к своему серверу, который будет делать запрос на удаленный.
783 1710551
Рубрика "ньюфажные вопросы". Решил в кои то веки разбить свой код на несколько файлов, чтобы было легче ориентироваться. Моим удивлением стало что пыхошторм не может его скомпилировать, просит какой-то PhpUnit. Загуглил, таких же ньюфажных вопросов как мой не нашел, а значит я что-то делаю не так. Я эти файлы создавал как New - Php File, надо было по-другому как-то? Мб как классы?
784 1710556
>>710551

>скомпилировать


Ну ты явно какой-то хуйней занимаешься. Сделай скрины или расскажи как ты код свой разбивал.
785 1710558
>>710483
Ну вот например, куда тут вставлять эти куки? Я так понимаю вот эта ответственна за 18+? И хватит ли только key - value или всю инфу запихивать?
786 1710580
>>710509

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

Твоя "регистрация" - это всего лишь форма с проверкой данных и сохранением в БД. Логин - это проверка логина-пароля и выдача авторизационной куки.

Про куки и про фреймворки урока нет, но по остальным темам кое-что есть тут: https://github.com/codedokode/pasta/
787 1710582
>>710556
https://ideone.com/aXqwbZ
Хотел по типу как у этого анона сделать.
788 1710586
>>710582
В твоем примере все в одном файле. Напиши как ты делил код.
789 1710588
>>710558
>>710483
И вообще, нахуй мне setcookie() если я курвом парсю чужой сайт?!
790 1710592
>>710586
Там комментарии есть. А вообще, что-то почитал в интернетах на эту тему, похоже мне еще рано делить код для обосраной задачки по основам основ ООП. Но с другой стороны интересно, почему это у анона вышло, а у меня нет.
791 1710596
>>710531

Ты придираешься к мелочам, называть редис БД или нет. Главное то, что и Redis и APC решают проблему "как хранить данные в памяти при умирающем PHP". Производительность у редиса огромная, несмотря на его однопоточность. А также важен момент, что во многих случаях хранить данные в разделяемом редисе удобнее, чем в памяти одного Node.JS воркера.

Насколько я знаю, приложения на Руби, Питоне или JS точно так же используют редис. Twitter, например, использовал memcache и redis ( https://www.insight-it.ru/highload/2011/arkhitektura-twitter-dva-goda-spustya/ ). Что интересно, они еще использовали Руби (который медленнее PHP).

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

Ну и наконец один из самых нагруженных российских сайтов - VK - использует PHP на фронтенде и не пытается что-то поменять. Так что PHP вполне пригоден для разработки веб-приложений.
792 1710599
>>710551
Гугли php autoload, psr-4, composer (в последнем смотришь автолоадер по psr-4, если хочешь).
В один файл тоже может сработать при, но я что-то не вижу, что бы ты код показал, а мы тут не телепаты.
793 1710600
>>710582

Тебе лучше всего сделать так:

- класть каждый класс в отдельный файл, названный как этот класс
- сделать файл-загрузчик index.php, который будет подключать эти файлы через require, создавать нужные объекты и вызывать функции вывода на экран
- запускать index.php

По поводу именования файлов - можешь попробовать почитать про PSR-4, если это не слишком сложно (неймспейсы пока можешь не использовать, для проекта из 4 классов они не требуются): https://github.com/codedokode/pasta/blob/master/php/autoload.md
794 1710603
>>710600
>>710599
Окей, спасибо за ответы, буду изучать.
795 1710609
>>710596

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


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

>Главное то, что и Redis и APC решают проблему "как хранить данные в памяти при умирающем PHP"


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

>Производительность у редиса огромная, несмотря на его однопоточность


И что это поменяло? А memcached быстрее редиса и хули? А знаешь что быстрее memcached? Прямой доступ к памяти.

>Насколько я знаю, приложения на Руби, Питоне или JS точно так же используют редис


Да ну нахуй! Так они и реляционные базы еще наверное используют?

>Ты пытался выдать это (хранение данных в памяти воркера) как преимущество других языков, но оно преимуществом не является.


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

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


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

>Ну и наконец один из самых нагруженных российских сайтов - VK - использует PHP


Ну это вообще пушка. Во первых они используют KPHP, он компилируемый и СТРОГО ТИПИЗИРОВАННЫЙ блядь. Там от оригинального пхп только синтаксис. Пиздец, ты этим примером сам себе в штаны серешь.
796 1710685
>>710349
Спасибо.Знал что можно куда лучше сделать, буду исправлять!
797 1710692
короче, подскажите как по уму развернуть себе рабочую среду. а лучше какой-то видеогайд.

Есть windows (извините, линуксы не умею).
как поставить WAMP знаю, не проблема. А как все остальное настроить?

Например чтобы нормально работал Composer? чтобы VSCode сразу находил php а не через говнокостыли путем указания пути к вампу (обновив который я ломаю этот vscode)

и т.д. вообщем по современному и чтобы удобно
798 1710696
>>710692
В идеале используй сразу докер. Гайдов как настроить дохуя, за ручку проведут и объяснят.
На втором месте просто линух. Не умеешь, так учись, все равно код на линухе будет работать. Нужно уметь поднять всю эту хуйню там.
На третьем месте шиндовс, но ставить все самому. Нихуя сложного там нет, а разобраться что нужно для запуска кода стоит.
На четвертом месте опен сервер.
На пятом вамп.
Я хуй знаю какие там у тебя проблемы с VSCode, но в пхпшторме ты просто явно указываешь исполняемый файл пхп, и похуй в вампе он или в китайской стене.
799 1710697
>>710533
Я не хочу гнать траф (mp4) через свой сервер - там его очень много. В этом и смысл пиратства =)
800 1710698
>>710588
Чтобы доска поняла, что ты свой 18+ анончик
801 1710699
>>710609
Есть не неумирающий php deamon, о чем спор вообще?
802 1710700
>>710697
Ну через браузер тебе все равно придется обращаться к реальной ссылке. Как бы ты не прятал ссылку в своем JS коде браузер показывает список запросов. Грамотный человек увидит всю хуйню на раз два.
803 1710701
>>710700
А blob?
спалил контору.PNG122 Кб, 3537x569
804 1710702
>>710701
А хули блоб? f12 нажал и увидел откуда что качается
805 1710704
>>710702
Есть же всякие обфускаторы-хуяторы. Что браузер и js понимал ссылку, а юзер нет. Не видел таких?
806 1710707
>>710704
Братан, ты в своем коде со ссылкой можешь делать что угодно. Но скачивать по ней видос будет браузер. А браузер не скрывает откуда он качает видос.
807 1710708
>>710707
Надо такую херню попробовать

https://javascriptobfuscator.com/Javascript-Obfuscator.aspx

только найти фри-аналог.
1588764795193691340.png542 Кб, 900x900
808 1710709
809 1710941
>>710600
>>710599
Попробовал провернуть это дело тремя способами. Через require_once и spl_autoload_register получилось, а через композер, хоть и дрочился с ним полтора часа, ничего не вышло. Я вот думаю, не в слешах ли кроется проблема. Просто у меня винда, а во всех autoload файлах, созданных композером, пути идут через прямые слеши, а из __DIR__ слеши обратные ведь получаются. Или я дурачек и нету разницы?
810 1711001
>>710941

Прямые слеши работают везде. Не забыл ли ты сделать composer dum-autoload после того, как правил composer.json? Не сделал ли ты ошибок в самом composer.json?
811 1711072
Двощ, насколько я проебываю полимеры?
Работаю пару месяцев из обязанностей доработка срм под нужды клиентов. Она странная, нихуя не задокументированная, официальная буржуйская недодока датируется годом 13-15 пару мажорных версий назад, с тех пор поменяли прилично
Допиливаю там, реализовываю здесь, и в общем то всё. Так и выглядят будни погромиста? Или надо будет после пандемии съябывать оттуда? Работа муторная (в основном из-за попыток понять, хуле тут не так), но нихуя не сложная, у меня лабы были заковыристее. Из плюсов только навык чтения кода бустнул, раньше вообще со страхом на чужой код смотрел
812 1711138
>>711072

>не задокументированная


>недодока датируется годом 13-15


Ты в какое-то говно попал
813 1711202
>>710698
В общем по-всякому пытался. И setcookie() и CURLOPT_COOKIE, и полную инфу и неполную, все куки какие есть, даже от яндекса и гугла. Не работает, я огорчен, братик.
814 1711243
>>711202
Значит, какая-то защита есть еще - там уже миллион вариантов, нужно браузером парсить, наверное.
15348391332260.jpg40 Кб, 720x720
815 1711315
Вряд ли кто-то ответит, но все же.
Вопрос по Laravel и в целом правильной архитектуре приложения.

В ларавеле есть модели Eloquent.
Наследники класса Model - это сложные хуйни с множеством всяких потрохов и прочей залупы. Они могут и рыбку съесть, и нахуй сесть, и в json обратиться.
С одной стороны хорошо, а с другой - как-то не очень, особенно когда у моделей есть связи друг с другом.

Так вот, в моем приложении требуется постоянно гонять объекты из БД в json и обратно, с полной конвертацией.
То есть, мне нужно точно знать, что в методе репозитария создается в точности то, что будет выдано контроллером в json'е.
Например, при конвертации в жсон модель может скрыть некоторые свои поля или наоборот высрать слишком много лишней информации о связях с другими моделями.

Так вот, нужно ли мне делать промежуточный слой сущностей данных? То есть, сущности - это ПРОСТЫЕ data-value объекты, которые делают только то, что содержат некую инфу и, что важно, способны полностью без потерь конвертится в json и обратно хоть по 100 раз.

Короче говоря, нужна полная сериализация объектов моделей, чего не могут дать стандартные модели Laravel.

Еще, в ларавеле завезли resource providers, по сути тот самый слой между моделью и жсон, но только вот беда блять: опять вышло какое-то монстроузное говно, которое не обладает полной сериализацией.
816 1711531
>>711001
На удивление на десятый раз заработало. Я просто не зная зачем точь в точь повторил то же, что делал до этого 10 раз. Dump autoload всегда делал 100%, composer.json такой же, как и все предыдущие разы. Чертовщина какая-то, хотя возможно что-то с инициализацией, т.к. первые разы просто начинал с создания composer.json, после чего IDE все остальное подхватывал, потом узнал что для этого есть специальный пункт меню. Хотя предыдущие несколько раз у меня и через этот пункт не выходило.
817 1711551
>>711315
Тебе не приходило в голову получать из базы сразу JSON. Модели нужны для хранения логики приложения, active record нужен для crud операций. Получение json'а это отдельная песня.
sage 818 1711593
>>711315
https://laravel.com/docs/7.x/eloquent-serialization
hiding и visible не достаточно?
819 1711621
Аноны, помогите с двумя задачками, не понимаю как их сделать.
Банкомат и лиличка:http://phpbook.ga/l1/mou-ikkai.html
820 1711648
>>711593
А deserialisation где?
821 1711651
>>711551
Госпаде, с кем приходится сидеть в одном треде.

>получать из базы сразу JSON


Существует миллион причин, почему это полная хуйня.
Навскидку: ты лишаешься всех возможностей сортировки, джоинов, индексов, реляционных отношений, короче всего, ради чего используют СУБД.

>active record


В ларавеле нет active record.
image.png3 Кб, 325x86
822 1711685
>>711651

>В ларавеле нет active record.


ActiveRecord это паттерн, а не название классов в рельсах и ии. Элоквент реализует актив рекорд.
мимо
823 1711689
>>711651

>Существует миллион причин, почему это полная хуйня.


Навскидку: ты лишаешься всех возможностей сортировки, джоинов, индексов, реляционных отношений, короче всего, ради чего используют СУБД.

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

>В ларавеле нет active record.



И как эта залупа там называется по твоему?
824 1711696
>>711651
Ты еблан или да? Индексируй свои отношения как хочешь. Я не предлагаю хранить в JSON'е, хотя если пользуешься постгресом тоже было бы нехуйно. Я говорю результат запроса возвращать сразу в нужном формате https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=27572491663fa2b463f3bdd6a105e9df . С кем приходится сидеть в одном треде.
825 1711728
>>711685
>>711689
В актив рекорде создание объекта равно созданию/получению записи в бд, а в ларавеле это совершенно не обязательно.
ebobo.PNG81 Кб, 2081x402
826 1711733
827 1711736
>>711696
Ты вообще жопой читал?
Основное, что мне нужно — чтобы сущности данных могли полностью сериализоваться и десериализоваться в жсон/массив и обратно без потери данных.

Нет, смысл не в том, чтобы конвертнуть выпук из базы в нужный формат.

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

Стандартные модели ларавел, похоже, не могут дать этих возможностей, потому что не обладают полной се/десериализацией и объект модели, созданной из бд и объект модели, созданный из массива — это не идентичные объекты.
828 1711737
>>711733
Ну ладно, ты победил.
829 1711745
>>711736
Чтобы было лучше понятно, нахуя оно мне надо:
Разрабатывается сложное приложение с разделением на сильно независимые сервисы.
Общее у них — только данные.

И надо, чтобы можно было в одном месте сделать

>return (new User (name, email, password))->toJson();


А в другом

>$user = User::fromJson ($json);


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

Обычные модели ларавел, во-первых, вообще не обладают способностью к полной конвертации туда-сюда, во-вторых, содержат много лишней хуйни, а в третьих, мне кажется вообще хуевой идеей строить приложение вокруг объектов active record, когда добрым 80% кода вообще похуй оттуда объект высрали и какая СУБД на проекте, им нужны только данные в удобном надёжном ооп-виде.
830 1711747
>>711736
Я тебе попытался объяснить что то, что ты делаешь не имеет никакого отношения к сущностям. Это чистые данные. Сущности и AR не предназначены для этого. Если тебе нужно просто отдать данные в форме JSON'а, то самый быстрый и эффективный способ избежать конвертации вообще, именно его я тебе и показал.
Если тебе нужно пока какой-то причине сериализовать данные туда сюда, то для этого придумали хуеву гору сериалайзеров
https://github.com/symfony/serializer
https://github.com/nilportugues/php-serializer
https://github.com/liip/serializer
831 1711752
>>711745
Похоже на два магических метода, которые реализуются как два пальца при желание. Ну ок, не твой вариант.

>независимые сервисы


Схема является внешней зависимостью к сервису значит? Посмотри протобаф, мб это как раз то, что ты хочешь.

>вообще не обладают способностью к полной конвертации туда-сюда


Чуть дописать то реально.

>содержат много лишней хуйни


Ты ее не сериализуй.

>хуевой идеей строить приложение вокруг объектов active record


Это тебе правильно кажется, и дело даже не в ар.

>нужны только данные в удобном надёжном ооп-виде


Гугли домены.
мимо
832 1711754
>>711747
Вот, спасибо, это мне и нужно.
Нужны сериализуемые и десериализуемые data value объекты.
833 1711757
>>711752
Во, тебе тоже спасибо. Это уже нужная информация.
834 1711758
>>711754
Все равно у меня ощущение что ты занимаешься хуйней. Если ты между червисами данные передаешь через апи, то все эти танцы нахуй не нужны. А если это происходит внутри одного приложения, то совсем пиздец.
835 1711806
В lumen можно добавить префикс к именам путей? Тут 'prefix' - для uri, а мне надо для генерации uri по именам, как в symfony (аннотация Route с параметром 'name' над классом-контроллером).
836 1711831
>>711621
Я не ОП а дерьмо, но насчет банкомата ищи в этом треде по ctrl+f, ОП отлично расписал, это если ты уже изи мод сделал по жадному алгоритму. На счет лилички там же все в подсказке написано. Разбиваем на строки регуляркой по \n помню что у меня сразу воспринимать перенос энтером как \n не хотело, не помню что с этим сделал, но нашел ответ за 30 секунд на стакероверфлове. Впрочем можно и просто подобавлять до концов строки \n, это вроде не чит., и разбиваем эти строки на символы по "". Теперь циклом выводим в первой строке через | все первые символы, во второй все вторые и т.д. Сразу оно красиво выглядеть не будет, думаю догадаешься что с этим делать. А на будущее, всё это уже сотню раз обсосано в архиве с шапки, там есть поиск по всем тредам.
837 1711844
>>711831
Спасибо большое, анон, порылся в архиве и нашел ответы на все свои вопросы
838 1711849
что есть прелоад и как его готовить?
image.png188 Кб, 410x357
839 1712063
>>656450 (OP)
Сап. Помогите с Wordpress(ом). Есть форма. Клиент должен иметь возможность запросить информацию о том, какие есть магазины, рестораны, отели в определенном городе. Получается нужна база данных? Как это реализовать? В Wordpress есть специальные плагины или как это делается? Или нужно это реализовать самостоятельно при помощи mysql? Но нужно обязательно дать возможность владельцу сайта добавлять новые данные в магазин. Хелп
image.png104 Кб, 1796x1229
840 1712065
Сап, двач. Даунский вопрос по laravel:

Можно ли сделать так, чтобы в модели datatime поле было в виде Unix Timestamp?
841 1712070
>>712063

> должен иметь возможность запросить информацию


> Получается нужна база данных?



Ну типа как бы да...

> В Wordpress есть специальные плагины или как это делается?



Плагины для работы с базой данных?)))
Да она и без плагинов это делает, по сути это основная функция wp.

>Или нужно это реализовать самостоятельно при помощи mysql?



Чивоооооооо блять?
843 1712347
Гайс, совсем даунский вопрос наверное, но че за хрень не так в таблице с игрой в кубик с ИИ, пол часа втыкаю и не пойму никак
844 1712370
>>712347
ты забыл ; в эхо
845 1712379
>>712370
>>712347
В результате у тебя он пытается прочитать echo и нижнюю команду как одно целое
846 1712399
>>712370
>>712379
Помогло, спасибо большое
847 1712406
>>712399
Анончик, ставь vscode + там плагин phphence и xdebug накатывай - избежишь таких косяков в будущем.
848 1712408
>>712399
Не знаю хороший ли совет, но можешь ещё пройти https://ru.code-basics.com/languages/php .
Там базовые вещи объяснены.Вроде как.
image.png129 Кб, 375x375
849 1712424
>>712063
>>712070
Аноны, помогите плиз, скажите поподробней, там реально не понятно
Dnm-XC0U8AAiNM5.jpg30 Кб, 975x590
850 1712490
>>712063
>>712424

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


Нужна, там эта вся инфа будет храниться. Магазы, рестораны и отели это одна сущность,они относятся к какому-то городу, город тоже сущность.

>В Wordpress есть специальные плагины или как это делается? Или нужно это реализовать самостоятельно при помощи mysql?


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

Тут другой вопрос, такое ощущение что тебе поручили это сделать но ты сам не знаешь, вот и спрашивается нахуя. Если ты никогда ничего не делал подобного то у тебя вряд ли получится. Не думаю что тебе тут подскажут именно решение уровня копипаст, тут уж сам должен.
851 1712561
>>712063
Начитаются своих вротпрессов, потом не могут 2+2 сложить...

Советую тебе потратить время на изучение основ mysql в том числе и не задавать таких идиотских вопросов
852 1712641
>>712561
В данном контексте совет неверный.

В wordpress есть удобный класс wpdb

https://wp-kama.ru/function/wpdb

Его и нужно курить.
853 1712715
>>712065
Гугли Date Mutators
854 1712719
Ради интереса, кто-нибудь смог с нуля вкатиться в стабильный заработок, хотя бы 5-10к, благодаря урокам в интернете? Или лучше брать платные курсы?
855 1712721
>>712719
5-10к это рублей в день или баксов в месяц?)))
856 1712722
>>712721
Мне хотя бы 10к р, я буду считаться успешных в своём селе
857 1712723
>>712722

Бля, чел, люди делают больше в магазах торгуя...
858 1712773
Ну че, правильно зделол?

<?php

error_reporting(-1);

$anonDice1 = mt_rand(1,6);
$anonDice2 = mt_rand(1,6);

$compDice1 = mt_rand(1,6);
$compDice2 = mt_rand(1,6);

echo "У анона выпало ($anonDice1) и ($anonDice2)\nУ компьютера выпало ($compDice1) и ($compDice2)\n";

$anonSum = (anonDice1 + anonDice2);
$compSum = (compDice1 + compDice2);

if (($anonDice1 == $anonDice2) && ($compDice == $compDice2)) {
echo "2 дабла\n";
exit();
}

elseif (($anonDice1 + $anonDice2) > ($compDice1 + $compDice2)) {
echo "Победил Анон";
exit();
}

elseif (($anonDice1 + $anonDice2) < ($compDice1 + $compDice2)) {
echo "Победил компьютер";
exit();
}
858 1712773
Ну че, правильно зделол?

<?php

error_reporting(-1);

$anonDice1 = mt_rand(1,6);
$anonDice2 = mt_rand(1,6);

$compDice1 = mt_rand(1,6);
$compDice2 = mt_rand(1,6);

echo "У анона выпало ($anonDice1) и ($anonDice2)\nУ компьютера выпало ($compDice1) и ($compDice2)\n";

$anonSum = (anonDice1 + anonDice2);
$compSum = (compDice1 + compDice2);

if (($anonDice1 == $anonDice2) && ($compDice == $compDice2)) {
echo "2 дабла\n";
exit();
}

elseif (($anonDice1 + $anonDice2) > ($compDice1 + $compDice2)) {
echo "Победил Анон";
exit();
}

elseif (($anonDice1 + $anonDice2) < ($compDice1 + $compDice2)) {
echo "Победил компьютер";
exit();
}
image.png15 Кб, 468x303
859 1712790
Почему я не могу в __clone клонировать те поля, которые определяются в __construct? Как это связано вообще, что с этим делать? Гугл не помогает.
860 1712834
>>712790
Вроде разобрался
861 1713025
>>712641
WP не умеет в pdo?
862 1713026
>>712719

>лучше брать платные курсы


Для тебя лучше платные
863 1713032
можно ли PDO который будет записывать засунуть в функцию,а в параметрах будет переменная,куда передам ч-л из формы?
864 1713110
>>712719

> брать платные курсы?


а лучше с гарантированным трудоустройством, но такие курсы стоят бешенны бабок, не меньше 100 тыс в месяц. в моем случае - 120
мимо
865 1713113
>>713032
$num = 5;
$word = 'banana';
$query = 'SELECT * FROM _table WHERE id=%d AND name="%s"';
$query = sprintf($query, $num, $word);

Типа такого?
866 1713118
>>713113
я хз,у вас спрашиваю
867 1713138
>>713110
Ты, блядь, ебанулся или оговорился, и хотел сказать "в год", пидорасина?
868 1713178
По какому приницпу работают flash messages в yoba-фреймворках типа symfony? Это "одноразовые" куки или какой-то внеземной дженерик-код, который, допустим обволкавает ответ контроллера по типу middleware?
869 1713187
>>713178
Если бы я делал флеш месседжы то я бы делал так:
При инициализации проверял есть ли в $_SESSION по какому-то своему ключу флеш сообщения. Если есть то я бы их копировал в глобальный объект флеш сообщений на уровне пхп, который очистится после завершения запроса, и сразу после копирования удалял бы их из сессии.
870 1713201
>>712790

Оператор clone применим только к объектам. У тебя же "скалярные" значения - строки, числа. Их копируют просто путем присваивания:

$x->isBoss = $y->isBoss;

В твоем случае это делать вообще нет смысла, так как при клонировании объекта его поля копируются (не клонируются) автоматически.

Волшебный метод __clone нужно писать только если у тебя в полях объекта хранятся ссылки на другие объекты. clone не создаст копии для этих внутренних объектов (а просто скопирует в клон ссылку на тот же обьъект), и это надо делать вручную.
871 1713215
>>713178

Просто в сессию пишут значение, а при загрузке следующей страницы достают значение из сессии, выводят на экран и удаляют его из сессии.

Есть же исходный код Симфони: https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Controller/AbstractController.php#L195

>>713032

Не очень понятный вопрос. В твоем примере кода
ниже есть SQL инъекция, так как параметры при подстановке не экранируются.

>>712773

Почти верно, но в условиях лучше было не писать сумму, а писать что-то вроде $anonSum > $compSum. Также, exit тут не требуется. Также, не предусмотрено, что выводить при
ничьей.
872 1713216
>>712063

В Wordpress нет такого функционала, это движок для блогов. Тебе надо либо найти плагин, либо написать его самому.
873 1713219
>>713215

> В твоем примере кода


это не мой пример кода.
суть вопроса,чтобы кусок кода PDO по записи(или удаления)засунуть в одну функцию с параметром
874 1713222
сап всем сеньорам помидорам. нужна ваша помощь, аноны. выкачал себе локально проект с прода, подключил бд и пытаюсь локально его себе развернуть на апаче через http. но тут возникла проблема, в htacess предположительно висит залупа которая рерайтит мне с http на https. поэтому все пути и ссылки соответственно слетают т.к. он обращается по https а не http как мне надо. вот сам код https://ideone.com/oO8C1a если че
как и че мне тут править чтобы запахало? уже по разному тыкался - но толку нихуя
движок опенкарта если че
875 1713230
>>713025
wpcd по сути есть pdo, но допиленный под cms . С учетом того, что в wp принято писать все на функциях без объектов.

Короче в API всё уже есть, не городите велосипеды.
876 1713231
Чому у мене 1 * 1 не наважується?
https://ideone.com/Ujnv0l
878 1713244
почему пхп не любят и хейтят,а кодеров на нем называют макаками?
879 1713248
880 1713260
>>713244
низкий пород вхождения, очень простой, т.к. изначально сам себе шаблонизатор
881 1713266
>>713260
те на нем пишут только херню тупую?
882 1713282
>>713266
вебсайты, сервисы. тупая или нет, зависит от идеи и реализации
883 1713290
>>713244

Психологические особенности или комплексы, попытка повысить свою самооценку за счет принижения других. Вот статья, которая содержит аналогичные претензии к другим языкам программирования: https://habr.com/post/315152/
884 1713291
Ну и вообще, как-то глупо задавать такой вопрос в PHP-треде. Если тебе интересно, почему кому-то кто-то не нравится, то наверно у него и надо спрашивать, почему, а не у того, кто не нравится.
885 1713293
>>713222
ну же анон, помоги. весь день ебусь
886 1713302
887 1713306
>>713293
Ты ввод ошибок то php-то сделай. На open server под видной по умолчанию есть. На opencart достаточно сменить данные домена и БД в конфиге и все должно работать. так было

Я вот чета не увидел у тебя рерайтов на https, может в глаза ебуся.
888 1713343
>>713201
Да я сверху написал что понял уже, прошу прощения за дэбильный вопрос. Запутался в официальной документации, думал что даже на обычные поля идет ссылка, а не копия.
889 1713346
>>713290
Мне одному кажется что там множество наведенных минусов php - это его достоинства?
890 1713437
>>713230
Ок, понял.
А почему никто не догадался прикрутить ооп сбоку к вп?
891 1713704
>>713437
Да хз. Наверное потому что избыточно и не нужно.

https://ru.wikipedia.org/wiki/KISS_(принцип)
892 1713709
>>713306

> На opencart достаточно сменить данные домена и БД в конфиге и все должно работать


и щас так есть. но проблема в том что я как раз до того как на сайт то зайти их настроил, и доступ к базе предоставил, через пма там накатил дамп бд и все ок встало. пма норм пашет, админка тоже, а вот основной сайт почему то мозги ебет. в логах апача ниче нет естессно.
893 1713723
>>713709
Попробуй скачни дефолтный opencart и от него воткни htaccess на время.
894 1713857
Товарищи, через какие сервисы вы выводите шекели из яд на карту?

Через обычные обменники конские комиссии

Вот нашел https://exchanger.money для вебмани - 130-200р экономии с каждый 100$
895 1713894
>>713857

Не пользуюсь яд с 2016 года и не жалею. Заводи карту сбера, сбер любят везде.
896 1713896
На чем пишете в 2020-м? Symfony, Laravel или может ждете Yii3? Как с доходом вообще? Сам выкатился год назад с пхп, вот интересно. Вакансии есть вкусные?
897 1713918
>>713896
на рельсах
898 1713923
>>713896

>Symfony


this

>Как с доходом вообще?


Как везде. Можно за 200к+ найти, можно за гроши вкалывать.
Куда выкатился?
899 1713968
>>713723
не, все норм пашет. хуй знает в чем проблема
900 1713979
>>713894
я хохол
901 1714096
>>713704

>Наверное потому что избыточно и не нужно.


Если проекты небольшие уровня лендинга, то мб. Но есть же всякие вукомерсы, где ооп всяко лучше, чем горы функций
902 1714105
>>713896

>На чем пишете в 2020-м? Symfony, Laravel или может ждете Yii3?


Laravel в основном, хочу на Symfony прод пописать, но без опыта этого самого симфони не берут пидарасы.
В прошлом писал на Yii2. Могу сказать, что Yii3 ждать не стоит, это мертвый фреймворк.

>Как с доходом вообще?


Очень грустно, если не в дс живешь. Второй месяц ищу удаленку на 100к+. До этого чуть меньше на удаленке получал (лара).
903 1714108
>>714105

>Yii3 ждать не стоит, это мертвый фреймворк.


Что-то там делают, не вникал.
904 1714118
>>713857
Посмотри кардпэй.
905 1714129
>>714108
После ухода китайского мейнтейнера на голенг разработка yii2 буквально встала. Макаров едва с поддержкой справляется. И сейчас он соло уже лет 5 пилит yii3.
Надо ли говорить, каким устаревшим говно yii3 будет на релизе?

Пока белые люди выкатывают апдейты новейших версий Симфони и Лары чуть ли не каждую неделю.
906 1714171
Пацаны, нуфаг просит помощи.

Есть один самопальный блог чисто на ПХП, нужно сделать к постам комментарии.
Но у меня затуп: Как сделать, чтоб комментарий привязывался именно к тому посту, к которому он будет написан?

Как бы, получится, посты лежат в одной таблице, комментарии - в другой. А как их свести вместе?
907 1714180
>>714171
Учи SQL, чтобы не задавать такие вопросы
908 1714196
>>714180
Мой вопрос не о том, как таблицы объединять, а в том, как привязать новое сообщение к уже опубликованному посту, который на странице в виде чистого текста.
При чем тут SQL вообще?
909 1714205
>>714196
Foreign key-ем привязать
910 1714283
Curl не загружает страницу, причина? У вас загружается?

https://www.booking.com/searchresults.ru.html?ss=Киев,+Украина&checkin_year=2020&checkin_month=9&checkin_monthday=25&checkout_year=2020&checkout_month=10&checkout_monthday=20&group_adults=2&group_children=1

curl ошибок нет, хеадер не возвращается, тело не возвращается. Модуль curl загружен

по file_get_contents все работает
911 1714307
>>714283
При этом куки от сайта высылаются
912 1714314
как отправить сообщение от одного юзера(аккаунта)к другому?
913 1714322
>>714283
все ясно, требовало Accept-Encoding: gzip, deflate, br
914 1714481
>>673254
Видимо, ты - это я через год, только я инженегр. Почему вкатиться не можешь? Не зовут на собесы? Или скилы надрочить не можешь? Получается планка входа в пхп не такая уж и низкая как все говорят. И кстати почему не пробуешь вкат на CMS?
915 1714615
>>674470
Держи в курсе
916 1715056
Посоветуйте как мудрее реализовать.

Есть парсер. Открываем страницу парсера, парсер отрабатывает 20 секунд, затем выдает рефреш и заново отрабатывает 20 секунд, и так до бесконечности, тоесть автоперезагрузка страница после завершения.

Необходимо это реализовать без участия браузера. И желательно без расширений для линукса (хотя если есть хорошие, я бы посмотрел). Парсер нельзя запускать одновременно в более чем 1 копии, и парсер должен заново запуститься, как только он завершит свою работу. Спасибо
917 1715069
>>715056

Тебе нужен скрипт для командной строки (и по-хорошему, надо бы изучать это до работы через браузер). Вот урок по командной строке: https://github.com/codedokode/pasta/blob/master/soft/cli.md

>>714314

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

>>714196

Используй связь один-ко-многим (один пост привязан ко многим комментариям).

>>713293

Ты можешь закомментировать RewritwRule, который отвечает за редирект. Если не знаком с реврайтами, можешь почитать статьи вроде этой, хотя документацию от Апача они не заменят: https://habr.com/ru/company/sprinthost/blog/129560/
15909673212120.gif263 Кб, 540x810
918 1715123
Опчик, взглянешь на вектор? https://github.com/kydva/vector
Из недостатков самому сразу приходит в голову то, что при изменении базовых свойств профессии я по сути просто меняю свойства уже существующих работников, а при создании нового работника этой профессии свойства будут предыдущими. Не придумал как это нормально сделать. Еще очень не нравятся функции padLeft и padRight. По всей логике для каждого столбца нужно задавать одинаковое значение отступа, но на практике выходит херня, и пришлось для каждой строчки отступы подбирать.
Также интересно выяснить несколько моментов с константами класса. Не придумал куда их поместить, поместил в Employee, но это плохо, родитель знает о ребенке, нельзя будет полноценно создать новую профессию без добавления новой константы в родителя. Было бы идеально помещать эти константы в сами классы профессий, типо Engineer::ENGINEER, Manager::MANAGER и т.д., я сначала хотел так и сделать, но меня со всех сторон закидало ошибками, уже забыл почему. И можно ли в тайпхинте для функции указать, что её аргументом должна быть константа класса?
Я уверен что ты несомненно найдешь намного больше дерьма и подводных камней в этом коде, и буду очень этому рад. Раньше ничего на проверку не кидал, но думаю что в этом случае важно сразу отучить меня от каких-то вредных привычек и приучить к хорошим в этой парадигме ООП. Алсо, приступать к кошкам-мышкам или к будильнику и гостиннице?
919 1715158
Аноны, объясните с какой точки для апача/нгникса начинается корень сайта? Суть вот в чем:
Я на работе пердолюсь с ларавел, там поставил homstead на виртуалке, все работает.
Дома почему то виртуалка не встала, и я развернул на опенсервер.
Опен сервер требует как папку домена - каталог myproject/public;
Я всегда думал что папка домена - это корень сайта, и апач/нгикс не имеет возможности идти ниже. А ту фактически vendor и все барахло мое находится ниже паблик.

Опять же автозагрузка классов должна понимать от какого корня считать нэймспэйсы (только вот задумался)
Подскажите, или дайте ссыль что почитать
920 1715167
>>715158

Веб-сервер не должен вылезать за корневую папку, это верно. А вот PHP скрипты могут лезть куда угодно. Потому мы кладем index.php в папку веб-сервера, а он дальше уже лезет куда хочет (куда мы пропишем).

Корневая папка веб-сервера специально выделяется отдельно, чтобы нельзя было снаруже скачивать или запускать произвольные файлы.

Композер (и его автозагрузчик) считает корневой ту папку, где расположен composer.json.
921 1715177
почему нет асинхронности?
вон на питоне уже есть
922 1715322
>>715177

Во-первых, есть (см ReactPHP), во-вторых, если тебе больше нравится Питон, то просто пиши на нем.
923 1715334
>>714481

>Получается планка входа в пхп не такая уж и низкая как все говорят


Если не из дса, то да, вход не из легких
924 1715336
>>715123
А где тут ООП собственно? классы !== ооп
925 1715359
>>715322
Бля, долбоебы, котрые пишут про эту залупу, вы хоть один проект на этой хуйне видели вообще? Вы блядь еще про корутины в пхп вспомните.
Вся асинхронная залупа на пхп до выхода восьмой версии это просто мысленный эксперимент, подрочить судьбу, посмареть как оно вообще может работать. Это нихуя не продакшен реди блядь.
926 1715403
>>715359

>вы хоть один проект на этой хуйне видели вообще?


В гугле забанили?
Из известных - телеграм бот апи на реактпхп
927 1715413
>>715403
Сразу открываешь issues, а там пацаны внезапно выясняют что Guzzle не асинхронный. И такой хуйни ты глотнешь ведро, причем дырявой ложкой.
В гугле можно что угодно найти. Хоть дрочащих карликов, хоть фото пизды чьей-то мамаши. То что ты у себя дома пишешь для души тоже мало кого ебет.
Ты проект на этой залупе в продакшене видел? Реальный фидбек у тебя есть?
928 1715479
>>715413
Таблетки пил сегодня?
929 1715531
какая разница между апачем и nginx?
930 1715533
>>715531
Такая же, как между линуксом и виндой. Совершенно разные вещи, решающие одну задачу.
931 1715535
>>715533
на 2 все работает быстрее?
932 1715537
>>715535
Что на 2? На энжинксе? Да, он шустрее, гораздо. Потому в него так и вцепились сейчас компании. Но у апача тоже 1.5 плюса есть. Тебе эти знания никак не мешают юзать то или иное сейчас.
933 1715732

>Casting Variables


как это нормально перевести?
934 1715747
<?php
$a = "ivan";
$a = (int)$a;
print($a);
?>
почему 0,типа не верно?
935 1715826
У пыха есть такие технологии?

Закачивать файл с одного сервера и сразу отдавать в браузер без выкачки полностью перед отдачей, дабы задержек не было
936 1715827
settype это фича,что бы было как в типизированых языках?
937 1715864
>>715413

Что ты так нервничаешь? Есть куча задач, которые спокойно решаются без асинхронности. И, кстати, я когда-то давно для себя еще на curl писал парсер, качающий во много потоков, когда про ReactPHP никто и не слышал.

>>715732

Приведение (изменение) типа переменных. Например, преобразование string в int или обратно.

>>715747

Потому что ivan это не число.

>>715826

ReactPHP

>>715827

Это преобразование типа переменной.
938 1715868
>>715864

>Это преобразование типа переменной.


те это одна из фичей как (int)$x?
939 1715869
короче, если вы затупили на задачке с годовыми процентами - не беритесь за php, вы - долбоёбы
940 1715883
Парни, нужна ваша помощь. Если есть спецы – подскажите проверенное решение по интеграционному тестированию внешних апи на symfony, guzzle, phpunit. Пробовал php-vcr, для записи реквестов пойдёт, но в самих тестах глючит. Может кто сталкивался? На гитхабе полно всяких guzzle middleware, но они последний раз обновлялись 3-5 лет назад.
Что нужно: в тестах брать реквесты из файла.
941 1715891
>>715826

>readfile

Снимок экрана (6).png168 Кб, 1366x768
942 1715896
не понял,объясните
943 1715905
>>715896
дошло
944 1715979
какая разница между || и xor?
945 1716002
>>715896
Пиздец, поставь open server, там включи xdebug и накати плагин на свой блокнот. Как ты будешь переменные смотреть с массивами и точки остановки? echo и var_dump каждый раз?
946 1716003
>>716002
есть ксамп
947 1716004
>>716003
xdebug включай и вывод переменных и всего в редактор, по нормальному, потом смотри точки остановки.
948 1716008
>>716002
я новичок,и пока не понимаю,зачем?
949 1716010
>>715979
бамп вопросу
950 1716011
>>716008
Когда скрипты будут сложнее, увидишь зачем.
951 1716251
>>716008
Затем, чтобы не гадать на кофейной гуще.
И вообще ставь phpstorm и не еби мозг
952 1716464
>>716251
он тормозит
953 1716470
>>716464
vs code ставь, он не тормозит
954 1716489
>>716470
а как в вс коде очистить терминал не убивая его?
Снимок экрана (7).png236 Кб, 1366x768
955 1716492
все правильно делаю?
956 1716508
как сделать,чтобы результаты вывода не слипались в одну строку?
957 1716509
>>716508
$number=1000;
echo (float)$number;
echo (string)$number;
958 1716693
>>716464
Нормальный комп возьми с ssd
959 1716708
>>715979

|| - это логическое "или". a || b дает true, если справа или слева выражение равно true, и false в противном случае.

xor - это логическое "исключающее или". a xor b дает true, если с одной стороны true, а с другой false.

Почитай про булевы выражения:

https://www.php.net/manual/ru/language.types.boolean.php
https://www.php.net/manual/ru/language.operators.logical.php

>>716002

Вообще, пока у него программы из 3 строчек, var_dump хорошо работает.

>>715896

$$name - это обращение к переменной, имя которой хранится в $name.

>>716508

добавлять echo "\n"; - это сделает перевод строки.
960 1716710
>>713979

А, ну да, у вас же сбербанк отменили :^)

Ну тогда только пекойны, валюта будущего...
961 1716719
>>715979
(1==1) || (2==2) = true
(1==1) xor (2==2) = false

(1==2) || (2==2) = true
(1==2) xor (2==2) = true

(1==2) || (2==1) = false
(1==2) xor (2==1) = false
962 1716731
>>716708

>добавлять echo "\n"; - это сделает перевод строки.


я сделал PHP_EOL
>>716708
я это читал.их доки местами слишком сухие,приходиться гуглить

>$$name - это обращение к переменной, имя


это мне еще вчера дошло
Снимок экрана (8).png105 Кб, 1366x768
963 1716732
964 1716847
не понимаю постфикс инкримент и декримент...
Аннотация 2020-06-08 163816.png36 Кб, 499x559
965 1716870
>>716847
это типа отложенное увеличение и уменьшение?
те сначала переменная не меняется а появляется позже?
966 1716949
>>716847

Если использовать инкремент в выражении, например:

$a = $b++;
$a = ++$b;

То в одной строчке переменная $a получит старое значение до инкремента, а в другой - уже увеличенное значение. Вот и вся разница.
967 1717523
>>715883

Во-первых, можно попробовать Mockery - им подменять Guzzle на мок, который вернет нужный результат. Во-вторых, в самом Guzzle есть это: http://docs.guzzlephp.org/en/stable/testing.html
968 1717552
>>715123

> $isBoss = isset($worker[3]) ? true : false;


isset() уже возвращает true/false, потому тернарный оператор не нужен.

> $newDepartment->setEmployee($employee);


Лучше назвать метод addEmployee().

> strlen($string)


Надо использовать mb_strlen, чтобы корректно работало с кирилицей.

При создании профессии ты переопределяешь свойства вроде salary. Но во-первых, это никак не документировано, во-вторых, никак не проверяется. Если бы ты вместо этого сделал в Employee абстрактные методы вроде getBaseSalary(), то эти 2 проблемы были бы решены.

> const ANALYST = Analyst::class;


Можно было не определять эти константы, а сразу использовать в коде Analyst::class.

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

Методы вроде добавить/уволить/найти работника, назначить босса - универсальные, а вот методы вроде cmpForRemoving() относятся к задаче антикризисных мер и делать им в классе Employee нечего.

> $this->salary = ($salary != 0) ? $salary : $this->salary;



Тут можно было просто сделать 3 отдельных метода, и название вроде changeSalary() читалось бы лучше.

> private array $employeesOfDepartment;


Лучше просто $employees.

Конструктор обычно пишут в начале класса, а не в середине.

> getCountOfEmployees


Лучше countEmployees().

Вывод таблицы тоже лучше делать отдельными функциями/классами и не помещать в Company.

> Алсо, приступать к кошкам-мышкам или к будильнику и гостиннице?


Наверно, лучше делать гостиницу и двигаться к задаче про список студентов.

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



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

> но на практике выходит херня, и пришлось для каждой строчки отступы подбирать.



Надо использовать mb-функции.

> Не придумал куда их поместить, поместил в Employee, но это плохо, родитель знает о ребенке, нельзя будет полноценно создать новую профессию без добавления новой константы в родителя.



Лучше использовать названия классов как константы. А так, вариант с Engineer::PROFESSION тоже рабочий.

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



Увы, нет. В других языках для этого есть enum (перечисления, выбор из нескольких опций), а в PHP они пока только есть решения вроде такого: https://stitcher.io/blog/php-enums
968 1717552
>>715123

> $isBoss = isset($worker[3]) ? true : false;


isset() уже возвращает true/false, потому тернарный оператор не нужен.

> $newDepartment->setEmployee($employee);


Лучше назвать метод addEmployee().

> strlen($string)


Надо использовать mb_strlen, чтобы корректно работало с кирилицей.

При создании профессии ты переопределяешь свойства вроде salary. Но во-первых, это никак не документировано, во-вторых, никак не проверяется. Если бы ты вместо этого сделал в Employee абстрактные методы вроде getBaseSalary(), то эти 2 проблемы были бы решены.

> const ANALYST = Analyst::class;


Можно было не определять эти константы, а сразу использовать в коде Analyst::class.

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

Методы вроде добавить/уволить/найти работника, назначить босса - универсальные, а вот методы вроде cmpForRemoving() относятся к задаче антикризисных мер и делать им в классе Employee нечего.

> $this->salary = ($salary != 0) ? $salary : $this->salary;



Тут можно было просто сделать 3 отдельных метода, и название вроде changeSalary() читалось бы лучше.

> private array $employeesOfDepartment;


Лучше просто $employees.

Конструктор обычно пишут в начале класса, а не в середине.

> getCountOfEmployees


Лучше countEmployees().

Вывод таблицы тоже лучше делать отдельными функциями/классами и не помещать в Company.

> Алсо, приступать к кошкам-мышкам или к будильнику и гостиннице?


Наверно, лучше делать гостиницу и двигаться к задаче про список студентов.

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



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

> но на практике выходит херня, и пришлось для каждой строчки отступы подбирать.



Надо использовать mb-функции.

> Не придумал куда их поместить, поместил в Employee, но это плохо, родитель знает о ребенке, нельзя будет полноценно создать новую профессию без добавления новой константы в родителя.



Лучше использовать названия классов как константы. А так, вариант с Engineer::PROFESSION тоже рабочий.

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



Увы, нет. В других языках для этого есть enum (перечисления, выбор из нескольких опций), а в PHP они пока только есть решения вроде такого: https://stitcher.io/blog/php-enums
969 1717557
пишу прогу для if-else
как в переменную запихнуть диапазон чисел от 1 до 5?
Снимок экрана (8).png105 Кб, 1366x768
970 1717597
>>717557
сделал так
Снимок экрана (10).png115 Кб, 1366x768
971 1717600
>>717597
бля не то
вот
972 1717740
>>717557
switch($a){
case “1”:
...
}
973 1717742
>>717597
>>717600

Васян, а зачем тебе этот редактор, когда удобнее в самом пхп изучать вот такие основы?

В коесоле запускаешь рнр с ключем -а и пишешь свои ветвления, функции, переменные...
974 1717754
>>717742
Очень удобно код писать.
Ты бы еще на бумаге предложил
975 1717769
>>717742
я так сначала пробывал,удобно только для пары скриптов
976 1717786
какая разница между while циклом и for циклом?
977 1717822
<script src="otherdomain.ru/s/script.php?y=2020" ></script>
Скажем, я владелец домена otherdomain.ru. Мне необходимо отловить значение параметра "y" и не его основе выдать соответствующую модификацию скрипта.

У меня пока примерно так (я юзаю yii2)
actionScript($y) {
header('Content-Type: application/javascript');
return "alert($y)";
}

Но тут скрипт маленький, а если мне надо выдать js код длинной в 200 строк? Я же задолбаюсь его писать как строку.
978 1717839
>>717822
ps более того, в выдданом скрипте должны быть использованы некоторые констаны из моего сервера, то есть
actionScript($y) {
header('Content-Type: application/javascript');
return "alert($y)".SomeModel::TYPE;
}
979 1717845
>>717822

Используй шаблонизацию ( https://github.com/codedokode/pasta/blob/master/php/templates.md ). Если вариантов скрипта немного, то можно еще ускорить отдачу, если сгенерировать все возможные варианты и отдавать готовый файл.
980 1717869
>>717754
Поясни, что неудобного для новичка? Вот прям по пунктам. Он же основы учит, ему как раз автокомплит на данном этапе не нужен. А так он функцию написал, если ошибку допустил, то увидит сообщение. Будет наука писать код думая, а не просто на клавиши давить.

>>717769
Ты учишь основы — это не про скрипты. Тем более у тебя интерактивные сейчас сурипты, за каким ты их хуем в вскоде пишешь? Стильно, модно, молодёжно? Тебе сейчас понять синтаксис надо, набить руку набирая некий код. IDE/редактор с подсветкой, когда ты знаешь, что ты пишешь. Ты же сейчас выдумываешь сфер чесуого коня в вакууме.
981 1717937
>>717869
Интерактивный режим удобен, если нужно попробовать буквально пару строк. Иначе начинаются траблы в работе с блоками кода. Нет банальной копипасты, не вынесешь блок кода в функцию + иде подсветит тебе синтаксические ошибки
982 1718052
>>717937
Ну ты видимо не стал себя утруждать прочитать мой пост. Ты описал те моменты, с которыми связаны программисты, а не ученики.
983 1718116
>>718052
Видимо мы о разных нуфагах.
Ученики - это которые не могут из двух букв сложить выражение?
984 1718156
Заметил, что телега фильтрует названия волшебных констант, то есть например __DIR__ нельзя написать, получается dir. Она что на пхп написана?
985 1718183
>>718156
__твой текст__ это италик форматтер текста
С маркдауном не работал?
986 1718405
ОП, сделал задачу про Вектор.
Проверь, пожалуйста.
http://sandbox.onlinephpfunctions.com/code/71f694bdf48900a09b25ad3d635f28cacd338a49
Делать ли мне кошки-мышки? Ее просто критиковали в прошлых тредах.
987 1718707
>>714105

>До этого чуть меньше на удаленке получал (лара).


Сколько опыт?
988 1718789
>>718707
2 года в офисе, 1 на удаленке
989 1718932
laravel
990 1718960
991 1719230
>>718960
bitrix
Снимок экрана (11).png91 Кб, 1366x768
992 1719394
как достать необходимую строку со всеми потрохами?
993 1719411
994 1719426
>>719411
там ассоциативный как ,а здесь обычный двумерный
995 1719495
>>719394

попробуй $cars[0][0]
996 1719531
>>719495
этот способ я знаю-по строке и колонке.
я спрашивал про вывод содержимого строки полностью,например 3 строка где лада с ценами
997 1719545
>>719531
$implode($array[2])
998 1719546
>>719545
implode($array[2])

>fix

999 1719582
>>719531

var_dump($cars[2]);
Снимок экрана (12).png197 Кб, 1366x768
1000 1719584
>>719545
>>719546
заработало,но как то не очевидный способ.
пример другой
1001 1719634
Подскажите в чем ошибка
<?php
$regexp= "/^(\+7\8)\d{10}$/ui";
$subject = '8-911-404-44-11';
preg_replace('/[^+\d]/','',$subject);
if (preg_match ($regexp, $subject)) {
echo 'ваш номер: {$subject}';
} else {
echo "Введите номер ввиде: в начале 8 или +7, потом идут 10 цифр";
}
1002 1719677
>>719584
Это по сути реализация toString() для твоего кода
Так-то там любая херня может быть, превращающая твои данные в строку
1003 1719679
>>719677
надо почекать мне всякие фичи для массивов
1004 1719715
>>719584

В implode нужно указывать разделитель, например implode(', ', $array).

>>719634

У тебя указано \d{10} - "ровно 10 цифр идут подряд". А в номере между цифрами минусы.

Советую написать выражение вида "ровно 1 цифра, за ней любое число минусов и пробелов", затем взять его в круглые скобки и добавить повторение 10 раз:

(выражение){10}

Круглые скобки нужны, чтобы {10} применялось ко всему выражению, без них оно применяется только к последнему куску выражения.
image.png24 Кб, 994x205
1005 1719734
Сап, двач, вопрос по MVC в Laravel.

У меня есть таблица users, у неё есть таблица orders, ордеров может быть много, у каждого order есть FK users

Нормально ли когда модель User напрямую работает с ордерами? Ну например как тут:
https://pastebin.com/CHNP3yeq

Или модель должна исключительно работать сама с собой?
Снимок экрана (13).png160 Кб, 1366x768
1006 1719758
почему облом?
1007 1719773
>>719758
а понял
echo $flowers[1]["Цена"];
1008 1719782
>>719734

>Нормально ли когда модель User напрямую работает с ордерами?


Не нормально. У тебя один класс зачем-то лезет в кишки другого.
Ну и елоквент модель != модель М из MVC
1009 1719895
>>719758
Тебе и другим анонам на винде и ноуте советую накатить Windows Terminal и wsl. Экщпириенс разработки сразу повысится
1010 1719920
>>719782
А где должно быть лучше? В моделях, контроллерах, ещё где-то?
1011 1720023
>>719734

Делают классы-сервисы и код помещают в них. Для каждой задачи - свой сервис.
1012 1720129
>>716251
>>716693

Двачую, ссд нужен, у меня комп мощный но на старом харде безбожно лагало, попробовал через китайский ссд с алика - летает, ну плюс ещё лишние плагины можно отключить
AnNzs9ffV4s.jpg21 Кб, 360x228
1013 1720147
>>717742
Ухади
iKeIjABewJ8.jpg80 Кб, 924x400
1014 1720151
>>719715
Нашел вот такое решение, зачем в этих местах двойное экранирование?
1015 1720197
>>720147
ты не правильно запускаешь
Снимок экрана (14).png157 Кб, 1366x768
1016 1720431
поясните за 16 строку
1017 1720445
>>720431
а сам понял.
1018 1720821
В регулярках существует опция "всё кроме букв" или обязательно все в квадратных скобках перечислять?
1019 1721052
>>720821

Можно в квадратных скобках с помощью ^ указать, что нужен любой символ, кроме указанных: [^0-9] значит "любой символ, кроме цифры".

Смотри подробнее в мануале: https://www.php.net/manual/ru/regexp.reference.character-classes.php
1020 1721122
>>719920
Бизнес логика пишется отдельно от контроллеров и моделек бд.
1021 1721123
>>720147
Да как вас Земля держит?
Прокинь в path путь до php.exe и запускай через php tvoi_php_file.php
1022 1721308
>>721123
Я та5к и делал как бы
1023 1721398
>>721308
ты php.exe дергаешь, когда надо просто php и всё получится
1024 1721473
>>721398
Ок, заработало, посоветуешь инфу чтобы обмазаться консолью с пыхой?
1025 1721637
>>721473
google
1026 1721686
array_column() только для многомерных массивов и чтобы внутри были все одинаковые ключи,чтобы делать выборку массива по ключам?
Снимок экрана (15).png101 Кб, 1366x768
1027 1721789
array_slice(array, start, length, preserve)
где start это номер индекса или считается как просто номер элемента (1 2 3 и тд) после которого идет срез?
1028 1721930
Посмотрите пожалуйста задачку про числа прописью
https://ideone.com/Pll6kM
Ещё не доделал, но хотел бы спросить движусь ли я в правильном направлении
1029 1722087
>>717552
Спасибо большое что посмотрел. Понял-принял. Сейчас наконец-то появилось немного свободного времени, сделал гостиницу, пол дня пытаюсь запилить нормальный алгоритм для вот этой функции:

>то же самое, но при отсутствии одного подходящего номера для Гостей разрешается заселить их в несколько номеров, опять же, начиная с самых дешевых. Например, приехало 3 Гостя, но все 3-местные номера заняты и мы выделяем 2 2-местных, или 3 1-местных или 1-местный + 2-местный.


Пока что сделал по-жадному, к примеру: группа из 6 гостей, есть номер на четырех и два номера на трех человек, она сначала всегда выберет номер на четырех, не смотря на стоимость, после чего для двух оставшихся гостей уже выберет номер на трех. Что-то уже исчерпал мысли как это нормально реализировать, по идее это поиск пути на графе? Если так, то просто все варианты перебирать нельзя, так как там огромнейшие факториалы будут выходить при большом количестве комнат.
А на счет других функций, вроде бы все хорошо, буду рад если глянешь https://github.com/kydva/HotelOOP
Все функции я протестировал в самых разных ситуациях дебаггером, но к сожалению почти ничего вывести вардампами чтобы показать нельзя, так как Комнаты в истории имеют ссылки на Гостей, которые в них побывали, а Гости в истории имеют ссылки на Комнаты, в которых они были. Выходит бесконечная рекурсия. Насколько я понимаю, программу это грузить не должно, так как это обычные ссылки, но вардампы и прочее пытаются максимально вывести все ветки. Алсо, начитался про хлеб, решил классы особо не плодить.
1030 1722408
>>721789
https://www.php.net/manual/en/function.array-slice
Note:
The offset parameter denotes the position in the array, not the key.
image.png42 Кб, 615x412
1031 1722419
Анчоусы, запрашиваю помощи.
Не срабатывает часть условия.

Не вижу очевидных ошибок, мне возвращается вардамп переменных и тишина.
Тот же самый запрос в sql работает корректно, но при попытке внести данные через ПДО чот не выходит.
На синтаксис не ругается, данные в переменных корректные.

В чем дело?
1033 1722606
>>722419
https://www.php.net/manual/ru/pdostatement.bindparam.php
Посмотри как оно работает. Чтобы не заходил - надо писать не символ вопроса, а привязать к псевдопеременной - например, :colour. А в bindparam указываешь bindParam(':colour', $value)
1034 1722664
>>722408

указывает ПОСЛЕ какого элемента идет срез?
Снимок экрана (16).png128 Кб, 1366x768
1035 1722774
почему не работает разбивка?
1036 1722857
>>722664

Элементы в масссиве содержат ключ и значение и упорядочены, то есть массив "помнит", в каком порядке в него вставлялись значения. Элементы в массиве хранятся в порядке вставки, и например, можно сделать массив, где ключи идут не подряд: $x = [1 => 100, 0 => 200];

start это номер элемента, начиная с 0. То есть если start = 0, то берутся элементы, начиная с самого первого.
Снимок экрана (17).png108 Кб, 1366x768
1037 1722881
вот мой успех!
1038 1722934
>>722774

Результат вызова array_chunk надо сохранить в переменную.
1039 1723038
>>722419
Добавь кавычки к вопросам, отличные от тех, где они находятся. в этом случае одинарные
1040 1723142
Друзья, помогите с вопросами:

1. Dependency Injection - это все лишь о том, что в функцию-конструктор передается объект сервиса?
2. Dependency Injection Container - это просто класс, который в себе имеет массив, в который через сетеры/гетеры можно записывать сервисы?
3. Контейнер нужен для того, чтобы в провайдеры просто передавать несколько зависимостей, так?

Может есть какой нибудь хороший ресурс, или книга, в которой это хорошо разжевано. Потому что я сколько читаю про эти DI, но в итоге только путаюсь.
1041 1723257
>>718405
Бамп
1042 1723654
Ставить линупс?
1043 1723782
>>723654
Ставь докер
1044 1723802
return
каково применение,только простым языком
1045 1723809
>>723802
Хватит спамить.
Это гуглится в первых строчках.
В любой книге по программированию поясняется
1046 1723813
>>723654
В перспективе - да. Учиться легко без него, а когда понадобится- поймешь сам.
1047 1724130
Анонычи, поясните за почту, а точнее за всю цепочку необходимых инструментов.
В пхп есть функция mail, на сколько знаю она дергает линуксовую "mail" функцию которая отправляет почту.
В винде такой нет. Значит я должен поставить что то Типа phpMailer.
Но что в винде по итогу отправляет почту? Должен быть какой то почтовый клиент же.
Я отправлял почту через smtp гугла на свой ящик, но немного плыву в цепочке необходимых этапов.
1048 1724160
Использую IDE phpstorm. Запускаю свои скрипты в самом же IDE таким образом, кликаю на свободном поле редактора, далее появляется меню (картинка 1). Я нажимаю на Run -> .php(PHP script), но бывает я промахиваюсь и выбираю Run -> .php(JavaScript), я получаю результат, но уже в браузере. И потом уже производя те же действия я не могу запустить код в самом IDE, так как мне уже по умолчанию предлагается вариант Run -> .php(JavaScript) вместо нужного мне Run -> .php(PHP script) ( картинка 2) . Вопрос как мне запустить мой код в самом IDE в этой ситуации, когда мне предлагается запустить код в браузере с помощью JS
1049 1724222
>>724160
Я бы где-то в Run Configuration или Edit Configuration заглянул
IMG20200616095024.jpg6,7 Мб, 4000x3000
1050 1724415
Аноны, подскажите, что не так в коде?
Ни ошибок, ни варнингов, но скрипт работает не правильно.
1051 1724434
>>724415
Чтоб тебе так же таски давали на работе.

Какая нахрен фото экрана?
Что значит работает неправильно? Что ты ожидаешь и что происходит?
1052 1724435
>>724415
как не правильно?
1053 1724436
>>724415
код в кучу с разметкой, не PDO.
1019775280.jpg151 Кб, 463x650
1054 1724642
Кто-нибудь читал, хорошая книга? Хочу научиться делать сайты.
1055 1724671
>>724642
Морально устарела
1056 1724675
>>724671
Что сейчас изменилось? Книжка 16го года ведь.
1057 1724771
>>724415
Ну как что не так? Гавнокод лютейший, я пару минут честно пытался вчитаться. что ты хотел написать в конце 15й и 16й строки? Точно оператор верный?
1058 1724879
>>724675
Там примеры на 5ой пыхе вроде, да и в целом подход устарел.
Сейчас же всё на фреймворках, вся эта низкоуровневая ебля зарыта под капотом.
Ну и голый жс на фронте - сейчас везде реакты
1059 1724956
>>724879

Знание фреймворка или реакта не отменяет необходимости знать основы (работа с БД, формами, шаблоны).

>>724642

Когда-то я смотрел эту книгу 2011 года и код там был плохой, особенно код соцсети в конце. Не знаю, как в более новых изданиях.

>>724415

Напиши, что именно не так. Также, у тебя время для кук задано в прошлом.
1060 1724964
>>724130

В мануале по функции mail() написано ( https://www.php.net/manual/en/function.mail.php ):

> The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).



На Линуксе, да, команда mail() просто запускает программу sendmail и передает ей письмо. На Windows она соединяется с почтовым сервером по протоколу SMTP с параметрами из php.ini. Почтовый сервер (наверно) может быть установлен и локально.

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

>>723802

Возвращает значение из функции и завершает ее выполнение. Если ты напишешь вызов функции так:

$x = some_func();
...

То будет вызвана функция some_func(), и когда в ней встретится оператор return, например return 5; то функция "вернет" значение 5 (то есть, оно попадет в $x) и далее будет выполняться код, который идет после $x = ....
1061 1724975
>>723142

DI - это идея, что "зависимости" (объекты и параметры, которые нужны данному объекту для работы) должны передаваться в объект снаружи, а не объект сам должен их как-то создавать или получать. Если что, у меня есть урок по теме https://github.com/codedokode/pasta/blob/master/arch/di.md

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

Dependency Injection Container - это штука, которая знает, кто от кого зависит и умеет создавать объекты и их зависимости, избавляя от создания всех объектов-зависимостей вручную. То есть ты просто просишь "дай мне сервис X" и не думаешь о том, что ему надо передать - контейнер сделает это сам. Есть контейнеры, где зависимости описываются вручную в конфиге, есть контейнеры с autowiring, когда контейнер по тайп-хинтам в конструкторе сам "догадывается", что надо передать.

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

$logger = $container->get('logger');

или

$logger = $container->get(Logger::class);
1062 1725047
>>724964
еще тупой вопрос,я не понял как работает ПРИСВОЕНИЕ по ссылке
1063 1725048
>>724956

>Знание фреймворка или реакта не отменяет необходимости знать основы (работа с БД, формами, шаблоны).


Я это не отрицал.
Но тот подход, что в книге, где мы пилим приложуху из говна и палок, остался только в дремучем легаси.
Так что приучаем себя сразу писать на современном стеке
1064 1725078
>>725047

Покажи минимальный пример кода, так как тут есть разные варианты.

>>725048

Тогда получится, что ты не знаешь основ. А это плохо.
1065 1725079
>>725048

>Так что приучаем себя сразу писать на современном стеке


а что,на чистом пхп это будет выглядеть иначе или уже зашквар?
1066 1725090
>>725078

>$a = 3;


$b = &$a;
$a = 4;
print "$b";
пример с СО или пример с офф сайта

>$a = 3;


$b = &$a; // $b - это ссылка на $a

print "$a\n"; // печатает 3
print "$b\n"; // печатает 3

$a = 4; // меняем $a

print "$a\n"; // печатает 4
print "$b\n"; // также печатает 4, так как $b является ссылкой на $a,
// а значение переменной $a успело измениться
?>
1067 1725105
>>725079

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


Это будет 1 из 2:
1. Пишем одноразовый говнокод, потом выкидываем
2. Пишем свой фреймворк, потом пишем само приложение
1068 1725111
>>725048
В моей мухосрани вроде без фрейморков пишут и какой-то цмс еще применяют.
1069 1725114
>>725111

>В моей мухосрани вроде без фрейморков пишут


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

>и какой-то цмс еще применяют


тут без комментариев
1070 1725132
>>724671
Книги морально устарели
1071 1725133
>>725090

Когда мы копируем ссылку:

$b = &$a;

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

echo $a;
echo $b;

Выведут одно и то же. Так как они выводят содержимое этой области памяти.

Для сравнения, при копировании (без &) значения:

$a = $b;

$a и $b указывают на две разные области памяти и значение копируется из одной в другую.
1072 1725137
>>725105

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

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

Получается, ты предлагаешь, не изучив сложение и умножение, браться сразу за решение уравнений. Так же и фреймворк, вроде Симфони, его будет очень тяжело осваивать без базовых знаний.
Снимок экрана (18).png130 Кб, 1366x768
1073 1725142
>>725133
на практике нихуя не понял
1074 1725146
>>725114
Кушать-то надо что-то.
1075 1725159
>>725132
Только классика не стареет
1076 1725167
>>725137
В той книге реально устаревший подход. Часть кода оттуда просто не запуститься, либо будет ругаться депрекейтедами.
В добавок после этой книги придется почти с нуля переучиваться на современный инструментарий разработки.

Хотите основ - возьмите свежую php 7.4, туториал по ней и играйтесь на здоровье. Зачем сразу в легаси лезть?
1077 1725169
>>725142

$a = 3; - записывает 3 в область памяти, выделенную под $a
$b = &a; - $b теперь указывает на ту же область памяти, что и $a, где хранится 3
$a = 4; - в эту область памяти записывается 4
print $b; - выводит содержимое этой области памяти на экран
1078 1725197
>>725142
$a =3;
$b = $a;
$a = 4;
echo $b;

будет 3 тк значение $a поменялось уже после выполнения $b = $a; и $b было УЖЕ присвоено 3
1079 1725200
>>725197
>>725142
Если записать так :
$a = 3;
$a = 4;
$b = $a;

echo $b;

то будет уже 4 тк пхп выполняет поочерёдно
1080 1725206
>>725169
а в функциях что бы поменять переданную переменную и вернуть новый результат в код снаружи.
я правильно понял?
1081 1725211
>>725197
>>725200
>>725142
А, сорян - обосрался
1082 1725255
Как реализовать роутинг на голом PHP? Как я понимаю нужна единая точка входа, откуда запросы уже будут идти в маршрутизатор?
1083 1725402
>>724975
Ну давай разберем по частям тобой написанное.

>Вот пример передачи зависимостей классу-валидатору


public function __construct(UserTableGateway $userTableGateway) { ... }
public function setLogger(Logger $logger) { ... }
setLogger() это пиздец отвратительная практика. Это по сути и есть использование объекта как глобальной переменной. Я на такую хуйню насмотрелся. Где-то в коде используется логгер, а как он попал в объект и когда загадка. Через гидратор или через конфиг наебенили. Так потом еще и меняют этот логгер ебаный во время выполнения. Был такой, а стал сякой иди ищи где и нахуя, и не накроется ли все пиздой когда ты туда засунешь новый логгер.

>Registry и чем он плох


>Чем плох ServiceLocator


>Чем хорош DI container


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

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

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

По поводу написания своего контейнера. Есть PSR-11, который описывает интерфейс. Ну а в целом это самый последний велосипед для джуна, что угодно будет проще накостылить чем вменяемый контейнер. Лучше взять готовое, как написано, симфони или пимпл и мозгу не ебать.
1083 1725402
>>724975
Ну давай разберем по частям тобой написанное.

>Вот пример передачи зависимостей классу-валидатору


public function __construct(UserTableGateway $userTableGateway) { ... }
public function setLogger(Logger $logger) { ... }
setLogger() это пиздец отвратительная практика. Это по сути и есть использование объекта как глобальной переменной. Я на такую хуйню насмотрелся. Где-то в коде используется логгер, а как он попал в объект и когда загадка. Через гидратор или через конфиг наебенили. Так потом еще и меняют этот логгер ебаный во время выполнения. Был такой, а стал сякой иди ищи где и нахуя, и не накроется ли все пиздой когда ты туда засунешь новый логгер.

>Registry и чем он плох


>Чем плох ServiceLocator


>Чем хорош DI container


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

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

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

По поводу написания своего контейнера. Есть PSR-11, который описывает интерфейс. Ну а в целом это самый последний велосипед для джуна, что угодно будет проще накостылить чем вменяемый контейнер. Лучше взять готовое, как написано, симфони или пимпл и мозгу не ебать.
1084 1726180
как вам swoole?
1085 1726190
>>726180
Нагибает все живое. Но работать с ним так себе удовольствие пока что.
1086 1726228
Я не совсем понимаю в отладке , если я хочу зайти внутрь функции, а не просто перейти на следующую строчку, надо нажимать F7 ( step into )
Но , где-то у меня получается , а где-то нет , вот где не получилось внутрь зайти с помощью step into , там получилось с помощью force step into
В чем разница между ними ?
1087 1726269
как в веб шторме запустить код без ручного ввода команды запуска скрипта?
1088 1726332
>>726269
1 пик - настройка любого вида запуска
2 пик - быстрый запуск тестов
1089 1726338
>>726332
пипец,веб шторм не умеет в автодополнение циклов,if,swith...
1090 1726359
>>726338
Можно подробнее пример, что именно не дополняет?

Ну и можешь настроить сам себе снипет дополнения, шторм достаточно гибок в настройке
1091 1726365
>>726359
точнее так сказать надо
VSC сразу каркас делает
а в шторме надо ручками все прописывать
1092 1726390
>>726365
Да какой каркас?
foreach ($a as $b) {

}

это?
1093 1726392
>>726390
ага
но это и
1094 1726393
>>726392
но это мелкая придирка
1095 1726404
>>726392
Тут в любом случае будут кейсы, когда тебе нужен снипет под себя, а его нет ни в иде, ни в каких-то плагинах
1096 1726417
Не знаю, где спросить.
Есть сайт на Опенкарте. Нужно переделать его под Вордпресс с Вукоммерсом. Сохранив полностью дизайн. Сколько это может стоить и сколько по времени займёт? Хотя бы примерно.
1097 1726434
>>726417
от 0 до бесконечности
1098 1726650
>>725402

> Где-то в коде используется логгер, а как он попал в объект и когда загадка.



Обычно использование инъекции через метод используется для необязательных зависимостей, которые могут отсутствовать. Поэтому тебе не важно, как он туда попал, главное, что он может быть, а может не быть. Но если хочется понять, как он туда попал, то можно воспользоваться функцией вроде "Find Usages" в IDE. Или поставить брейкпойнт и посмотреть стектрейс.

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

> Твой DI контейнер и есть и регистр, и сервис локатор.



Принципиальное отличие DI в том, что класс ничего не знает про контейнер, в то время как при использовании ServiceLocator класс знает о нем.

> При использовании DI подхода логгер в принципе может попасть в наш контроллер только через конструктор,



Нет, инъекция возможна не только через конструктор, но и через методы.

>>725255

Если ты используешь встроенный в PHP сервер, то просто указывается имя файла-роутера в командной строке. Если Апач, то через mod_rewrite запросы направляются на единственный скрипт, в php-fpm + nginx имя скрипта прописывается в конфиге Nginx.

>>725206

Да, для модификации параметров из функции, но такое использование лучше избегать, так как оно усложняет чтение кода. Вообще, ссылки лучше избегать.
1099 1726651
>>718405
>>723257

В качестве абстрактных методов, возможно, лучше было сделать методы вроде getBaseRate(). Так как твой код обязывает реализовать метод setDefaults(), но не обязывает задавать в нем значения базовых величин.

Кстати, в 7.4 разрешили ставить типы у свойств классов, стоит это использовать.

> public function addEmployees(string $className, int $rank, bool $isBoss, int $count): void



Это не очень удачная конструкция, так как она не позволяет добавить произвольного работника. Представим, что мы завтра создали новый класс профессии, с конструктором с 4 аргументами. Твоя функция не умеет передавать в конструктор 4 аргумента, и не позволит создать такого работника. Логичнее делать метод вида addEmployee(AbstractEmployee $e), которая позволяет добавить любого работника, если он унаследован от базового класса.

Да и не задача Департамента создавать работников, он может нанимать уже созданных.

> //Возвращает сотрудников c переданным рангом из переданного массива


> public function getEmployeesByRank(int $rank, array $employees): array



Эта функция странная. Если она получает список работников снаружи и не использует свойства департамента, то что она в нем делает? Она же не относится к нему никак. Надо поместить ее куда-нибудь в другое место, например, класс EmployeeUtil или CompanyUtil (вспомогательные методы для работы с сотрудниками). Создавать работников или департаменты лучше отдельно.

> //Повышает ранг сотрудников из переданного массива на единицу


> public function increaseEmployeesByRank(array $employees, float $percent): void



Эта функция очень специфичная и заточенная под антикризисные меры. Все, что к ним относится, логичнее поместить в отдельный класс АнтикризисныйКомитет. У каждого класса должна быть своя зона ответсвенности, а у тебя код для антикризисных мер размазан по разным классам. Плюс, если ты для каждой новой задачи будешь добавлять методы в Департамент, он превратится в монстра - God Object, а это плохо.

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

В Департамент можно добавлять методы, но они должны быть в его зоне ответственности. Например, метод "отобрать Работников по фильтру" или "назначить босса" или "уволить сотрудника" - это подходит. Это универсальные методы. А "уволить часть инженеров из-за кризиса" - явно нет.

> public function applyMeasure1(Company $company): Company



Тут слишком большая глубина отступов. Тяжело такое читать. Также, тут проще исключить босса из кандидатов на увольнение с помощью array_filter + анонимная функция, и отобрать 40% с помощью array_slice.

Вообще, можно было сделать примерно так:

- отбираем кандидатов на увольнение по условию вроде fn($e) => $e instanceof Engineer && !$e->isBoss(). Удобно использовать анонимные стрелочные функции как критерий отбора.
- сортируем по рангам
- берем 40% с помощью array_slice
- увольняем

Код будет более линейный и простой.

Для замены босса логично было бы добавить метод в Департамент (setBoss()), а не менять статусы вручную.

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

Дальше стоит делать ООП-Гостиницу, наверно.
1099 1726651
>>718405
>>723257

В качестве абстрактных методов, возможно, лучше было сделать методы вроде getBaseRate(). Так как твой код обязывает реализовать метод setDefaults(), но не обязывает задавать в нем значения базовых величин.

Кстати, в 7.4 разрешили ставить типы у свойств классов, стоит это использовать.

> public function addEmployees(string $className, int $rank, bool $isBoss, int $count): void



Это не очень удачная конструкция, так как она не позволяет добавить произвольного работника. Представим, что мы завтра создали новый класс профессии, с конструктором с 4 аргументами. Твоя функция не умеет передавать в конструктор 4 аргумента, и не позволит создать такого работника. Логичнее делать метод вида addEmployee(AbstractEmployee $e), которая позволяет добавить любого работника, если он унаследован от базового класса.

Да и не задача Департамента создавать работников, он может нанимать уже созданных.

> //Возвращает сотрудников c переданным рангом из переданного массива


> public function getEmployeesByRank(int $rank, array $employees): array



Эта функция странная. Если она получает список работников снаружи и не использует свойства департамента, то что она в нем делает? Она же не относится к нему никак. Надо поместить ее куда-нибудь в другое место, например, класс EmployeeUtil или CompanyUtil (вспомогательные методы для работы с сотрудниками). Создавать работников или департаменты лучше отдельно.

> //Повышает ранг сотрудников из переданного массива на единицу


> public function increaseEmployeesByRank(array $employees, float $percent): void



Эта функция очень специфичная и заточенная под антикризисные меры. Все, что к ним относится, логичнее поместить в отдельный класс АнтикризисныйКомитет. У каждого класса должна быть своя зона ответсвенности, а у тебя код для антикризисных мер размазан по разным классам. Плюс, если ты для каждой новой задачи будешь добавлять методы в Департамент, он превратится в монстра - God Object, а это плохо.

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

В Департамент можно добавлять методы, но они должны быть в его зоне ответственности. Например, метод "отобрать Работников по фильтру" или "назначить босса" или "уволить сотрудника" - это подходит. Это универсальные методы. А "уволить часть инженеров из-за кризиса" - явно нет.

> public function applyMeasure1(Company $company): Company



Тут слишком большая глубина отступов. Тяжело такое читать. Также, тут проще исключить босса из кандидатов на увольнение с помощью array_filter + анонимная функция, и отобрать 40% с помощью array_slice.

Вообще, можно было сделать примерно так:

- отбираем кандидатов на увольнение по условию вроде fn($e) => $e instanceof Engineer && !$e->isBoss(). Удобно использовать анонимные стрелочные функции как критерий отбора.
- сортируем по рангам
- берем 40% с помощью array_slice
- увольняем

Код будет более линейный и простой.

Для замены босса логично было бы добавить метод в Департамент (setBoss()), а не менять статусы вручную.

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

Дальше стоит делать ООП-Гостиницу, наверно.
1100 1726697
>>726650

>Если ты используешь встроенный в PHP сервер, то просто указывается имя файла-роутера в командной строке. Если Апач, то через mod_rewrite запросы направляются на единственный скрипт, в php-fpm + nginx имя скрипта прописывается в конфиге Nginx.


Спасибо. Я вообще в правильно направлении иду? Во фреймворках также все сделано?
1101 1726753
>>726650

>Но если хочется понять, как он туда попал, то можно воспользоваться функцией вроде "Find Usages" в IDE. Или поставить брейкпойнт и посмотреть стектрейс.


Нихуя ты простой. Нашел ты использования. В трех местах в коде через setLogger() устанавливается логгер ЯВНО. А есть такая тема как гидрация. Когда специальный сервис дергает сеттеры и передает туда что нужно НЕ ЯВНО, например из конфига.
Я говорю о ситуации когда тебе нужно передать в метод setLogger() свой логгер. Ты не знаешь есть ли там уже логгер и не знаешь что будет если ты его заменишь. Не бывает "не обязательных зависимостей" зависимость либо есть, либо её нет. Еще пиздецовее все становится, когда есть еще и геттер. Тут уж вообще хуй поймешь куда этот логгер попадет в итоге. А решается это именно инекцией через конструктор.
Если ты так пишешь, то земля те пухом, но не надо рассказывать что это нормально. Это прямой антипример использования DI контейнера.

>Принципиальное отличие DI в том, что класс ничего не знает про контейнер


Это не отличие самого DI контейнера. Для того чтобы заинжектить зависимости тебе нужно получить исходный объект из контейнера. Используя его как сервис локатор. Ты тут вообще противоречий не видишь?

>Нет, инъекция возможна не только через конструктор, но и через методы.


Кек. А где ты возьмешь объект логгера чтобы передать его в метод контроллера? Ведь "класс ничего не знает про контейнер".
1102 1726763
Аноны, никак не могу сообразить. Как засунуть кнопку внутри пыха? Есть такой код
<script src="https://ideone.com/e.js/LmgZhF" type="text/javascript" ></script>
Он выводит список всех таблиц sql и пытаюсь сделать, чтобы рядом с каждым результатом была кнопка,которая будет выполнять открывать необходимую таблицу подробно. Соответственно кнопка должна быть внутри цикла, но конструкция выше разумеется работать не будет. Оно понятно почему, я для наглядности. А вот как сделать правильно?
1103 1727034
>>726763
Решено
1104 1727050
>>726763
Когда вы уже перестанете мешать хтмл и пхп?
1105 1727217
Аноны, кто в laravel шарит, просветите.
Не очень понимаю как по дефолту инъекция зависимостей в контроллере работает
вопрос тут :

https://ideone.com/ym1SKh
1106 1727230
>>727050
Когда научусь обходиться без)) Я в php нубяра (как в прочем и везде) и поэтому возникает много вопросов) А код ужасен до безобразия))) Как будто кто то просто охапку дров кинул и крикнул "Работай!"
1107 1727241
>>727230
Поверь, тебе не зря советуют не мешать пхп и хтмл, гугли MVC.
А вообще троллей полон тред, это наверное змееебы, пэха их выдавливает из вэба.
1108 1727253
>>727241

>пэха их выдавливает из вэба


Он в целом пыхе в вебе не угрожал никогда и не угрожает пока что. Кое что делается, но слишком мало, чтобы о какой-то конкуренции вообще говорить.
Ах да, я змееб.
1109 1727259
>>727241
Ну не для моих задач. Мои задачи просты и не требуется городить огород. Хотя, думаю, к этому я приду самостоятельно, через какое то время)
image.png140 Кб, 843x798
1110 1727419
Оп , можешь глянуть решение задачки про банкомат с твоего учебника ? https://ideone.com/6tgkDv
1111 1727514
>>727241
Ну какие тролли?
Просто насмотрелся говна на продакшене, когда в шаблоне лезут в бд
1112 1727517
>>727259
Этот самый огород в виде разделения слоев приложения сократит число проблем при разработке и отладке.
Даже в рамках одного файла можно это сделать, выделить часть под работу с бд, часть под шаблон, часть под логику
1113 1727545
1114 1727559
>>726753

>нужно передать в метод setLogger() свой логгер. Ты не знаешь есть ли там уже логгер и не знаешь что будет если ты его заменишь.


А что даже в теории может быть? Логгер логгирует, ну перестанет в одно место логгировать, начнет в другое.

>Не бывает "не обязательных зависимостей" зависимость либо есть, либо её нет.


Хуя, ты скозал? Логгер как раз один из немногих примеров не обязательных зависимостей, если он никак не влияет на работу класса, то он может быть, а может и не быть, похуй вообще. То что в самом классе может не быть проверок на null, это уже не ко мне вопросы

> тебе нужно получить исходный объект из контейнера. Используя его как сервис локатор.


Скажи мне что плохого в том чтобы дергать из контейнера объекты прямо в контроллере?
1115 1727574
>>727514
Да какой продакшен, у него laba beta 0.1
пхп позволяет так делать - вот и делает.
1116 1727580
>>727559

>А что даже в теории может быть? Логгер логгирует, ну перестанет в одно место логгировать, начнет в другое.


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

>Хуя, ты скозал? Логгер как раз один из немногих примеров не обязательных зависимостей


Кароч открываешь свой класс, там в самом начале блок namespace и use. Так вот все что в блоке use это зависимости. Если любого из классов прописанных в use не будет, то твой код просто не будет работать.

>Скажи мне что плохого в том чтобы дергать из контейнера объекты прямо в контроллере?


Нахуй ты меня спрашиваешь? Ты спроси типа, который написал что "класс ничего не знает про контейнер, в отличие от сервис локатора". Я то как раз пишу что это отличие именно в том где мы перестаем дергать контейнер. Договорились в контроллере, значит ок, только в контроллере. Договорились на унылый секс в два ночи, значит дергаем в домене.
1117 1727906
И опять я здесь со своими нубо-проблемами.
Такая задачка.
Есть таблица sql "table1" В ней есть поля id, name, code, normal.
Как оформить поисковой запрос sql, чтобы он дал мне значение из поля 'name' соответствующее известному значению и записаному в переменную $det из поля 'code'. Полученное значение я должен так же записать в переменную, чтобы использовать в следующем sql запросе. Сейчас запросы выглядят так и дают фатал, mysqli_result не может конвертировать запрос тот, что с переменной $add.
$link и $link2 соответствуют подключением к разным базам. Да, эти таблицы в разных бд.
Переменные $det и $score абсолютно рабочие и проверены, sql запрос к table2 с ними нормально работает.
https://pastebin.com/HpHPDMm9
1118 1727936
>>727906
Сам решил))
1119 1728101
двач, не обоссывай а лучше подскажи. как реализовать на сайте мультирегиональность? типо чтобы когда я захожу на abu.mysite/ меня рероутило например на abu.mysite/moscow и где будет соответственно шаблон с шапкой " Привет, анон из Москвы " и соответственно метатегами. ну и дальше чтобы вложенность была в стиле abu.mysite/moscow/catalog/dragon_dildo
сразу скажу что движок - битрикс
1120 1728144
>>726763
Продолжение вот этого.
Все здорово, скрипт аккуратно в табличку выводит список таблиц, рядом с каждым есть кнопочки важные.
А теперь я пытаюсь записать что то в эти таблицы, но как мне идентифицировать нужную таблицу при вызове INSERT INTO?
Взяв {$row[0]}\n из этого скрипта https://ideone.com/e.js/LmgZhF я получил INSERT INTO {$row[0]}\n SET... и так далее. Такая конструкция работает только для первой таблицы. В какую сторону копать? Как сделать имя таблицы из переменной имея только вывод всех таблиц через цикл while?
1121 1728174
>>726651
Спасибо большое что проверил, у меня еще есть несколько вопросов:

> В качестве абстрактных методов, возможно, лучше было сделать методы вроде getBaseRate(). Так как твой код обязывает реализовать метод setDefaults(), но не обязывает задавать в нем значения базовых величин.



Как понимаю он должен так выглядеть:
public function getBaseRate(): float{
return 800;
}
Меня смущает то, как потом менять значение ставки. Просто изменять этот метод?

> Да и не задача Департамента создавать работников, он может нанимать уже созданных.



А разве там не требуется применять принцип композиции, у нас же работники не могут существовать отдельно от Департамента?

> Также, тут проще исключить босса из кандидатов на увольнение с помощью array_filter + анонимная функция, и отобрать 40% с помощью array_slice.

>Сократить в каждом департаменте 40% (округляя в большую сторону) инженеров, преимущественно самого низкого ранга. Если инженер является боссом, вместо него надо уволить другого инженера, не босса.



Как я понял из условия 40% мы берем от всех инженеров в не зависимости от того является он боссом или нет. Например, у нас 11 инженеров в департаменте и 1 из них босс, тогда ceil(11 0.4) = 5 инженеров на увольнение, а если перед этим убираем босса, тогда ceil(10 0.4) = 4 инженера на увольнение. Или я не правильно понял условие?
1122 1728179
>>725048
Хуйню пишешь.
Без своих велосипедов - ты даже не "оператор" фреймворка, ты дно.
Вот тебе и лицо современного вкатывания в ойти. Можно разве что порадоваться тому что если большая часть вкатывальщиков так мыслят как ты излагаешь - то все у людей которые стараются глубже понимать то на чем работают - все будет хорошо.
1123 1728181
>>728179
Зачем писать свой фреймворк, когда у тебя перед галазами исходники современного фреймворка. Бери, да ковыряйся, было бы желание
1124 1728268
>>728181
Я хуею с таких программистов.
А учиться программировать ты как будешь? Конкретно код писать, думать, искать решение?
Если ты думаешь что до маня-сеньора ты вырастешь когда прочтешь все исходники Симфони?
Программист растет только когда код пишет. Он думать учиться в нужном русле.
1125 1728376

> Symfony 3/Doctrine 2


уже 5.1
1126 1728379
>>728268
В каждой фирме на работе свой фреймворк пишут? Или другой опенсорс?
Бизнес задачи и так дают подумать, если это что-то сложнее круда, нужен какой-то фоновый процессинг, свои модули писать, микросервисы. По структуре задачи схожи с написанием фреймворка, по сути - другая предметная область.
Так мб стоит учиться более релевантному программированию, а не изобретать очередной велосипед?
1127 1728448
>>728379

>>В каждой фирме на работе свой фреймворк пишут? Или другой опенсорс?


В некоторых пишут. Твое "релевантное программирование" это какой то маня мирок. Ты и на фреймворке нихуя толкового не сможешь написать с таким подходом.
Твое дела конечно, но ты меня успокаиваешь - конкуренции от таких как ты не будет явно.
1128 1728460
>>728448
п.с.
в одной конторе было тестовое задание - простой блог, MVC, классы, роутер, контейнер, пагинация и валидация - все самостоятельно необходимо было написать на чистом пхп.
1129 1728508
>>728460
И в чем трабла?
По гайдам пишется за пару вечером.
1130 1728509
>>728448

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


Наверно уже 10ый фреймворк на работе пишешь.
1131 1728510
>>728379
Никак вы блядь не научитесь. Фреймворк это просто набор сервисов. Конфигурация, роутинг, DI контейнер, event loop, HTTP, ORM, кэш итд. Пиздец у тебя понимание работы приложения. Берешь symfony/config , eloquent, pimple, guzzle, FastRouter и вот у тебя уже получился твой собственный фреймворк.
1132 1728516
>>728510
Ебать ты тупой конечно.
Вместо очередного роутера, ди контейнера или ивентлупа, можно написать какой-нибудь полезный сервис к своему пету, на работе пригодится.
Зачем велосипедить компоненты фреймворка, если это максимум полезно для понимания его кишков?
Ну серьезно, это очень узкая ниша и идут туда явно не те, кто начинал своё знакомство с разработкой с php.
1133 1728528
>>728516
Ты в моем посте где вычитал слово "велосипед", еблан? Это блядь что-то из разряда где родился, там и пригодился. Есть во фрейме ОРМ, значит её и используем.
Потом одни ебланы ищут программистов на ларавель, а другие руками разводят если в доке их фреймворка не написано как что делать.
1134 1728534
>>728528
Так ты успокойся, прими свои таблетки, дыши ровно.
Да, берем ОРМ, которая во фрейме, потому что нужно ВЧЕРА таску закрыть, и с ней проще макакам в цикле запросы делать.
Ебланы ищут программистов на ларавел, чтобы других ебланов не учить им пользоваться месяцами, а дать таску и ждать результата.
Ты какого-то странного мнения о php сообществе. Туда идут потому что легко войти и даже в 30+ можно заработать миску риса.
Тот ли ты стек выбрал?
1135 1728612
>>728534

>Да, берем ОРМ, которая во фрейме, потому что нужно ВЧЕРА таску закрыть


Ну так сиди на рисе и воде, формошлепь и не отсвечивай, пока умные дяди за тебя решают что и как в проекте использовать.
1136 1728632
>>728612
Умные дяди на php не пишут. Начнем с этого. На этом и закончим
1137 1728642
Что-то не нравится мне этот ваш апач. После окончания всех настроек сначала час разбирался почему мне все еще вместо результата выдает код программы, шаманил с конфигами и рестартил апач 500 раз за это время. Потом удивительным образом оказалось, что на самом деле все работает, если в конец пути в браузере добавить знак вопроса ( localhost/example.php? ), хрен знает чем это обосновано, случайно вышло. При этом без знака вопроса все еще показывался сам код. Потом изменил код, рестартнул апач. Со знаком вопроса в конце пути все работало, а без знака вопроса каким-то хуем показывался старый код программы. Но самое забавное то, что через полторы минуты скрипт начал запускаться и без знака вопроса. Хрен знает как с этим цирком серьезно работать.
1138 1728646
>>728642
Так с апачем и не работает никто.
nginx берут, либо встроенный пыхосервер для локальной разработки
1139 1728680
>>728632
У тебя ярлыки по признаку инструмента.
Есть такое, большинство пхпшников дегенераты, спасибо куче инструментов, позволяющих писать рабочий код пуская слюни. Этот тред и выходцы с него подтверждают этот тезис в 9 из 10 случаев, хотя казалось бы тут обучиться довольно просто. Но немало встречается и умных опытных разрабов. Собственно почти все опытные, кто активно на пхп сидит, берут его осознанно ради буста к скорости разработки и поддержки. Привычка и контроль, на чем больше всего писал - на том чуть лучше и выходит. Мелочь, а приятно. При этом у всех когда-то были или есть проекты и на других стеках, с которыми они свободно работают (самому на питоне, жсе, руби, шарпе, джаве, го и эликсире довелось поработать, а ведь я всего 8 лет в теме).
Пришлось написать несколько мелких фреймов, один из которых на питоне. Вынужденно, такой пиздец на проектах попадался, что туда готовое не взять без полной переписки, а только аккуратными мелкими фичами апать код. Помогает во вполне обычных рабочих задачах, как видишь.
Тоже попадалось тестовое с написанием своего фрейма на пхп без зависимостей. Да, делается за вечер. Можно по гайду накопипастить, можно не по гайду, скорее всего на плагиат чекать не будут. Я делал сам в тот раз, так всегда пользы больше.
После всего этого любой вебфрейм для меня открытая книга. Очень помогает, со стыдом вспоминаю те времена, когда воевал с фреймворками из-за собственного невежества (и как водится был дохуища выебистым первые годы). Код фреймов читал офк, как и всю доку, но без собственных велосипедов это давало только ложное ощущение понимания.
Считаю, что по хорошему надо брать слим, а не эти ваши ларки, особенно новичку, и подтягивать что сам хочешь к нему, выстраивая по быстрому именно то, что нужно и не больше. Контроль - это хорошо. Когда позволительно - лучше так делать.
Так я вот к чему - если ты не хочешь выполнять учебную задачу, то зачем других то отговаривать? Для обучения это прекрасный опыт (в современных реалиях вообще возвышающий тебя над толпой фреймворкнейм-кнопокдавов), даже если выкинешь все на помойку. Можно работать и без этого, да, как многие и делают, особенно в первый раз.
Ничем велосипедирование своего учебного фрейма не отличается в худшую сторону от прочих учебных задач, так что с этим так же как и с остальным - пропускать можно ценой пробела в знаниях.
Ну и напоследок - из всех самых прошаренных знакомых разрабов нет ни одного, кто бы не мог набросать неплохой микрофрейм из головы за вечер-два. Да впринципе многие из них и небольшой язык/бд/подобие ос могут набросать. Развитие не заканчивается с получением работы, а чтобы получить понимание темы, которое уже никогда не выветрится, надо тему повелосипедить самому, никак иначе.
1139 1728680
>>728632
У тебя ярлыки по признаку инструмента.
Есть такое, большинство пхпшников дегенераты, спасибо куче инструментов, позволяющих писать рабочий код пуская слюни. Этот тред и выходцы с него подтверждают этот тезис в 9 из 10 случаев, хотя казалось бы тут обучиться довольно просто. Но немало встречается и умных опытных разрабов. Собственно почти все опытные, кто активно на пхп сидит, берут его осознанно ради буста к скорости разработки и поддержки. Привычка и контроль, на чем больше всего писал - на том чуть лучше и выходит. Мелочь, а приятно. При этом у всех когда-то были или есть проекты и на других стеках, с которыми они свободно работают (самому на питоне, жсе, руби, шарпе, джаве, го и эликсире довелось поработать, а ведь я всего 8 лет в теме).
Пришлось написать несколько мелких фреймов, один из которых на питоне. Вынужденно, такой пиздец на проектах попадался, что туда готовое не взять без полной переписки, а только аккуратными мелкими фичами апать код. Помогает во вполне обычных рабочих задачах, как видишь.
Тоже попадалось тестовое с написанием своего фрейма на пхп без зависимостей. Да, делается за вечер. Можно по гайду накопипастить, можно не по гайду, скорее всего на плагиат чекать не будут. Я делал сам в тот раз, так всегда пользы больше.
После всего этого любой вебфрейм для меня открытая книга. Очень помогает, со стыдом вспоминаю те времена, когда воевал с фреймворками из-за собственного невежества (и как водится был дохуища выебистым первые годы). Код фреймов читал офк, как и всю доку, но без собственных велосипедов это давало только ложное ощущение понимания.
Считаю, что по хорошему надо брать слим, а не эти ваши ларки, особенно новичку, и подтягивать что сам хочешь к нему, выстраивая по быстрому именно то, что нужно и не больше. Контроль - это хорошо. Когда позволительно - лучше так делать.
Так я вот к чему - если ты не хочешь выполнять учебную задачу, то зачем других то отговаривать? Для обучения это прекрасный опыт (в современных реалиях вообще возвышающий тебя над толпой фреймворкнейм-кнопокдавов), даже если выкинешь все на помойку. Можно работать и без этого, да, как многие и делают, особенно в первый раз.
Ничем велосипедирование своего учебного фрейма не отличается в худшую сторону от прочих учебных задач, так что с этим так же как и с остальным - пропускать можно ценой пробела в знаниях.
Ну и напоследок - из всех самых прошаренных знакомых разрабов нет ни одного, кто бы не мог набросать неплохой микрофрейм из головы за вечер-два. Да впринципе многие из них и небольшой язык/бд/подобие ос могут набросать. Развитие не заканчивается с получением работы, а чтобы получить понимание темы, которое уже никогда не выветрится, надо тему повелосипедить самому, никак иначе.
1140 1728688
>>728632
Жри что дают, не твоего ума дело рассуждать кто на чем пишет, хлебушек.
1141 1728701
>>728680
нуфф саид

мимокрокодил
1142 1729024
>>728688
Сказал чел, пишущий на пхп. Вот уж кто жрет, что дают.
1143 1729031
>>728680

>У тебя ярлыки по признаку инструмента


Из всех знакомых, кто пишет на пхп, большая часть макаки крудоклепатели, боятся лишнюю папку или файл создать без указки тимлида, пихают код в контроллеры и т.д. и т.п.
Даже не представляю, где сидят те умные дяди, которые осознанно выбрали пхп среди альтернатив и пишут на нем хорошие поддерживаемые вещи. Наверное таких 1 на 10000 макак.

>берут его осознанно ради буста к скорости разработки и поддержки


>по хорошему надо брать слим, а не эти ваши ларки


Сначала ты говоришь про буст скорости разработки на пхп. Потом предлагаешь брать слим... Ты уж определись.

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


Пусть пишут свой фреймворк, мб додумаются стек сменить, пока не поздно.

>Для обучения это прекрасный опыт (в современных реалиях вообще возвышающий тебя над толпой фреймворкнейм-кнопокдавов


Херочке будет очень интересно послушать, какой ты фреймворк написал на коленке за вечер. А на вопросе про коммерческий опыт с фреймворк-нейм пук-перезвоним.
1144 1729090
>>729024
Схуяли ты взял что я пишу на пхп? Это ты пишешь на пхп, гной.
1145 1729108
>>729090
Что ты тогда забыл в пхп треде, даунич?
1146 1729117
>>729108
Порофлить с дегенератов, которые вместо развития скила планируют формы писать до старости.
1147 1729121
>>729117
Иди развивайся, пиши свои фреймворки, вон драйверы на пхп попиши. Что ты тут забыл?
1148 1729134
>>729121
Ты в прошлом посте спрашивал уже, а я тебе уже ответил. Ты давай обтекай, да смари мозги не перетруди. Тебе в понедельник шаблон на вордпресс натягивать.
1149 1729135

>Писать свой фреймворк


Как там, в 2017-ом?
1150 1729139
>>729134
Да, да, мне шаблон натягивать, а тебе в очередной раз врать мамке, как ты вот щас щас найдешь работу хаскелистом, уплетая её борщец.
1151 1729144
>>729139
Так-то борщец вкуснее чашки риса. А любящая мать лучше формошлепов собутыльников без перспектив.
1152 1729254
>>729135
не понимаю иронии? В больших компаниях, к примеру, с микросервисной инфраструктурой, даже проще и лучше, компетентно написать ядро фреймворка, но на это надо чуть больше времени и денег. За то в результате будет работать все очевидно и понятно, а не так как ваш всратый рад ларавел, у которого везде магия и в случае пиздеца, только в трейсе дебага можно что-то понять.
test-unroll.png100 Кб, 737x691
1153 1729275
Так, скоро надо будет создать новый тред, а пока хотел показать прототип thread-unroll для двачика, что думаете? не знаю, правда, где найти время, чтобы перепробовать все идеи, которые в голову пришли.
1154 1729288
>>729254

>с микросервисной инфраструктурой


Лол, ну ты точно из 2017. Именно тогда все писали свои микросервисные фреймворки и обещли 9000% прироста всего подряд, как только раздолбают проклятый монолит.
1155 1729303
мммм...бурное обсуждение...
1156 1729340
>>729254

>микросервисы


>на php


Уже забыли, зачем этот язык создан
1157 1729516
>>729303
Чтобы отожрать 90% бекенда всех сайтов минимум на 30 лет? И не планировать сдавать позиции.
1158 1729679
геттеры и сеттеры нужны всегда?
1159 1729714
>>728101
ну же, аноны, никто не подскажетт в каком направлении двигаться чтоли?))
Снимок экрана (20).png116 Кб, 1366x768
1160 1729782
почему выводит пустоту?
пытаюсь понять тему конструктор
pizdos.PNG11 Кб, 498x221
1161 1729809
>>729782
Бля, я конечно понимаю что на пхп пишут не гении далеко, сам такой. Но блядь таких вырожденцев и дегенератов я больше нигде не видел. https://www.php.net/manual/en/language.oop5.decon.php
1162 1729815
>>729809
я это уже читал и всегда читаю.
но объяснение там часто сухое или сильно сжатое и я не всегда врубаюсь
1163 1729817
>>729815
Первую строчку прочитай __construct ([ mixed $args = "" [, $... ]] ) : void
Просто пиздец.
1164 1729820
>>729817
и че я тут должен увидеть?
1165 1729821
>>729820
Хуй у себя на лбу.
15896378064030.png385 Кб, 800x480
1166 1729831
>>729821
нихуя я дочитался...
1167 1729836
>>729831
Кароч я поржал и понял что был груб. Сорян если обидел, но бля чтец ты пиздец конечно. В качестве извинений могу рассказать тебе про ооп в приватной обстановке. Если конечно осилишь попасть в канал https://дискорд.gg/3aVySY6
1168 1729839
>>729836
я просто сегодня много читал про конструктор на английском
1169 1729840
>>729782

Наверно, ты забыл фигурные скобки: echo "city: {$this->city}";

Также, ты можешь вывести содержимое объекта с помощью var_dump($this);
1170 1729843
>>729840
про фигурные скобки я не знаю
1171 1729851
еще вопрос,я заметил,что передача параметров в метод снаружи сущ способа?
1 это когда параметр в скобочках(но там внутри класса дохера писать функций на каждую переменную)
2 который я в основном видел через знак присвоения
и какой из них популярный?
Снимок экрана (21).png166 Кб, 1366x768
1172 1729855
>>729840
и так работает
1045260312563948423284363993516214700139739n.mp4885 Кб, mp4,
640x1136, 0:03
1173 1730145
>>729836
Ух ты, а мне к вам можно? Только дайте норм ссыль
1174 1730181
>>730145
Ну конечно можно. Но если ты не можешь догадаться подставить d i s c o r d вместо дискорд, то у меня для тебя плохие новости.
1175 1730235
>>729809

Любой может ошибиться и не так написать название функции. Это не повод самоутверждаться в треде для начинающих, и это лишь показывает твою токсичность.
1176 1730254
сап. как в стандартной форме регистрации/авторизации laravel, при включенной верификации изменить email получателя? чтобы не пользователь получал, а кто-то 1 всегда
1177 1730370
Народ, ну подскажите. Я уже весь обгуглился. https://pastebin.com/w2bt1X2d
Вот скрипт выдал мне все нужные значения из таблицы. А как теперь эти значения запихивать в переменную?
Если я беру просто $row, то в переменной лежит только первое значение, а как мне перезаписать переменную, чтобы там оказалось второе значение? А четвертое значение?
1178 1730572
Аноны, как прочитать таблицу excel через php и загрузить определенные столбцы в sql, но так чтобы определенные столбцы excel соответствовали полям таблицы sql.
Существует такая библиотека на просторах PHPExcel.php, но она может загрузить excel только в пустую таблицу, а надо в готовую. Это вообще возможно?
0b4347e4-7749-4b56-b7aa-abca4238edcb.png2,5 Мб, 2048x2892
1179 1730867
Объясните на пальцах нахрена в пхп8 добавили атрибуты? В чем цимес? (Ну кроме deprecated тут очевидно)
1180 1730927
>>730867

Аннотации как часть кода используются давно (Доктрина, Symfony Validator, Serializer), но сейчас их пишут в комментариях (в стиле @ORM\Table). То есть для интерпретатора это просто строка, которую он игнорирует, и код использует специальные парсеры для их извлечения из исходного текста.

Логично сделать их частью языка, чтобы PHP их читал и проверял, а также IDE и статические анализаторам было проще с ними работать.
1181 1731170
>>730927
Ну это прогиб под них какой то, тот же eloquent не пользует их и живёт спокойно. Ну лучше ли оставить доктирну самой разбираться с этими атрибутами.

Есть какое то применение не связанное с этими библиотеками?
1182 1731546
>>729782
так а нахуй ты переменные public делаешь и затем их через констракт меняешь? делай их private/protected и пиши констракт. это называется инкапсуляция вроде
1183 1731559
>>730370
создаешь пустой массив, циклом проходишься for с шагом в 2 и добавляешь через array_push туда свое значение. если я тебя правильно понял
1184 1731567
>>731546
То, что ты сказал, называется хуйня.
1185 1731906
Приношу свои извинения апачу за то что заговнил его выше втреде. Сейчас допер что у меня просто в кеш браузера файлы записывались и не обновлялись, теперь запрещаю кеширование метатегом.
1186 1732147
Переходите в новый тред: >>1731888 (OP)

Если я вас пропустил, напомните о себе в новом треде.
1187 1732664
>>728174
Бамп.
1188 1733218
>>729679

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

>>727419

Не очень хорошо, что у тебя указывается в 2 местах запас банкнот - неудобно будет его менять.

$arrayValues - неудачное название, лучше $combination.

В общем, решено верно. Можно, конечно, было бы еще пооптимизировать код - например, не выдавать такие комбинации купюр, которые заведомо больше суммы. То есть при сумме 1000 не выдавать комбинации, где есть 2000-е купюры и не выдавать более 4 500-х купюр. Дальше можно еще больше оптимизировать код и выдавать сначала наиболее вероятные комбинации. Например, для суммы 6600 и 2000-х купюр сначала выдавать 3x2000, потом 2x2000 ... 0x2000
1189 1733219
>>721930

В общем, ты движешься в правильном направлении, но многое надо улучшить.

Ты зря прямо в функцию вписал варианты слова - рубль/рублей. Лучше их передавать снаружи, чтобы функция могла работать с любыми словами. Также, условие выбора слова переусложнено, там не нужен цикл. Числа делятся всего на несколько групп: заканчивающиеся на 11-19, на 1, на 2-3 или на 5-0.

Также, текст надо нормально выровнять, тяжело читать.

>>728174

> Меня смущает то, как потом менять значение ставки. Просто изменять этот метод?


Можно в конструкторе Employee вызвать функцию getBasePay() и записать значение в свойство $basePay, например. И его менять.

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

> А разве там не требуется применять принцип композиции, у нас же работники не могут существовать отдельно от Департамента?



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

> Как я понял из условия 40% мы берем от всех инженеров в не зависимости от того является он боссом или нет.


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

>>717786

Ты можешь открыть мануал и сам сравнить.
1190 1733220
Переходите в новый тред: >>1731888 (OP)

Если я вас пропустил, напомните о себе в новом треде.
1191 1733376
Хочу установить Laravel на Manjaro. Проблема в том, что у меня не все необходимые модули установлены, например нет bcmath и некоторых других. Я хз где их брать и как устанавливать, с экосистемой php почти незнаком. Вообще, в описании пакета php для manjaro написано, что модуль bcmath и другие включены, но в выводе php -m его нет. Как быть?
1192 1733380
>>729836

>discord.com/3aVySY6


Не находит ничего. Напиши нормально ссыль или название канала.
1193 1754653
>>656450 (OP)
>>671057
Аноны, написал тут функцию для подсчета количества купюр, из предлагаемой суммы. Оцените, насколько сильно это говнокод.. Можно добавлять новые купюры, очко не ломается.

https://ideone.com/pEESRH
1194 1756508
такой вопрос: а как можно сделать платные курсы в moodle, мб кто в курсе?
Тред утонул или удален.
Это копия, сохраненная 5 сентября 2020 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски