Этого треда уже нет.
Это копия, сохраненная 9 мая 2021 года.

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

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

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

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

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

С чего начать

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

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

Ты прошел весь учебник? Молодец, но это были лишь основы языка 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
- Еще более сложная и долгая задача на Laravel/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony или Laravel
- Почитать про паттерны 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? Потому что вакансий море, и учить легко.
- Сайт опять упал!!!!! — Не паникуй, а зайди на https://github.com/codedokode/phpbook, нажми зеленую кнопку Clone or Download -> Download ZIP, распакуй на рабочий стол и получи личную копию сайта, не требующую интернетов.
- Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery. У нас в треде были люди, которые практически с нуля учились и смогли найти работу (ищи в архиве по слову "устроился").
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
grammar.png55 Кб, 500x644
2 1917265
Код стоит писать аккуратно и оформлять, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на http://beta.phpformatter.com/ и нажать «format». Робот оформит все как надо. Если ты используешь IDE, то там есть горячая клавиша для этого. Список клавиш для IDE: https://gist.github.com/codedokode/8759492

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

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

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

PSR-1 (рус.): https://svyatoslav.biz/misc/psr_translation/#_PSR-1
PSR-12 (англ.): https://www.php-fig.org/psr/psr-12/
3 1917279

>echo "Добро пожаловать товарищь ($_SESSION['name']) из города ($_SESSION['city']) !";


где тут ошибка?
4 1917287
А шапка не устарела?
вкатыш
5 1917295
>>1917279
${_SESSION['name']}
ertftg.jpg22 Кб, 458x298
6 1917303
Какая разница в использовании return вместо end если результат тот же?
7 1917310
>>1917303
Ты какую-то хуйню написал, end вообще не о том.
То что оно работает лишь результат пехоповости пехопе.
8 1917311
>>1917287
устарела

анонсы. поясните по хардкору как билдить morphMany связи в ларавской eloquent orm. вот допустим есть две сущности: режиссер и фильмы которые он снял. и у каждой из них есть оценки например от 1 до 10. как мне блять сделать orderby по средней оценке каждого режиссера допустим? пробовал через простой whereHas и нихуя. в доке тоже нет ниче особого. копать их ларавель апи юзаю версию 8.2 если что ?
15653376807570.jpg196 Кб, 1080x1080
9 1917316
>>1917200 →

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


Сделай у пользователяодна таблица отношение один-к-одному на его профильвторая таблица, где ты будешь хранить его фоточку и прочие данные.
По маршруту получаешь айдишник юзеря, у него берёшь профиль и выводишь на страницу что надо.
Я б так зделол.
Снимок экрана (50).png144 Кб, 1366x768
10 1917324
облом,объект не найден
11 1917327
>>1917324
Не так, слепой штоле?
12 1917328
>>1917324
Мужик, ты б уроки в шапке прошёл сперва - там много полезных советов по работе с шаблонами. Хуйню же пишешь.
Снимок экрана (51).png154 Кб, 1366x768
13 1917333
14 1917340
>>1917328
конкретней о хуйне
15 1917342
>>1917340

>конкретней


Конкретей есть в уроках. Сейчас бы каждому залетевшему нубу, который RTFM не хочет делать из-за лени разжёвывать всё.
16 1917384
>>1917324

>download master


блять в голос. ты раньше в питонячих тредах срал, а теперь тут. шо, не получилось войти в айти через джангу?
17 1917385
>>1917384
я питоном никогда не занимался.
а что это уникальный менеджер для одного человека?
18 1917424
>>1917333
Вообще не понимаю этого дрочева с голой пыха.
Сам голой пыхой не занимался, сразу полез в Laravel, а там и работу нашел.
19 1917428
>>1917424
а что плохого в том,что я пишу простой сайт на чистом,попутно изучая его базовые возможности?
20 1917434
>>1917428
Это плохо в плане работы, т.к. стоит далеко от того, где находится коммерческая разработка.
21 1917436
>>1917434
а может я любитель?
16059953327450.png162 Кб, 500x500
Фриланс 22 1917443
Здравствуй, Анон.

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

Другой вопрос(если вопрос выше имеет положительный ответ): сколько можно зарабатывать в месяц на фрилансе? 20к выйдет хотя бы? Или доход будет колебаться от существующих подходящих заказов и моего старания?

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

Нужна или удалёнка(а джуниоры на удалёнке не нужны(!)), или фриланс(что тоже вызывает кучу вопросов: возможно ли, какая плата месячная и т. д.)

Ответь как есть, анон. Хочу услышать правду, даже если она хуёвая.

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

Многие из вас наверняка работают, и понимают сложности трудоустройства на том этапе, когда ты ещё джуниор, к тому же новоиспечённый. С этим такие люди все сталкивались.
У меня ситуация ещё хуже: официально я не могу пойти работать в компанию. Официально я не могу трудоустроиться даже на удалёнку.
Есть несколько путей для заработка средств себе на хлеб:
Фриланс/Удалённая работа, при условии что джуниор им будет нужен, и меня трудоустроят неофициально.

Второй пункт оставим, речь идёт о первом.

Есть два вопроса(помимо тех, что выше спойлера): какой фреймворк выбрать в процессе изучения навыка для работы: laravel, или symfony?

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

-----------------
Второй вопрос: если же фриланс мне как-то и доступен будет, то какие биржи(наши) сможете посоветовать? Где проще найти заказ и заработать себе на кусок хлеба?
16059953327450.png162 Кб, 500x500
Фриланс 22 1917443
Здравствуй, Анон.

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

Другой вопрос(если вопрос выше имеет положительный ответ): сколько можно зарабатывать в месяц на фрилансе? 20к выйдет хотя бы? Или доход будет колебаться от существующих подходящих заказов и моего старания?

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

Нужна или удалёнка(а джуниоры на удалёнке не нужны(!)), или фриланс(что тоже вызывает кучу вопросов: возможно ли, какая плата месячная и т. д.)

Ответь как есть, анон. Хочу услышать правду, даже если она хуёвая.

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

Многие из вас наверняка работают, и понимают сложности трудоустройства на том этапе, когда ты ещё джуниор, к тому же новоиспечённый. С этим такие люди все сталкивались.
У меня ситуация ещё хуже: официально я не могу пойти работать в компанию. Официально я не могу трудоустроиться даже на удалёнку.
Есть несколько путей для заработка средств себе на хлеб:
Фриланс/Удалённая работа, при условии что джуниор им будет нужен, и меня трудоустроят неофициально.

Второй пункт оставим, речь идёт о первом.

Есть два вопроса(помимо тех, что выше спойлера): какой фреймворк выбрать в процессе изучения навыка для работы: laravel, или symfony?

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

-----------------
Второй вопрос: если же фриланс мне как-то и доступен будет, то какие биржи(наши) сможете посоветовать? Где проще найти заказ и заработать себе на кусок хлеба?
23 1917445
>>1917424
Дрочево с голой пыхой в первую очередь это азы программирования и полезно, как миниму для общей эрудиции в ИТ. Если у тебя уже есть опыт разработки, то ок - можно и на Лару сразу залезать, а если ты с нуля полез - соболезную мартыхану.
24 1917450
>>1917443

>а джуниоры на удалёнке не нужны


this
25 1917452
>>1917450
Ага, на хх.ру сейчас висит 7 вакансий пхп джуна удаленно, дс
15853386148760.jpg9 Кб, 168x300
26 1917453
>>1917443

>фриланс(что тоже вызывает кучу вопросов: возможно ли, какая плата месячная и т. д.)


>какая плата месячная


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

Где искать работу не скажу - сам ищи. Где найдёшь - там и работай.
27 1917454
>>1917452

>хх.ру


>7 вакансий пхп джуна удаленно


Лол.
Многие вакансии там годами висят по причинам:
1. хрюшки зарплату отрабатывают и рынок мониторят
2. кидалы с тестовыми - будешь бесплатно на кого-то работать под видом тестового
3. там ждут человека на позицию джуниора с навыками мидла
28 1917455
>>1917453

> Где искать работу не скажу - сам ищи. Где найдёшь - там и работай.


Но ведь даже так - ты признаёшь, что джуну что-то, да может перепасть на фрилансе, кроме пиздюлей:D

Хорошо сэр, вас понял, сэр. Именно этот ответ мне и нужен был превыше всего. А нервной работы не боюсь, всякой хуйни уже в жизни насмотрелся. Добра тебе, анон.
29 1917457
чет я намудрил я,логин и пароль постоянно висит в форме
30 1917461
а как избавиться от того.чтобы в формах не висели постоянно все что я вводил?
31 1917463
>>1917461
Предлагаю не отвечать этому персонажу пока он не начнёт по теме уроков спрашивать, а то заебёт тупыми вопросами по каждому пуку.
Пусть сам гуглит.
32 1917470
>>1917463

Это тред для вопросов, так что пусть задает. Будем отвечать.
33 1917473
>>1917461
Братик, мой тебе дружеский совет: найди в интернете методичку от Дмитрия Трепачёва и учись по ней. У него есть всё что требуется, вся необходимая база, а чего нет в методичке - есть на его ютуб-канале.
Вопрос, который ты задал - лёгок и глуп. Будь молодцом, иди учись.
Снимок экрана (52).png120 Кб, 1366x768
34 1917494
>>1917473
последняя просьба, оцени код
35 1917574
>>1917494
Товарищ
36 1917627
>>1917494
Говнокод как есть. Такое даже школота на вордпрессе не пишет.
Иди на завод.
37 1917634
So, guys.

Есть у меня в ларке в контроллере

$request->validate([
]);

А если я хочу добавить какое-то лютое правило? О том что Одно поле плюс другое умнжить на третье должно быть меньше 42, как это сделать?
38 1917638
>>1917634
ФормРеквест же
39 1917694
>>1917638

Спс, сказал куда гуглить. Решил вопрос.
40 1917696
>>1917461
Пиздец ты умеешь формулировать.

autocomplete="off" может помочь. Или не может. ХУЙ ЗНАЕТ ЧЁ ТЕБЕ НАДО
41 1917702
>>1917303

Тут не надо использовать end и else.

>>1917342

Если ты не хочешь пояснять, что не так, может быть и пост писать не стоило?

>>1917424

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

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

>>1917494

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

>Если ты не хочешь пояснять, что не так, может быть и пост писать не стоило?


Я смотрю ты сам дохуя ему пояснил.
44 1917730
>>1917424
Сколько времени ушло на вкат?
45 1917731
Я понимаю, что тред не только для опытных, но и нубов, но давайте его в детский сад не превращать по ёбнутому доброчановскому принципу "потому, что". Если спрашиваешь, то хоть сам сперва поищи решение с полчаса - имей совесть.
Всё таки он не только для нубов, но и для всех остальных.
Screenshot.png32 Кб, 649x637
46 1917737
>>1917260 (OP)
"Итак, сделав последнюю выплату по кредиту, наш школьник собрался было идти домой и направился к ст.м. Площадь Восстания, как вдруг его взгляд привекла реклама нового планшета Apple New Ipad 32Gb (всего за 39999 р). Понятно, что вскоре наш незадачливый любитель яблок уже держал в руках и поглаживал новый девайс аки кота-манула и чуть слышно шептал «моя прелесть». Поскольку денег у нашего героя уже не было, он решил воспользоваться услугой «покупка в кредит без первого вноса». Кредит предлагают 3 банка, и все на разных условиях:

кредит за 4% и (мелким шрифтом) 500 р комиссии в месяц от HomoCredit
кредит за 3% и 1000 р комиссии в месяц от того же банка (Softbank), что и в первой задаче
нереально вкусное предложение от StrawberryBank за 2% в месяц, без комиссии, но с платой в размере 7777 р за открытие счета (эту сумма прибавляется к сумме долга)
Задание: воспользовавшись ранее купленным айфоном (и полученными на сами знаете каком сайте знаниями), определи наиболее выгодный кредит. Платить школьник, как и прежде, может не более 5000 р. в месяц. Сначала начисляются проценты и комиссия, а только потом происходит выплата."

ИТОГИ МОЕГО РЕШЕНИЯ:
Итоговая сумма кредита SoftBank: 46198.97
Итоговая сумма кредита HomoCredit: 46598.96
Итоговая сумма кредита StrawBerry: 53575.98

Я гений кодинга?...
47 1917738
>>1917737
РЕШАЛ БЕЗ ПОДСКАЗОК
48 1917741
>>1917738
Молоца - теперь возьми пирожок за щеку.
GornichniyHuesosikNedovolen!.png117 Кб, 515x728
49 1917742
50 1917746
>>1917737
Чот сложно. Вот я накидал быстро https://ideone.com/QN1ix0
Как минимум ты проебался с оплатой до начисления процентов и с добавлением 7777 в конце, а не в начале.
51 1917749
>>1917746

>и с добавлением 7777 в конце


Так 7777 не добавляется к подверженной процентным изменениям и комиссии сумме кредита, это единичный платёж за открытие счёта.
52 1917750
>>1917746
>>1917737
Рассудите у кого правильно!!!
53 1917751
>>1917749

> но с платой в размере 7777 р за открытие счета (эту сумма прибавляется к сумме долга)


> прибавляется к сумме долга

54 1917752
>>1917751
Зачем ты так мощно меня приложил?...
55 1917759
>>1917750
Решений может быть больше одного. Зачастую нужно выбирать наиболее удачное под конкретную ситуацию.
56 1917761
>>1917759
Ебать ты квантовый компуктер.
57 1917780
>>1917424
Пипец. Сорри, но ларавельщик - не программист. следующий шаг - писать сайты на winx или tilda. Хотя. Подход мне нравится. Нам надо больше сироток (с).
Пусть будет побольше ларавельщиков и прочих имитаторов. Толпы джуниоров с высшим образованием, которые пятистрочный обработчик формы обратной связи даже без композера и ларавела не могут поставить. И при любом намеке на написание какого либо элементарного класса начинают пространно рассуждать про масштабируемость, совместимость и пугают всех плохими велосипедами да неизбежными костылями.
Тогда у меня постоянно будет работа - переделывать их перегруженных и кособоких кадавров в более менее юзабельные веб приложения в четверо урезанные сроки и с десятикратным ценником, так как за дурость следует платить, а не нравится - пусть походят по рынку поищут спецов.
ЭТо почти как с мобильными приложениями последнее время - где верх мастерства - это засунуть в шаблон вебвьюхи сайт, без малейшего понимания сишарпа или свифта, но с выученным наизусть расположением кнопок интерфейса конструктора.
58 1917785
>>1917494
Код новичка как код. Работает и работает. Оценивать нечего. Нет структуры приложения как такового - непонятно, чего хочешь достичь. Оценивать можно, когда что-то сделаешь путное. То есть представишь задачу, продумаешь и создашь ее решение. Вот исходя из того, как ты сделаешь и можно будет что-то оценивать.
А то как ты строки оформляешь, как записи типа "==false" да в хтмл пхп запихиваешь для меня просто показатель того, что ты новичок.
У прожженых пхпшных тварей таких конструкций не увидишь
Будет вроде $_SESSION['name']&&$_SESSION['city']?$this->hello:$this->nafig; как минимум, и соотв. строки будут
как 'бла-бла ' . $name . 'бла - бла'; без извратов с переменными внутри двойных и фигурными скобками, так как чревато.
59 1917788
>>1917750
Правильно у 1917746 так как там более-менее грамотно сделана
структура кода - функция с входящими как универсальный метод.
Код 1917737 явно новичок, создает кучу ненужных переменных.
В пыхе чем меньше переменных, тем лучше. Логически - есть переменная - процент. У банков она разная, и всего то.
Чел же создал три по сути переменные, которые вообще-то как бы константы. и соотв черти что а не код. А если банков не три, а семьсот к примеру - семьсот переменных будешь создавать? Я своих "коллег" за такое морально унижаю даже если в первый раз. При рецидивах - и физически.
То есть косяк на уровне понимания алгоритма.
Переменные - процент, комиссия, взнос. = больше нет и быть не может. И на основании их строится функция метод.
Как то так.
60 1917817
>>1917780
Тоже так считаю. Пока есть такие "програмиисты" у меня будет большая зарплата. Они для себя новый мир открывают, когда говоришь им, что в ларе можно свои классы писать и в папочку апп складывать. Видел километровые контроллеры в которых написан код всего приложения.
61 1917845
Раз такое дело, аноны, посмотрите и мое решение задачки ОПа про айпад
https://ideone.com/LBdizC
62 1917850
>>1917845
$paymentTotal = 0 + $openingAccountPayment;
63 1917851
>>1917850
Почему?
64 1917872
>>1917311
ну же, анон, помоги. куда двигаться то?
65 1917876
>>1917436
Любитель покопаться в говне? без обид
66 1917877
>>1917443
Тебе еще в том треде расписали всё.
Нулевым идти на фриланс - не вывезешь.
Устраивайся в офис/на удаленку, наврав про опыт в рогах-копытах.
67 1917879
>>1917452
Ты хоть представляешь, какой там конкурс?
68 1917880
>>1917463
Он хотя бы что-то пытается делать.
Уже за это уважуха
69 1917883
>>1917730
Около года.
Сначала были питон/джанга. Едва осилив основы питона, полез в джангу писать тудулист. Пробовал удаленку на джанге - не зашло.
Потом полез в пхп/ларавел, тоже сразу полез писать пет на фреймворке
70 1917885
>>1917817

>Видел километровые контроллеры в которых написан код всего приложения


Видел такое на проде... Просто пиздец
71 1917887
>>1917780
К слову я уже давно вышел за рамки и фреймворка и языка. Умею создавать папочки.
Я форшу фреймворки, потому что это скорейший путь выхода на работу. А там уже встанут реальные задачи и будет понятно, в каком направлении расти.
Всяко лучше, чем сидеть что-то невнятное лепить на голой пыхе. Такое мб лет 20 назад актуально было. Но не сейчас, когда всё делается херак-херак, слепил из готовых компонентов и в прод.
А те, кто хотят что-то своё с нуля писать, вряд ли выберут пыху.
16085435067050.png37 Кб, 293x326
72 1917921
>>1917788

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

73 1917979
Сап двощь, если для сайта мне нужны две глобальные роли, например Продавец и Покупатель, имеет смысл для них делать отдельные сущности со своими логинами, может даже отдельные таблицы (у продавца больше инфы должно быть о себе), чтобы как-то избежать в коде вот этого вот if $user->isSeller(), и разграничить это явно на уровне приложения
74 1917980
>>1917883
А отдельно на пхп/ларавел сколько ушло? Сложно было?
16105702053693.png215 Кб, 521x937
75 1917984
>>1917260 (OP)
А я напомню вайтишникам, что вкатываясь в IT через пхп вы навсегда станете низкоквалифицированным таджиком от мира современной разработки и никогда не увидите ни 300к/наносек, ни ламповой удаленки за доллары, ни релокации в Европу.
76 1917986
>>1917984
Что мешает выучить PHP, подрабатывать и в то-же время учить другие языки?
77 1917990
>>1917986
Представил как свеженький пыха даун джун приезжает домой после восьми часов мозгоебли и пытается читать условный Core Java, и люто проиграл.
78 1917993
>>1917990
Ну ок, предложи более лучшие языки для веб-разработки.
79 1917994
>>1917980
Месяца 3 мб. Сложно не было, т.к. MVC фреймворки очень похожи
80 1918003
>>1917993
мне поебать что в вашем вебговне сейчас лучшее, я мимошел двачнуть господина >>1917984
81 1918004
>>1917984

> вы навсегда станете низкоквалифицированным таджиком



А можно устроиться в фейсбук или в наш вк, им норм на php.

> никогда не увидите ни 300к/наносек



Наоборот, на php проще стартап сделать. И монетизировать веб приложуху проще чем что-либо ещё.

> ни ламповой удаленки за доллары



Удалёнки на похапе сколько хочешь.

> ни релокации в Европу.



В Европе пишут на php
82 1918005
>>1917994
Посоветуй курсики какие-нибудь, через что осваивал.
83 1918006
>>1918003

>пук срэньк

84 1918025
>>1918005
laracasts
и у елисеева есть мастер класс, где с 0 пилит клон авито на ларавеле
85 1918028
>>1918005
https://www.tutorialspoint.com/php/index.htm
https://www.tutorialspoint.com/php7/index.htm
https://www.tutorialspoint.com/laravel/index.htm

В этом порядке почитай.
И вопросы отпадут.

Если не можешь в англ, то https://poliglot16.ru/en/
a90e99932b334ab7a3ca5c5b7102a54e.png159 Кб, 400x173
86 1918040
>>1918028
>>1918025
Благодарю.
87 1918052
>>1918004

>на php проще стартап сделать


Это какие?
88 1918058
>>1918052

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

Просто добавил и индексируештся.

Второй по простоте стартап это мобильная приложуха, наверно.
89 1918059
>>1918052
А наклепать проще всего на Rails или Laravel. Но рельсы мертвы и руби сложнее пыхи
90 1918061
>>1918059

>руби сложнее пыхи


В чём?
91 1918063
>>1918059
Рельсы живы,не надо тут
Оч крутой фреймворк
92 1918069
На пхп можно зарабатывать больше 100к? Есть два знакомых, которые на реакт с нуля вкатились и один уже 170к имеет, а другой 210к. При том первый имеет пол года опыта, а другой полтора. Вот с пхп такое возможно? Или 70к для пхп предел?
93 1918077
>>1918061

> В чём?



В руби своя атмосфера. Надо уметь ебаться с магией и с DSL'ями, там ООП по заветам ИльичаКэя. А php это почти тот же си. Иногда такой же дырявый. Ну проще он бля ну хуй знает. И непривычный пиздец. В этом плане пхп проще.

Хотя я люблю руби, вопросов нет.

>>1918063

Производительность занесите плез

>>1918069

Можно. Но зависит от города. В Москве получают.
94 1918081
>>1918069
Что за реакт?
95 1918082
>>1918077

>Производительность занесите плез


Ты новый твиттер собрался пилить
для малого и среднего он крут
Ларавел тоже для сильных нагрузок тоже не айс
96 1918084
>>1918081
Жс библиотека
97 1918087
>>1918069
Сегодня получил офер на 120к.
Еще смотрел ваки удаленки. На сеньерских позициях вполне себе можно до 200к поднимать.

Но насчет реакта ты прав, сейчас там платят больше и вкат проще.
98 1918090
>>1918084
>>1918087
Что для работы с реактом надо помимо самого реакта знать?
99 1918091
>>1918090
ноду
100 1918092
>>1917984
На чистом пхп никто не работает как правило, всегда требуется знание баз данных и фронта, затем подтягивается по любому js node react и так далее. Все зависит от конкретного случая. Но вкатиться на минималках на вебе через понимание апач+пыхи+js однозначно проще, чем искать вакансии джуниора на java или си, т.к спрос на порядок выше и реально больше прикладных задач можно сделать. Потом по любому подключаются всякого рода редиски, Всегда есть куда расти, подключать массу сервисов - амазон, азюре, всевозможные дап, и т.п. Рано или поздно вывозит на необходимость освоения java и cи при необходимости серверных решений для медиа - данных и тп. То есть прямиком в фулл-стек. Другой вопрос - это застрять на пхп. Тогда да, таджик. Но тут не в пыхе уже дело, а в отстутствии сферы применения навыков и знаний или тупо в лени.
Но так же можно застрять где угодно. И из моего опыта фул-стекеров, которые начинали с пыхи даже больше, чем оверпродвинутых фанатов си++ и java, и особенно питонщиков,застрявших в поисках максимально теплого места и перебивающихся фрилансом, которых пруд пруди, и которым планку сбили - работы нормальной по их запросам у них постоянно нет, поскольку их навыки слишком узкие для решения востребованных задач.
101 1918093
>>1918087
На собесе сильно дрочат? Есть вопросы, которые нужно звучить?

мимо собираюсь менять работу, до этого два раза устраивался по знакомству
102 1918096
>>1918082

Ну по-моему рельсы даже ларавелю поддерживает.
А по чистой скорости php с джавой тягается.
103 1918098
>>1918069
блять опять этот даун уже третий тред подряд засирает
104 1918099
>>1918096
Ну вы же на чистом не пишете,а исп фреймворки с кучей абстракций и слоев
105 1918100
>>1918090

Джаваскрипт, css+html, webpack/gulp/ещё какую-то поеботу.

Ещё нужно немного понимать как бэк работает.
Screenshot.png15 Кб, 453x562
106 1918112
Почему не работает? Начинаю злится.
107 1918115
>>1918112
Всё, понял.
108 1918119
>>1918091
Как раз таки нода не нужна
109 1918123
>>1918100
Галп устарел.
Вебпак редко когда используют.
Для реакта есть cra, который в большинстве случаев справляется
110 1918124
>>1918087

>На сеньерских позициях вполне себе можно до 200к поднимать.


Я недавно смотрел сеньерские вакансии по пыху в своей мухосрани, отфильтровал чтобы показывало только с указанием зп. Малость охуел, самая нижняя граница которую я увидел - 4k$. Вроде бы пиздеть не должны, до этого был уверен что для пыхера 3к$ не достижимы.
111 1918125
>>1918099

Пишем, ещё как пишем. Что-то серьёзное только на чистом с библиотеками.
112 1918128
>>1918093
В этот раз несильно дрочили.
Спросили пару фич пхп, за ООП и СОЛИД.
Дали написать сортировку - написал пузерык и назвал алго сложность 1 вариант улучшения.

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

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

Мне например было интересно услышать, как они справляются с легаси, поэтому задал на эту тему несколько вопросов.
113 1918131
>>1918123

Я через слэш написал потому что не в теме чё там у этой фронтент петушни в тренде. У нас webpack везде.

У фронтенд петушни каждый год что-то устаревает, ещё следить за их трендами
114 1918133
>>1918128
А что делает контора?
115 1918135
>>1918124

>для пыхера 3к$ не достижимы


Если знать разговорный английский и не такие суммы достижимы
116 1918136
>>1918133
Интегратор казино/рулеток/ставок на спорт. Чешская контора.
117 1918137
>>1918124

Та дело в том что в принципе в теории зарплаты сеньоров не ограничены. Когда речь идёт о сеньорах, тут очень сложно говорить о сравнении одного с другим. От Синьора вообще зависит будут ли джуны писать говнокод или нет. Хороший сеньор просто не допустит говнокода и даст жунам конкретные задачи, укажет best practices и тд.

Там вообще доходы очень разные. И в hh не так легко их найти, так как чаще всего на эти доходы не берут людей с улицы а повышают. Всё таки синьор из другой фирмы это не то. Ему нужно время вникнуть в проектоту.
118 1918144
>>1918137
Чем отличается джун от мидла и мидл от сеньора? Где проходят грани?
119 1918149
>>1918144
Джун - говно без задач, ему можно давать только самые простые таски и пристально следить, чтобы в код не насрал.
Мидл - рабочая лошадка. Берет задачи из беклога и делает, все подробности выясняет сам.
Синьор - следит за качеством проекта (раздает пиздюлей джунам и мидлам), работает с бизнесом (выясняет требования, оформляет в таски), изредка что-то сам пишет
120 1918153
>>1918144

>Чем отличается джун от мидла и мидл от сеньора? Где проходят грани?



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

Проще всего - уровнем вовлеченности и менеджментом.
То есть если тебе скидывают задачи в жЫре или ещё где вы там сидите, спрашивают сроки - ты жун.

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

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

Ну ты понел. А зарплата Синьора может зависить напрямую от успеха проекта. Премии и тд не редки.
122 1918157
>>1918149

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


Этим разве не отдельный человек должен заниматься? Продакт менеджер или как его там
Screenshot.png16 Кб, 280x375
123 1918166
Что означает разная подсветка у текста снизу?
124 1918168
>>1918157
Бывает такой косяк, когда "отдельный человек" пытается справиться, нихера не разбираясь в программировании. Как правило такие проекты заканчиваются тем, что проект намертво встает колом или ползет медленнее улитки, так как хитрожопые яйцеголовые прогеры всегда убедят его, что "так невозможно сделать, а для этого надо еще дофига и больше времени и не факт что получится" и т.п., злоупотребляя доверием тупого магла и разводя его и начальство как школьников ради веселого оплачиваемого шлангования и активного ибд со скоростью три строчки кода на четверых в неделю. Как правило, от жадности глупого начальства такое делается. Иногда существует неограниченный период времени. Сам знаю фирмы и компании со штатом из 50+ прогеров, верстальщиков и дизайнеров, которые дружно "поддерживают" пятистраничный корпоративный сайт на вордпрессе, и смена адреса электронной почты на странице контактов занимает полторы недели совещаний и планерок, а затем еще неделю выяснения, кто будет исполнителем и собственно само исполнение. Мне лично очень нравятся такие коллективы.

Опытные же люди давно в курсе, и ставят на эту роль сеньора-помидора, который бы и сам тупо мог собрать бы весь проект, если бы фактор времени был бы не важен. Тогда все более менее рационально получается. Но это как правило только тогда, когда контора действительно делает серьезный проект. А для обычных кобанчиков даже опытные сеньоры быстро смекают, что в глобальных масштабах вариант 1 более правилен. Потому что маглы это маглы, им не дано понять, как и почему правильно делать их проекты, поэтому их дело - платить и повиноваться прогеру, и за каждый косяк на корачках ползать, чтобы починили. Так всегда было и будет. :)
16106562387890.jpg115 Кб, 645x912
125 1918179
>>1917877
Ты меня с кем-то спутал, анон, я тут впервые пишу. Сомневаюсь, что у кого-то аналогичная мне проблема. Слишком маловероятно. Хотя шансы есть всегда и везде.

> ООО "Рога и Копыта"


— "Анон Битардов, а доказать это сможете?"
— "Анон Битардов, это означает, что вы можете заниматься полноценными проектами сразу же?"

А у Анона Битардова клок в горле и жопе застрял.
126 1918185
>>1918090
React, Redux, Router, Saga.
Какой-нибудь ui-kit типа react-bootstrap, ant, и другие
Опционально сервер-сайд рендеринг.
Ну и офк адаптивная верстка.
16059683299340.png98 Кб, 609x609
127 1918186
>>1918179
— "Анон Битардов, а доказать это сможете?"
— "Анон Битардов, это означает, что вы можете заниматься полноценными проектами сразу же?"

— "Буду краток. Вы знаете, буквально на днях я был на /pr/, провёл беседу со многими программистами, в том числе молодыми, кстати,
очень грамотные ребята. Так вот мы обсудили, в частности и данную
проблему, поговорили о текущей экономической обстановке в стране; они
так же рассказали о своих планах на будущее. Конечно, в первую очередь
их волновала проблема востребованности; не менее остро встал и вопрос по
ипотечным кредитам, но могу заверить, все эти проблемы решаемы и мы
направим все усилия, чтобы решены они были в самом ближайшем будущем. В
том числе это касается и темы, затронутой в вашем вопросе."
128 1918187
>>1918157
От размера конторы зависит.
В моей первой конторе синьором был дирек, соответственно, он базарил с клиентами, выяснял требования и нарезал таски для меня и других разрабов.
В крупных фирмах уже появляются всякие пмы, продакты, аналитики
image.png55 Кб, 994x350
129 1918189
>>1918179
А это чей пост?
130 1918200
>>1917443

>не могу работать официально


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

>от армейки плохо гаситься


А где связь?
132 1918205
>>1918201
обычно люди мужского пола ищут целенаправленно неофициальную работу только в таком случае. ну или ты от алиментов гасишься, кто знает тебя
image.png106 Кб, 633x924
133 1918238
Пчелик, там справа в этой хуйне пояснение)))
134 1918239
Screenshot.png18 Кб, 787x594
135 1918265
И в чём эта ошибка ебаная?
136 1918281
>>1918265
Слепой штоле, там всё написано.
image.png45 Кб, 925x394
137 1918282
>>1918265
Учись гуглить ошибки
138 1918286
>>1918282
>>1918281
"The "Unknown modifier X" error usually occurs in the following two cases:

When your regular expression is missing delimiters.

When you use the delimiter inside the pattern without escaping it."

У меня такого нет.
139 1918291
>>1918286
У меня на скрине с гугла решение твоей проблемы.
В php функции preg_replace не нужно указывать модификатор g, т.к. он задается через параметр $limit. По умолчанию g "включён".
140 1918292
>>1918286
У тебя написано, что нет конкретно g.
Потому что его нет, ибо наколхозили отдельную функцию preg_match_all вместо него.
141 1918302
Ясно.
Screenshot.png23 Кб, 717x645
142 1918341
Как добавить в массив все найденные соответствия в тексте?
143 1918355
>>1918341
preg_match_all
Screenshot.png24 Кб, 668x654
144 1918356
>>1918355
Оно создаёт подмассивы.
145 1918384
>>1918355
>>1918356
БЕЗ НИХ МОЖНО?
image.png21 Кб, 1036x115
146 1918393
>>1918356
Когда научишься гуглить и доку читать?
147 1918398
>>1918384
Я гуглил, мне не выскакивало.
148 1918478
>>1918398
Что ты гуглил?
Заходишь на пхп.нет и вбиваешь свой метод, чтобы понять как он работает.
В пыхе, к сожалению, многие методы работают неочевидно
149 1918521
>>1918478

>Что ты гуглил?


Не помню... Щас посмотрим!

>php Как добавить в массив все соответствия шаблону


Вот.
Screenshot.png23 Кб, 647x597
150 1918535
>>1918356
>>1918341
>>1918521
Мы додумались как сделать хорошо! Пофиг на подмассивы уже в принципе.
151 1918624
Такие вещи как Vue используют только для создания одностраничных приложений? Или могут быть еще какие-нибудь применения?
152 1918654
>>1918624
Не обязательно одностраничники. Компонентики можно по разному использовать. Например, кнопка лайка на посте
153 1918905
>>1918535
В принципе сойдет, т.к. ты не по группам ищешь.
Тогда можно убрать круглые скобки из регулярки, т.к. ты её не используешь
w.jpg54 Кб, 591x422
154 1918914
Не могу запустить сайты на Denwer вместо моих сайтов висит эта хрень, в phpmyadmin не могу зайти тоже она висит. Что делать?
155 1918915
>>1918914

>Denwer


Ты из какой пещеры вылез, дедуль?
156 1918919
>>1918914
Так останови сервис iis, он захапал порт.
157 1918921
>>1918915
А что сейчас? В последний раз сайт делал в институте в 2006
>>1918919
Где?
158 1918928
>>1918921
Опенсервер на крайний случай. Я думал уже давно все докером научились пользоваться, а тут бля денвер, ололо
159 1918929
>>1918928

>Размер до/после распаковки835 МБ / 5.81 ГБ


Что за адов пиздец?
160 1918931
>>1918929
Мощный инструмент
161 1918947
>>1918931
Какой-то зверьсд для макак.
162 1918960
>>1917260 (OP)
Почему на второй картинке так много котиков?
163 1918963
>>1918928

>давно все докером


Нахуй нужен - не хватало ещё контейнер для сайтиков тащить, который ещё и далеко не везде работает - ему только 10винду подай.
Жирно будет с виндой целый день трахаться ради этого.
164 1918976
>>1918963
Оло, на чем ты там сидишь? На семере что ли?
165 1919053
>>1918963
Как раз сейчас докер отлично работает на 10 винде.
Если ты сидишь на некроговне - твои проблемы
166 1919139
Посоветуйте чего для портфолио и дрочки скилла на ларке склепать более-менее интересного. Пока что из идей только сайт объявлений типо авито и поиска работы типо hh.
167 1919155
>>1919139

>авито


Елисеева что ли смотришь?
168 1919171
>>1919155
Нет, не люблю всякие курсы ( особенно в видеоформате ), но эту идею мне принес анон этим >>1918025 постом.
169 1919342
>>1918914
Челы, а как под вайном денвер запустить?
170 1919362
Какая по канону должна быть структура директории views в ларке? Я пока что для себя представляю такой вариант:
- Конечные шаблоны, которые будут генерироваться для пользователя, в корне папки
- Папка layouts для базовых шаблонов, которые будут наследоваться
- Папка partitions для шаблонов, которые будут включаться через @include
Правильно мыслю?
171 1919378
>>1919342

>под вайном денвер


Развелось наркоманов
172 1919533
173 1919534
Трудоустроенные аноны, а у вас на работе интересные проекты вообще, или одни интернет-магазины? Можете рассказать конкретнее о последних проектах?
174 1919635
>>1919534
Международный достаточно крупный финтех. До этого околобанковские, тоже связанные с финансами, проекты. Платёжные шлюзы.
175 1919643
Какая функция приводит первый символ строки к верхнему регистру?
176 1919645
>>1919643
Нашёл.
Screenshot.png36 Кб, 801x670
177 1919659
По какой причине первая буква строки-значения $string не приводится к верхнему регистру?
178 1919660
>>1919659
Дикарские наречия не поддерживаются.
179 1919662
>>1919660
Ебать, и как тогда это решать?

"Дан неграмотно написанный текст, состоящий из нескольких предложений на русском языке. Ошибки заключаются в неправильной расстановке пробелов и отсутствии заглавных букв. Исправь текст так, чтобы все предложения в нем начинались с большой буквы, а после знаков запятая, точка, точка с запятой, двоеточие, восклицательный и вопросительный знак стоял ровно один пробел (а перед ними — ни одного). Составные знаки вроде многоточия или 2 вопросительных знаков подряд должны сохраняться."
180 1919663
>>1919662
Погугли и узнай как решается, хули ты сразу бежишь в тред.
181 1919670
>>1919663

>хули ты сразу бежишь в тред.


Хочца.
Screenshot.png40 Кб, 835x682
182 1919675
Не работает решение из поисковика.
183 1919735
>>1919675
Почему каждую твою проблему я могу прогуглить за минуту, а ты нет?
184 1919770
>>1919735
Ленивый, либо глупый, либо все вместе
185 1919783
>>1919675
Какая твоя цель? Если научиться кодить - учи лучше ооп и прочие вещи.
Хочешь таки регулярки освоить - начни с малого и сам, без чужого кода.
186 1919789
>>1919783
Ему еще не помешает учиться гуглить, читать доку, дебажить и прочий программистский проблем-рисерч
187 1919792
>>1919534
Только интересные крупные проекты конечно же.
Мне кажется везде так, если ты нормальный бэкендер, а не клепальщик говна на вордпрессе.
188 1919804
>>1919792

>интересные крупные пректы


>везде так


>на php


Лол
189 1919808
>>1919792
Нормальный бэкендер пишет интересные крупные проекты на go/python/net, а не на пхп.
190 1919813
>>1919808

>на go


Ахахах, блять
191 1919818
>>1919534
В прошлом году была платформа для нескольких интернет магазинов на моднявом стеке.
Но я свалил уволили, т.к. был не согласен с направлением развития этого говна и принятыми архитектурными решениями.
До этого был сервис постинга автообъявлений на всякие площадки типа авито.

На собесах тоже интересные проекты показывали но офер не давали вроде сервиса для рекламщиком (там всякая рекламная аналитика, смм, сео хуйня).

Так-то любая бизнес идея может выстрелить и понадобится что-то умнее лэндинга или странички в соц сетях.
192 1919821
>>1919813
Сейчас модно пилить говно на го.
И хорошо, если это говно пилят в виде микросервисов. А то ведь попадаются макаки, которые пытаются на го писать как на пхп в монолитном стиле
193 1919853
>>1919821
О, кстати, поясните пожалуйста вкатуну за совмещение php и go. Когда такое может пригодиться, и как это вообще реализовывается?
194 1919860
>>1919853
Когда у фирмы есть старый монолитный продукт на пхп, он приносит прилично денег, а на поддержку это говна уже никаких нервов не хватает.
Тогда берут это монолитное говно и потихоньку распиливают на микросервисы, которые поддерживать на порядки проще.

Тебе как вкатуну это всё нахрен не надо. Бери один язык и катись. Оставь распил легаси говна тем, кому это интересно.
195 1919864
>>1919860
>>1919808
>>1919804

С пруфом показываешь какой крупный ВЕСЬ проект пишешь на GO/тобой перечисленное, или идёшь учить уроки.
image.png195 Кб, 1920x1040
196 1919876
>>1919864
Что сказать то хотел, мань?
197 1919884
Когда имеет смысл SPA?
T-Vp4MNeuqk.jpg34 Кб, 537x162
198 1919889
Что это за хуйня? Как имя переменной может что-то ускорить?
199 1919890
>>1919889
Это не имя переменной, а запись в конец массива.

$foo[] = $boo;

Так, например.
200 1919891
201 1919892
>>1919884
Когда фронт сложнее парочки форм
202 1919897
>>1919892
VK уже можно считать spa?
203 1919899
>>1919897
VK - гребаный монстр. Он не поместится в один spa.
На мобилке уже начали фронт вк распиливать на отдельные сервисы
204 1919900
>>1919876

> postgress


> крупный проект


Засмеялся-проиграл тред? В больших проектах на таких СУБД только хранят всякую мелочь.
Ну-ка покажи количество строк в этой базе данных.
205 1919901
>>1919900
Там же написано pet
206 1919906
>>1919901
Вот для чего нужен GO - это тупо дома для себя что-то там поделать на выходных и забыть, ну ещё впарить на говнокурсах. Так нахуй никому не нужен, говорю)

У меня в базах в одной таблице по 300 миллионов данных, со связями с другими таблицами - у меня за одну-две секунды это всё переваривается на PHP. Я хуй знает для чего GO)
207 1919907
>>1919900
Там neo4j основная база
В постгре только учетки лежат
208 1919908
>>1919899
Но по сути,там от пыха уже мало что осталось?
Уж слишком много интерактива,реалтайма...
209 1919909
>>1919901
Надо было в папочку work закинуть - солидно бы смотрелось, да?
210 1919911
>>1919906

>для чего GO


Осваивать инвест бюджеты
211 1919940
>>1919735
Хз, а что ты гуглишь?
212 1919945
>>1919940
Загуглил метод php mb_ucfirst
И не обнаружил его в офф доке. Там был другой метод для преобразования регистра
213 1919975
>>1919945

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


В офф.доке? Какой?
214 1919998
>>1919975
php.net
215 1920211
>>1917737

У тебя ошибка в условии цикла. Там пишут не условие завершения, а условие продолжения. У тебя это $creditSum <= 0, то есть выполнять цикл пока $creditSum <= 0. Цикл в итоге не выполняется ни разу.

Ты можешь в этом убедиться, поставив echo "Loop"; внутри цикла.

Далее, $commission не надо вычислять из процента. Его надо явно передавать в функцию. Тогда функция станет универсальнее и сможет рассчитывать кредиты с любыит параметрами, а не только те, что ты в нее заложил.

Еще ошибка тут: $creditSum = $creditSum -= $payout. Надо либо -= заменить на -, либо убрать $creditSum = ... слева.

Еще ошибка тут: if ($creditPay = 1.03) - ты использовал присваивание значения переменной (=) вместо сравнения (==).

По одному из кредитов общая сумма выплаты равна 61270.

В общем, переделывать надо весь код.
216 1920226
>>1917845

> if ($creditSum < $payout) {



Этот if можно убрать, используя функцию min/max для вычисления размера оплаты:

оплата = меньшее из (стандартной оплаты, остатка по кредиту).

А так, верно.

>>1917979

Вообще, такая ситуация, когда есть однотипные, но разные сущности, называется наследование таблиц. Есть три стандартных паттерна: Class Table Inheritance, Single TI, Concrete TI.

Single TI, например, это и есть складывание всего в одну таблицу.

Наверно, вместо отдельных сущностей лучше использовать один из трех паттернов.
217 1920244
>>1919890
И что она должна делать здесь например?

$arr = ['sfg','werwer','ww'];

$foo[] = $boo;

foreach ($arr as $val) {

echo "$val";
}
218 1920297
Сап, двач. Вопрос следующий, касается ларавеля. У меня например есть моделька.

У этой модельки довольно сложная логика проверки валидности.

Это требует запросов в базу и тд. Следующий вопрос:
Куда это запихнуть?

Я это пока для тестов запихнул в request в валидацию, но оно там явно не пренадлежит. Это бизнес логика.

Такое чувство, что мне надо оверрайдить create в модели.

Вся же бизнес логика должна быть в модели, верно?
219 1920301
>>1920297
Или это надо в сервис захуярить?
220 1920310
>>1920297

Переопредели create
221 1920311
>>1917737
Тебе уже расписали твои ошибки, и даже показали правильное решение: >>1917746
Но на момент прохождения урока "Функции и новый айпад" мы еще не знали о возможности создания циклов через while. Так что у меня получилось так: https://ideone.com/i6Vwdb

Ответы сверил с >>1917746 , однако не понял, где в коде >>1917746 проверяется, не превышает ли константа меньшего платежа остаток по кредиту. Может быть, неведомое мне колдунство скрыто в строке return $paid + $sum; ?
Что это обозначает, поясните, пожалуйста.
>>1917984
То-то у тебя жизнь сладкая, насыщенная и не лишенная смысла: катаешься по пхп-треду и изливаешь говно. Ради такого стоит постичь С++, да.
>>1918115
А я вот не понял. Вернее понял, где ты ошибся, но не понял, нахуя ты в регулярке пишешь [а-яёА-ЯЁ], если у тебя после нее стоит ключ i?
222 1920317
>>1920311

>Может быть, неведомое мне колдунство скрыто в строке return $paid + $sum; ?


Цикл останавливается с суммой в нуль или переплатой-минусом, вот он и добавляется к выплатам для правильного счета.
223 1920355
>>1920317
Теперь понял. Просто забыл, что итогом функции является именно то, что return.
Мудрый Анон, взгляни, пожалуйста, на мое решение первой бонусной задачи про клавишу Shift: https://ideone.com/4JJzk6
Не перемудрил ли я чего? Что в коде режет глаз? Что посоветуешь?
Специально писал с подробными комментариями. Правильно ли я понимаю действия, выполняемые строками кода? Спасибо.
224 1920412
>>1920355
Я бы не ебался с циклами.
https://ideone.com/C41v4E
225 1920436
А как администратор попадает на свою панель управления сайтом?
226 1920625
>>1920436
Со страницы логина.
227 1920702
>>1920436

>панель управления сайтом


Кстати, а зачем веб админка нужна, по крайней мере в мелких бложеках или интернет магазинах? Не безопаснее ли прямо в базу грузить данные или для десктопа приложение написать, если гуи так нужно. Если что, сорри за нубский вопрос.
228 1920708
>>1920702
Чтобы девачьки могли хуярить, а не кампунктерщики.
Ну и зачастую просто берут готовый движок, более продвинутый чем требуется, в котором это уже есть, так хули не пользоваться.
229 1920758
>>1920702
Чтобы разные криворукие овнеры могли добавлять на сайт всяку разную херню и ничего при этом не поломали.
Screenshot.png25 Кб, 794x729
230 1920759
Почему не работает суперкод который я насоображал гигамозгом? Решал задачу на считалочку. В функции идёт переборка элементов, при каждом переборе к переменной $i прибавляется 1, при значении $i в 5 элемент перебирающийся в данный момент должен стираться и переменная $i обнуляется. Что не так?
231 1920760
>>1920759
А, стопэ... Щас попробую сам разобраться...
Screenshot.png26 Кб, 833x742
232 1920761
>>1920759
>>1920760
Исправил все ошибки но не полегчало. Вопросы, предложения?
233 1920766

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

234 1920794
>>1920625
но там получается должен быть отдельный кусок кода именно для админа,что бы вместо обычного акка юзера загрузилась панель админа?
235 1920799
>>1920759
В типах разбираешься? Сразу используй строгую типизацию, привыкай.
после <?php
declare(strict_types=1)
function(string $str, array $arr) например

нормально называй функции и на английском. Визуально разбивай код на блоки - хотя бы отступом отделяй.
236 1920801
>>1920794
Ну да. Отдельная страница логина в админку. Отдельные страницы (контроллеры) самой админки. Технически это может быть вообще другой сайт (веб-приложение), просто с доступом к базе собственно сайта который админят. Если хочется совсем необычного, скажем если у тебя десятки лендингов в них можно придумать какое-то простенькое api и админить все эти лендинги с одной универсальной админки (для лендингом много функционала не нужно, максимум там какие-то счетчики метрик рекламы обновлять).
237 1920802
>>1920794
В базе должна быть роль у юзера, админ или юзер.
Ты можешь выбрать кто может в админку вообще заходить.
Если есть разные админки для юзера и админа, то либо можно их вынести в разные роуты, либо разделить куски,
дальше в шаблоне или контроллере if($user->getRole() === 'admin') { то вывести панель админа} else {вывести панель юзера}
238 1920815
>>1920801
но тогда в коде уже должен заранее быть логин и пароль админа?
там где проверяют логины и пароли юзеров должен быть отдельный if($user==$admin)?
ну это если на чистом
239 1920829
>>1920761
На хуя там массив?
240 1920974
Ку, ОП. Чекни задачу про банкомат, два чаю.

https://ideone.com/t31toZ
241 1920987
>>1920974
А не, заметил что неправильно сделал вторую часть, позже скину.
Дайте код Двача Мамка 242 1921048
Дайте код двача и все его плюшки
243 1921210
>>1918976
>>1919053
Перепись маняхипстеров от пхп ИТТ.
Вы там по 20 проектов каждый ведёте на разных платформах, макаки? А ничего, что он далеко не везде и не для всех задач нужен вообще?
Даже удивлён, что всего 2 дебила нашлось на весь тред.

>>1918963
Если не нужен в твоей работе - не юзай. Это не такая необходимая вещь, как тот же гит.
244 1921301
>>1919860

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

Это дрянь, от которой лучше держаться подальше.

Суммарный объем кода в микросервисах не меньше, а больше, чем в исходном монолите. Разобраться в них сложнее и дольше, чем в монолите. Да даже запустить локально их сложнее: нужно запускать поганые докеры, которые едят место на диске огромными образами, едят память и процессор, тормозят.

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

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

Другой пример. Микросервисам A, B и C надо работать с одной и той же сущностью (например: Пользователь). Что делать? Копипастить код и поддерживать 3 варианта одного и того же кода? Когда у юзера появятся новые поля, добавлять их в три микросервиса? Выносить в библиотеку и мучаться с тем, что одному сервису нужна одна версия библиотеки, а другому - другая? Сплошная боль и мучение. А в монолите такой проблемы просто нет.

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

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

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

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

Это дрянь, от которой лучше держаться подальше.

Суммарный объем кода в микросервисах не меньше, а больше, чем в исходном монолите. Разобраться в них сложнее и дольше, чем в монолите. Да даже запустить локально их сложнее: нужно запускать поганые докеры, которые едят место на диске огромными образами, едят память и процессор, тормозят.

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

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

Другой пример. Микросервисам A, B и C надо работать с одной и той же сущностью (например: Пользователь). Что делать? Копипастить код и поддерживать 3 варианта одного и того же кода? Когда у юзера появятся новые поля, добавлять их в три микросервиса? Выносить в библиотеку и мучаться с тем, что одному сервису нужна одна версия библиотеки, а другому - другая? Сплошная боль и мучение. А в монолите такой проблемы просто нет.

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

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

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

Потому что это кошачье кафе.
246 1921342
>>1919659

Тут описано: https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

ucfirst не поможет, придется отрезать от строки первую букву, переводить ее в верхний регистр и приклеивать остаток строки.
247 1921344
>>1920829
Чтоб считалочка была.
248 1921346
>>1920799

>В типах разбираешься? Сразу используй строгую типизацию, привыкай.


Нет, меня не учили в курсе с ОП-поста.
Screenshot.png28 Кб, 831x726
249 1921481
>>1920799
Сделал как ты сказал, не помогло. ЧЯДНТ ЧЯДНТ ЧЯДНТ???
951367c657bb3bbdd66f5c5b9a2526ba.jpg57 Кб, 1280x720
250 1921504
>>1921481
Перетолстил.
251 1921528
>>1920766
Битриксоид, плес
252 1921585
Как передать переменную внутрь html?
253 1921589
>>1921342

>отрезать от строки первую букву, переводить ее в верхний регистр и приклеивать остаток


нахрена? там кирилица utf - mb_ucfirst юзай и все
254 1921716
>>1921504
ОБЪЯСНИ ЧТО НЕ ТАК
255 1921719
Котята, если в проекте, написанном на ларавеле, вся бизнес логика находится в основном в контроллерах, то это автоматически считается признаком дурного тона? Даже если этот код в контроллерах написан грамотно?
256 1921744
>>1921719
Думай не о призраках дурного тона, а о том чтобы не наступить себе на яица
Копипастишь одни и теже проверки в разные места - однажды наступишь
Зависимости между сущностями делаешь не через интерфейсы - однажды наступишь.
Делаешь слишком умные объекты знающие все обо всем - однажды наступишь.
Делаешь слишком открытые объекты позволяющие ебать себя во все щели - однажды наступишь.
И так далее...
257 1921745
>>1921744

>теже


те же
258 1921746
>>1921481
Помогите пожалуйста мне...
259 1921755
>>1921744
И не всегда нужно писать хороший код. Иногда нужно говнокодить. Особенно когда ты не в состоянии убедить начальство выделить тебе время на нормальный код. Тебе и так выдели много времени, почему ты хочешь целую неделю? Вот Петя не жалуется постоянно на нехватку времени, всегда все успевает.
260 1921765
>>1921755
Тут код не поможет. Тут надо с начальством вопрос решать. Если начальство выделывается - увольняй его нафиг. Время определяешь только ты. Не устраивает их - пусть другие им говнокодят. Пока расклад такой - пользуйтесь. Начальство баловать нельзя категорически.
261 1921774
262 1921777
>>1921774
Они тебе помогли теперь помоги мне...
>>1921481
А то будут плохие сны снится...
263 1921790
>>1921719

>считается признаком дурного тона?


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

Рекомендую делать через сервисы\менеджеры - так банально удобнее. На самом деле контроллер не имеет ничего общего с логикой приложения, а является точкой входа из веб, и не более.
В контроллерах вызываются сервисы, которые и содежат логику приложения - пользователя там можно, например, зарегистровать или забанить. При работе через сервисы ты можешь забанить этого пользователя и через консольку - только напиши обработчик команды, где вызови этот сервис с нужными параметрами, полученными из командной строки. А как ты контроллер вызовешь из консольки?
Хотя тот же Опенкарт использует грязные контроллеры и вездесущий копипаст и всем норм. Но это плохой пример.
264 1921798
>>1921765

>Начальство баловать нельзя категорически.


Двачую. Хотят говна - делай говно. Чтоб падало периодически, глючило и не работало как надо. Ну а что? Хотели быстро - НАТЕ быстро.
Если делать быстро и хорошо - будешь в мыле весь. Через год выгоришь к хуям.
265 1921803
>>1921798
А вообще мне как-то повстречалось выражение что-то вроде "Любишь быстро-быстро всё делать? Это мама из тебя шныря такого воспитала?". Может немного по-АУЕшному, но суть отражает - быть шнырём это унизительно и неправильно. Работать надо плавно с расстановкой.
266 1921806
>>1921481

unset($place) удаляет не элемент массива, а переменную $place. Чтобы удалить элемент массива, надо писать unset($array[$key]).

Обрати внимание, что при удалении элемента ключи и значения других элементов не пересчитываются. То есть если ключи шли как 0, 1, 2, 3 и ты удалил номер 2, то останется массив с ключами 0, 1, 3.
267 1921807
>>1921806
Спасибо добрый сэр!!!
268 1921817
>>1921790
Спасибо, анончик.
Screenshot.png23 Кб, 455x694
269 1921830
Мы завершили считалочку!!!
Гуро ПХП-кода, оцените мастерство исполнения.
270 1921831
>>1921830
ПОЧТИ САМИ
271 1921836
>>1921830
Я так и не понял, что это за хуйня и что она должна делать.
Это для какого-то конкурса непонятной хуйни?
Screenshot.png404 Кб, 801x765
272 1921845
>>1921836
Нет мы решали задачу!
273 1921852
>>1921845
Кстати прикольная тема, я думаю неплохо покидать сюда пхпшных всяких задач, максимально шизанутых, чисто для развлекухи, и предложить желающим выкладывать свои варианты решений, а потом можно будет устраивать развеселые срачи с метанием кала друг в друга, на тему у кого решение толще и длиннее!
274 1921867
>>1921845
Так у тебя же не тот результат, лол.
275 1921868
>>1921867
НУ И В ЧЁМ Я ОШИБСЯ?!
276 1921869
>>1921868
Подозреваю, что всё ломается, когда ты на ходу изменяешь итерируемый массив.
277 1921879
Хорошо раз вы такие умные - покажите как правильно...
278 1921885
>>1921852
>>1921879
Два варианта https://ideone.com/Bb1n1E
Подозреваю, что можно как-то пижже провернуть.
asasas.png13 Кб, 969x369
279 1921900
Прорабатываю курс по ларавелу. Там начало на 5.7, потом переход на 5.8, и вот теперь на 6.0. А у меня ошибка. Вот поставил свежий Ларавел 6.20, добавляю аутентификацию - а она не ставится. Ничего путного не нагуглил. Что сделать, чтобы заработало?
image.png115 Кб, 638x417
280 1921940
281 1921941
>>1921589

>mb_ucfirst


Можно ссылку на документацию по этой функции?
282 1921942
>>1921852
Что определяет "пехапешность" задачи?
283 1921943
>>1921900
Хоть бы на гитхаб страничку пакета зашел и прочел предупреждение...

Почему в пхп треде люди настолько нелюбознательные?
284 1921947
>>1917260 (OP)
Как пхп себя чувствует в мире победивших SPA?)0)
285 1921952
>>1921947
Ну как, апишки на нем клепают, а что? В чем разница с другими бэкенд языками в этом отношении?
286 1921966
>>1921947
И какие ты можешь навскидку назвать популярные большие сайты
в виде SPA?
Мне приходит в голову только какая-то инфографика и такие идиотские сайтики с скроллингом вниз, по уёбищности примерно как почивший флэш.
287 1922274
>>1921966
Gmail
Twitter
Facebook
288 1922290
>>1922274

>Facebook


Там не SPA, а гибрид.

И да - SPA довольно сомнительная хуйня, мало где нужная.

мимо
289 1922293
>>1921952
Сейчас он тебе за ноду расскажет. На деле же, писать бэк на ноде - ярчайший признак профнепригодности к бекенду. Одно дело когда пхпшник на ноде пишет и совсем другое когда жс-вронтенд-макака.
290 1922323
>>1922274

>Facebook


Они уже отказались от пыхи?
291 1922372
анонсы, кто нибудь работал с магенто 2 ? какой там вообще подход? читаю доку и нихуя не понятно блять. еще и со вторым композером не работает сука
292 1922374
>>1921947
нахуя вы кормите этого долбоеба? регулярно из треда в тред срет про свою ноду и js с частотой раз в неделю
293 1922402
>>1922372

>магенто 2


Как тебя угораздило так вляпаться?
294 1922461
>>1921943
Так в том-то и дело, что я не понимаю, что вообще тут происходит. Требуется пакет ххх, он найден, но конфликтует с другим пакетом. И что вообще в таких ситуациях делать? Я не сеньёр-помидор и не мидл, я просто хочу пересесть с вордпресса и голого пхп на ларавел. Смотрю уроки, выполняю то, что в них описано.

То есть, мне нужно было зайти на https://github.com/illuminate/console, увидеть, что там пусто, зайти на https://github.com/laravel/ui, увидеть табличку "Supported Versions", сообразить, у меня ставится 3.2, а с Ларавелом 6 совместима только 1.х, понять, как указывать композеру номер версии и написать composer require laravel/ui "1.*" и после этого получить установленный с пакет? Шаманство какое-то. Везде кричат, что композер это круто и рулез форева. А на деле даже не может выбрать совместимые пакеты. Как так-то?
295 1922470
Имеется блок heder и в нем блоки для лого(слева),имени юзера(ближе к право),сообщение и блок выйти
Чтобы это было красиво и в одну линию,я поставил display: inline-block и все вроде встало(все с отступами)
но если уменьшить окно браузера,все блоуи справа начинаю съезжать вниз в левую сторону.
Как исправить на сжимание в одной строке до талого?
296 1922474
>>1922470
До талого ещё долго - енварь наносу.
297 1922476
>>1922402
да соль то в том что как раз и пытаюсь свалить с этого говна. полтора года отгреб на всяких cms парашах, хотя в конторе были норм проекты на адекватном стеке. сказал в том месяце что не хочу работь на этом кале а хочу норм проекты на норм стеке. в итоге подкинули эту хуйню как новый сирьезный проект благо не легали хуета. вот пытаюсь в ней как то освоиться и изучить ))) параллельно конечно же ищу нормальную галеру с адекватным стэком чтобы съебаться в закат
298 1922489
>>1922474
разобрался,надо было без отступов и задать ширину
299 1922491
>>1922476

>отгреб на всяких cms парашах


Говновебстудия на фриланс-заказах что ли?

>ищу нормальную галеру


Так может и нахуй эти шаражки - в говне-то и самому копаться можно. И не кормить хозяина конторы. Опыт ковыряния в помоях у тебя уже есть вроде.
300 1922567
>>1922491

>Говновебстудия на фриланс-заказах что ли?


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

>в говне-то и самому копаться можно.


да впизду этот фриланс. не хочу копаться в этом говне + фрилансить и ебаться с заказчиками. хочу на норм галеру или контору со своим продуктом где будет фреймворк. а на фрилансе заказов на фреймворке с гулькин хуй. так что не выход. ну а чтобы пилить свой стартап на ларе пока средств нет чтобы тууда вкладываться и развивать хотя проектик то есть, что то же я показываю хрюшам чтобы без мыла пролезть на фреймворк по факту не имея на нем коммерческого опыта
301 1923059
>>1922567
Так может стоит приврать насчет коммерческого опыта на фреймворке?
Хрюши то не проверяют, правда ли работал на нем. Им лишь бы услышать нужную цифру N+ лет на фреймворке-нейм.
302 1923098
>>1923059
А что толку? Ну пойдёт он этап с хрюшей, потом на техническом собесе его приложат.
303 1923103
>>1923098
Раз он говорит, что писал на ларе, то не факт что приложат.
А даже если на паре вопросов приложат - запишет вопросы, подучит и на следующем собесе не приложат.
304 1923114
>>1923103
А ну, если так, то да. В принципе немного приврать про опыт, когда это необходимо, не страшно, главное чтобы был готов к тех собесу нормально, чтобы дизмораль не словить.
305 1923121
>>1923114

>В принципе немного приврать про опыт, когда это необходимо, не страшно


Сейчас это маст хэв, чтобы перепрыгнуть толпу вкатунов
306 1923127
>>1923114

>приврать про опыт


Только если петы делал. Туториалы с хелловорлдом не в счёт.
Т.е. если можешь взять рандомное тестовое на этой платформе и сделать его в приемлимые сроки - тогда есть смысол приврать про опыт.
Иначе обосрёшься обидно.
307 1923157
>>1923121
Ну вот, допустим, что приврал ты про опыт, а как же опыт работы в команде? Жиру на пет прджектах не потрогаешь, умение оценивать таски тоже.
308 1923166
>>1923157
Джиру во-первых все по разному готовят. Во-вторых осваивается за 1 день, т.к. тебе всё пояснят при онбоардинге.
А умение оценивать таски из разряда фантастики
309 1923321
Есть тут работающие симфонисты?
310 1923341
>>1923321
Спрашивай
311 1923458
<div id="logo">
<a href="index.php">
<img srs="/imgages/logo.PNG" alt="logo"></a>
</div>
почему картинка не отображается?
в папке htdocs есть папка app. а в ней images
312 1923461
>>1923458

>srs


Даже не знаю.
313 1923462
314 1923466
>>1923461
а что не так,вроде верно?
315 1923468
>>1923059
>>1922567
Вот поэтому и говорят умные дядьки - учите нативный пхп сначала, без всякого дерьма типа фреймворков-ларавелов и кмс-ов. Потому что все это дерьмо - и фреймворки типа магнет, джулм вордпрессов и всяко-разных движков на нативном пхп-js-sql и построено.
Дохуя развелось "ларавелщиков" которые на деле не в сасывают, как все работает, а тупо зубрят шаблоны. Потому что "нахуя нативный пхп нужен то?". Потому и нужен, что если нативный знаешь, то тебе похеру потом, какой движок, фреймворк или кмс. Ты изнутри их видишь, и понимаешь, как и что делать в любом случае. И в теории сам можешь собрать под себя и свой собственный ларавел, и свои кмс, и свои любые движки.
И не будет херни типа "а, это магента 2 - я не работал никогда вообще с таким, хз, не потяну, я только по битриксу и вордпрессу, и немного джулму" - когда вопрос тупо добавить кнопку или таблицу данных в базу.
Как то так. Я как раз работаю (точнее подрабатываю как хобби) в конторе где половина ларавельщиков, и половина реактеров. И я отдельно, потому что я пхп-шник, node-js ник. Вне системы типа, потому что постоянно приходится корректировать их "работу", когда у них "глаза не видят, руки делают" - то есть шаблоны не работают так, как хочет заказчик, а понимания внутренней структуры - нет и в помине. Так как "некогда объяснять - хуячь шаблоны"... а все что за рамками - типа никак.
316 1923473
317 1923479
>>1922290
Просто бывает такая штука, что делаешь себе шаблончики на пыхе ридонли и горя не знаешь, потом появляется какая-то йоба форма динамическая, думаешь ну тут нужен жаваскрипт, подрубаешь вью/реакт потому что так банально продуктивнее, потом с ростом таких динамических страниц замечаешь что дублируешь верстку у компонентов, задумываешься над тем чтобы перенести общие компоненты на вью, или оставить как есть. В итоге получается что у тебя 70% фронта всё равно работает на жсе, 30% на пхп, при этом собирается всё непонятно как, хотя можно было взять какой-то nuxtjs и горя не знать, хотя усложняется деплой, это да.
Сразу адептам жиквери или чистого жса, которые считают что для простых задач вью/реакт не нужен, во первых он весит даже больше чем вью, это если мы говорим о размере ассетов, пхпшниками жиквери код пишется обычно на один раз, потом чтобы что-то добавить, нужно сидеть и 15 минут просто вникать в этот императивный поток сознания какие классы у кого включаются/выключаются, при этом непонятно на чем мы сэкономили (наверное что не нужно вебпак запускать, ну это сильно)
318 1923501
>>1923103
адекват в треде. если в течении месяца не найду работу то планирую так и поступать. но на самом деле как показывает практика то тут про фреймворк редко что то спрашивают. в основном по теории, паттернам, языку, бд. вот на этом легко сфелится на самом деле. да и то иногда и этого бывает мало. на той неделе был собес где вместо тестового вот решал задачки + вопросы по теории. в итоге правильно ответил на всю хуйню что спрашивали, и как итог на след день сказали сори вы нам не подходите))) хуй знает че им надо лол. тут все мега относительно
>>1923468
так соль то в том что с нативного и голого пхп я как раз и начинал. не будь этих знаний - не смог бы тут все это дерьмо в короткие сроки осваивать и выполнять. даже сейчас кстати по работе встречаются задачи когда надо юзать голый пхп тк средств цмски той же не хватает. а по поводу магенты2 - потому что тупо нихуя не понятно. это пиздец какой-то. я в первые структуру увидел и выпал. уровень битрикса блять. дока какая то хуевая. какие то phtml расширения которые как я понял как раз отвечают за вьюху ? везде эти ебучие xml'ки. пиздец кароче
магенто2-кун
319 1923511
>>1923501
да, магента мрачный жесткач, очень дохрена всего наворотили, чтобы "максимально мощный функционал был". Получился блять реально трактор, собранный из велосипедов. Там за один день хрен разберешься реально. И да, xml бесит реально, так как то, что по идее должно быть в базе, вынесли в файлы типа для "облегчения работы" юзерам и админам. Причем, даже не json, потому что извращенцы блин. Я когда разобрался, посносил их нахрен и заменил таблцами постгресса, урезав часть ненужного функционала. Но нервов и времени убил массу. В процессе я потом все таки собрал заказчику свой движок, и импортировал базу в него. Слишком уж дохера там всего ненужного и лишнего всобачено, и интерфейс пизданутый на выходе по своей тяжести.
320 1923514
на чистом css можно вменяемый дизайн сделать?
ну мож чутка рисованого в пейнте
321 1923516
>>1923458

>srs


>imgages

322 1923518
>>1923516
да я уже исправил
323 1923547
>>1923511
во во. сейчас пытаюсь только завести его. окружение настроить надо + поебстись с бд. я в ахуе просто целый день на это убил. и то только для того чтобы внятно сюда эластик поставить. скучаю по докеру.
324 1923562
>>1923341
Долгое время писал проекты на ларавел. Думаю, имеет ли смысл перекатываться на симфони.
Хотел поинтересоваться как обстоят дела с работой на симфе (удаленка) и зарплатами?
Судя по хх примерно 1к1 в сравнении с ларой
Судя по хабразарплатам на симфе денег больше, правда хз из-за чего
Есть ли фриланс на симфони или это скорее исключение?

И что обычно спрашивают на собесах и ждут от условного мидла симфониста?
325 1923574
>>1923501
Из задачек на собесах были всякие физ-базы и простенькие алгоритмы (сортировка, списки, матрицы).
По теории часто спрашивают ООП и СОЛИД. Это надо прям чтоб от зубов. К ним еще пол десятка паттернов проектирования назвать и пару примеров привести.

Больше всего не люблю, когда дрючат кишками бд, когда я с ними только на уровне орм в основном общаюсь.
326 1923590
>>1923574

>солид на зубок


это нахуя? вообще никогда не понимал

>К ним еще пол десятка паттернов проектирования


и это тоже надо если хочешь получать 50к ? )))
327 1923599
>>1923590

>солид на зубок


>это нахуя? вообще никогда не понимал


Ходят легенды, что где-то пишут код по солиду.

>К ним еще пол десятка паттернов проектирования


>и это тоже надо если хочешь получать 50к ? )))


Это было на собесе на 120к
328 1923613
><input type="submit" name="send" value="Отправить">
как мне оформить кнопку?
329 1923634
>>1923599
Это для мидлов и джуниоров легенды. А для сеньоров здравый смысл и банальная повседневность. Тоже жестко топлю за солид-стандарты всегда, ибо без них жопа потом полная наступает.
хотя, это важно если вы сами проект от а до я делаете. С собственными фреймворками, в нативе.
А для ларавельщиков и принеси-подайщиков это нафиг не надо, т.к. у них и так коридор возможностей еще уже, чем солид-стандарты.
330 1923641
>>1923562

>Судя по хабразарплатам на симфе денег больше, правда хз из-за чего


Так симфони это почти что джава, а ларка почти что вордпресс. Разве нет?
331 1923643
>>1923574

>физ-базы


Кто?
332 1923752
Читаю PHP 7 в подлиннике. Около 1000 страниц. Остановился пока на генераторах, и уже прямо дохуя инфы в голову поступает. Часто приходится возвращаться к некоторым темам (особенно функции). Иногда даются нетривиальные примеры, по типу функции dumper. Норм книжка или нет?
333 1923795
>>1923641
Нет. Просто ларка продвинутее и новее симфы, и когда новички все тотально юзают ларку, потому что она новее и перспективнее, то на старых проектах симфы с кадрами напряг, и все.

"Кривонаписанность" и глючность не делает из фреймворка резко джаву, а более менее понятный интерфейс не делает из него же примитивщину. То есть - один хер и то и другое. Но на симфе меньше народа пишет, потому что он - говно если честно, и сосет у ларавела. А проектов на симфе осталась гора - поэтому асинезаторы, вынужденные в этом говне ковыряться, зарабатывают больше, чем те кто в ларке хуи пинает без особого напряга.
334 1923813
>>1923752
Норм, но сейчас учатся не так. Пролистай общие принципы, самые общие, посылай нахер все непонятности и забивай, заверши ознакомление как можно скорей. Затем возьми минимальный хорошо структурированный рабочий проект любой, изучи его, поставь на хостинг как демо-полигон, умеющий блять все, и принимайся за заказы. Если возникнут вопросы по ходу - тебе полюбому примеры и задачки из учебника не помогут. Ток гугл и стаковерфлоу. применяешь на своем шаблоне и реализуешь. Сразу как сеньор, посылая всех нахер, поскольку у тебя есть готовый собственный сложный проект-модель, типа того. А лучше штук пять таких, да штук десять лотов на кодекайон поставить в продажу. Только так. Это лучше, чем тратить вагоны времени на бесполезное штудирование учебников, чтобы потом заниматься вообще хер знает чем как сраный мидл или джуниор. Чтобы общаться напрямую с кабанчиками и по своему бюджету работать, а не через три пизды и третьего-пятого менеджера айти по разработке шестого отдела логов и кеширования хз пойми чего с доступом только по хп и зряплатой долбоеба. Ну это так, мое мнение, сорри если кого задел.
335 1923841
>>1923795
Почему тогда недавно здеся местный анон назвал Ларавел колхозом и призывал учить Симфони? Честно говоря, он звучал убедительно. Не помню, какие он аргументы приводил в пользу Симфони.
336 1923845
>>1923468
Анончик, дай советов мудрых, как постигнуть дзен нативности и быть как ты?
337 1923881
>>1923562

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

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

Удалёнка есть, сам сижу на такой щас. 240k, миддл.

Зачем вообще нужен фриланс?
338 1923915
>>1923813

>Затем возьми минимальный хорошо структурированный рабочий проект любой


Скажи, пожалуйста, где его достать.
339 1923917
>>1923841
>>1923845
Потому что симфони сложнее и требует так или иначе знать натив, без которого тупо не вкатишься. А ларавел тупо конструктор, даже дурак справится, ну и никто особо не растет на нем, поскольку как оно работает и что там внутри нихера не нужно знать - работает и хер с ним. Хотя по сути, лара даже продвинутее симфы, именно простота ее освоения и позволяет макакам считать себя прогерами.

Таким образом да, симфони прокачает, так как чтобы ее освоить надо посообразительнее макаки быть, а зенд тогда еще круче
прокачает.
Но опять таки, если по чесноку, для того кто шарит в нативном пхп это две абсолютно однохуйственные по сути вещи.
340 1923918
>>1923915
Я тупо покупал на том же кодекайоне скрипты движков приложений, или скачивал с торентов, если был варез.
341 1923920
>>1923918

>или скачивал с торентов


Что в поиск вбивать?
342 1923932
>>1923920
Чел, я хз что тебе больше нравится.
Ну как пример попроще https://codecanyon.net/item/premium-media-script/9324018 - если найдешь варез то поставь, а нет, так и купи для интереса - я купил, не нищий, хуле - посмотри что и как работает, поковыряй, добавь свои свистелки и перделки, попробуй поподключать другие бд, поставить доп плюшки на сервер, и т.д. и т.п. Таких штук пять скриптов, написанных на хорошем пхп с соблюдением solid-стандарта расковыряешь - научишься в миллион раз большему, чем по всяким книжкам и т.п.
343 1923933
>>1923932
А вы не дадите нам то что купили?...
344 1923943
>>1923932
>>1923920
И да, продукты от KBRmedia как правило написаны на хорошем пхп, но не без глюков и всегда есть что улучшать внутри. По мне, так самое то учиться нативному пхп именно на таких скриптах.
И только когда разберешься и сам сможешь на коленке воспроизвести тот же уровень или лучше, имхо, следует лезть в освление фреймворков типа зенда, симфы, лары.
И кстати, в качестве вспоможения неплохо найти попутно кабанчика, который хочет типа "собственный типа ютуб, или в этом духе что нибудь" и готов за это забашлять. Когда все оплачено наперед, учиться оно приятнее и веселее. :)
345 1923944
>>1923933
Сорри, поищите плиз, если кто спер этот скрипт до меня. На варезах должен быть. Мне как бы никомильфо красть у благодетелей, прошу меня понять. Тем более я уверен, что до меня уже украли.
346 1923947
>>1923944
Ладно хорошо не будем обижаться что ты не поделился...
347 1923948
>>1923933
Хотя - вот, кто то уже спер, гад. https://www.nulled-scripts.info/premium-media-script-v1-5-1-1/
8ffcce58e3a83e1f8a576d427066239c.jpg17 Кб, 480x360
348 1923974
>>1923932
>>1923944
Лол, помню, попалась на фрилансе задачка поскрапить какой-то список хуиток с привзякой к карте.
Ну а там лимит на количество результатов и максимальный радиус в пару километров, короче, надо ебаться с брутфорсом параметров для поиска.
Ну я погуглил этот скрипт, а он там продается и гуляет уже спижженый. Внутри совершенно через жопу всё, на вид середина нулевых, а всё торгуют и причем покупают.
Ну я за пару минут нашел инъекцию и получил всё сразу, лол.
349 1924082
>>1923943

>>Когда все оплачено наперед, учиться оно приятнее и веселее. :)


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

Кстати вопрос - мне нужно в елоквенте составить запрос такого плана:
у модели есть свойство "платно" и свойство "бесплатно".
Модель должна доставаться из БД когда: "платно" или "бесплатно" больше 0, но если и "платно" и "бесплатно" равны нолю - то доставаться данные не должны
350 1924084
>>1923932
Как живется в нулевых с кастомными cms?
Это ваш хваленый нативный пхп?
351 1924085
>>1923881
Спасибо.
Проф развитие, наличие работы и рост по зп.
Значит перекатываться есть смысл.
352 1924087
куки или сессии?
353 1924135
Мне 33, и я не то что бы вкатывальщик, вышка профильная, в ВУЗе прогал, но потом долго (8 лет) сисадмином работал деградировал. Заебало. Фактически начинал с ноля. И вот уже три года работая прогером в гос-шараге ( за три копейки ) я типа вкатываюсь в коммерческую разработку. Хочу сказать что наступил на все возможные грабли похоже, лол.
Ну и да, процентов 80% доступного времени за эти год я пинал хуй. Из чего следует что важна личность человека. Что бы вкотиться я думаю есть два варианта. Первый - программить лет с 15, и быть психологически и поведенчески кривым и косым, но опыт задротства решает. Второй - полностью нахуй переработать свои привычки и поведение, развить волю, дисциплину, решительность. Я за 4 года нихуя не смог, все делаю долго и на отъебись. Кривое поделие на слим с кривой архитектурой и ORM елоквент в качестве БД слоя, и кривые самопальные классы JS и компонетны реакт собранные вэбпаком на фронте - мой потолок, все кривое косое и работает через пизду. Весь явнарь хуй пинал, при этом имею заказ который имеет не закрытые таски.
Вот такой вот средний вкатывальщик за 30. Не будте такими как я.
Думаю что большинство вкатывальщикв такие же далбоебы как я.

замечу что и в жизни у меня все так же на отъебись
354 1924138
>>1924135
п.с.
добавлю что орд вкатывальщиков старше лет 27 врядли стоит ждать, психика и привычки формируются плотно, и их изменить пиздец как сложно. Если чел -неорганизованный еблан - то с 90% вероятностью таким и будет до конца жизни. Я врал себе что я типа на дисциплине, иногда так и было. Но пропинав хуй весь январь я понял что хуй, я все тот же деградирующий сисадмин. Печаль ебаная.
355 1924148
>>1924135

>Кривое поделие на слим с кривой архитектурой и ORM елоквент в качестве БД слоя, и кривые самопальные классы JS и компонетны реакт собранные вэбпаком на фронте - мой потолок, все кривое косое и работает через пизду


Описал средний говнопроект на галере.
356 1924151
>>1924082

>постоянно докидывает "а давайте сюда чет добавим"


В таких случаях принято оставлять эти добавки после основных работ. Т.е. есть обговорённый и оцененный функционал - он и делается в текущий момент, а всё, что сверху - уже потом. Иначе рили тяжело будет всё сразу делать и оценивать.
Кабанчику-то похуй - у него фантазия пошла фантанировать, а ты закапываешься.
357 1924155
>>1924148
На фрилансах так же делают обычно - лишь бы сдать, а там пусть сами ебутся.
358 1924157
>>1924148
Это тонкий намек на то что мне пора пиздовать в "коммерческую разработку"?
359 1924160
>>1924157
Ты собесы хоть проходил? Или так и сидишь учишь?
360 1924166
>>1924157
Это тонкий намек на то, что ты как-то слишком идеализируешь код работающих разрабов. Редко где можно встретить качественный код.
В основном такие же васяны пишут подобный говнопроект с нуля. Потом нанимают еще пачку васянов допиливать этот проект. Исключительной удачей будет, если среди нанятых васянов окажется прошаренный чел, который построит остальных васянов, не даст им больше срать в код и потихоньку вытащит проект из говен.

Думаю, ты вполне можешь на удаленке получать соточку
361 1924178
>>1924157
Иди проходи собесы, устраивайся и получай уже норм зп.
362 1924193
>>1924166

>слишком идеализируешь код работающих разрабов


Себя вспомнил - как тоже всё хотел чтобы было чистенько и красиво, как по нотам, короче. Потом пришлось поработать на реальных работающих проектах и у меня эту детскую дурь из головы быстро вынесло.
Если писать красиво и идеально - результатов внуки только дождутся.
363 1924269
>>1924084
А я знал, что нечто такое обязательно всплывет :) Обязательно какой нибудь особо современный начнет интересоваться.
Есть такие, которые считают что ларавел это правильный пхп,
Ну а конструкт2 это js. А Unity это C++. Потому что "есть современные стандарты и библиотеки, и не нужны велосипеды, ибо будет несовместимость, немасштабируемость, уязвимости, а главное скорость разработки современного продукта" и т.п.
Как китайцы, которые собирают авто на конвеере из присланных им деталей, которые спроектированы немцами. Собрать, а не создать. По инструкции, а не с пониманием.
Могу только пожелать вам успехов, коллеги. С китайцами так и надо. Пока делаете пустую демку типа "хелло ворд" в самой современном фреймворке и продвинутой идешке с весом в пол гига подключенных через композер кодов, папок и библиотек,не понимая для чего они нужны (не нужны) и получаете по итогам вылетевшую кодировку, у меня всегда будет работа.
А если серьезно, то я просто указал, на каких примерах вкатываться в пхп, чтобы знать минимальные основы построения приложений, необходимое как раз для того, чтобы вам было плевать, какие фреймворки или кмс использовать, так как сами они построены на тех же принципах.
364 1924273
Что скажете за laracasts? В каком порядке смотреть? А то официальная документация, как я вижу, на порядок скуднее чем у Symfony.
365 1924290
>>1924082

>Кстати вопрос - мне...


Вот почему я и говорил, что лара зло.
По существу, логика условия должна быть вне oem, просто
в методе класса. Если условие 1 оем выполняется или не выполняется если условие 2. Внутри самой оем никаких иных логик, кроме реализации запросов бд быть в принципе не должно. Поэтому сам вопрос как минимум непонятен, но увы, типичен. Если бы у вас была практика создания кастомных бд классов на нативном пхп прошлого века, то таких вопросов не возникало бы в принципе, поскольку логика в елоквенте нарушает принципы единой ответственности. Ну это так, к слову.
366 1924317
>>1924082

>у модели есть свойство "платно" и свойство "бесплатно"


>должна доставаться из БД когда: "платно" или "бесплатно" больше 0


А если "бесплатно" больше 0, то продавец ещё и доплачивает что-ли за покупку дайте мне этого продавца сюда - я миллионером стану? У тебя тут с логикой какие-то траблы кажется.
Бесплатно это когда "price" == 0. Тогда и достаётся из БД элементарно всё.
367 1924332
>>1924269

>фреймворки или кмс использовать, так как сами они построены на тех же принципах


Фреймворк и cms это несколько разные уровни. Х.з. как ты всё в одну кучу валишь. Сдаётся мне, что на фреймах ты не работал ни разу и не догоняешь, что они для разных типов разработки используются.

>>1924290

>практика создания кастомных бд классов на нативном пхп прошлого века


У Лары очень даже годная библиотека для работы с БД, как и подходы.

>логика в елоквенте нарушает принципы единой ответственности


В твоих CMSках это всё ещё хуже реализовано чаще всего. Гораздо, гораздо хуже.
368 1924336
>>1924273
Несколько лет назад начинал с основ пхп (пхп, пхп 7, ооп), потом серию Laravel from scratch для самой последней версии лары.
369 1924344
у кого нибудь в треде есть возражения ? https://infinite.education/expertise/PHP_Developer
370 1924352
>>1924344
Твоя или взял у кого?
371 1924367
>>1924352
просто вбил в гугле и вышло это. это важно ?
372 1924375
>>1924317

>тно" больше 0, то продавец ещё и доплачивает что-ли за покупку дайте мне этого продавца сюда - я миллионером стану? У тебя тут с логикой какие-то траблы кажется.


Кстати, хоть и хохма это, но такие продавцы есть :)))
Так что имхо не важно тут - может это булевый нуль, я хз как там все в ларавеле, но именно в том и засада двойственности - с одной стороны готовые фреймворки как бы содержат в себе надежные и проверенные решения высокого уровня, так что даже макака, почитав мануал может более менее легко разобраться что и как делать. даже без особого знания корневого нативного языка и соображалки по части алгоритмов. По итогам получается как будто бы быстро и добротно сделанный проект, и юное хвостатое дарование сияет от собственной невьебенности. Дескать, во какой проект слепило. Но на деле - это чужой проект, и слепили его те же, кто слепил ларавел, а ты только сделал тюнинг по инструкции из запчастей, не особо разбираясь в сути.
Но это как правило только начало. Макак много, они все разные, и все хотят как можно больше всяких функционалов, свистелок и перделок, подключений к херовой туче саасок и т.п.. По итогам система развивается, и народ ее активно хвалит, но мануалы становятся все сложнее и сложнее, подключаемых висюлек и пиздюлек типа плагинов становится настолько много, что хер разберешь, плюс к каждому из них свой мануал, который пока изучишь, фреймворк снова устареет. А потом выдут новые релизы постгресса или, пхп, всплывет куча деприкатов, и - правильно, опять курить раздутые мануалы, юзать сырые бета-версии обновлений, все работает по итогу черти как и хер знает как, и умельцы дабы исправить положение втыкают костыли и патчи, написанные на скорую руку и через жопу, и так далее. По итогам пятистраничный сайт администрирует сорок прогеров, которые 90 процентов времени читают мануалы к аддонам к патчам, которые к плагинам, которые для такой-то версии, которая скоро депрекатед потому что выйдет следующая более современная.
О каком нативном пхп может идти тут речь, если по мануалу можно собрать сразу мегапортал с блекджеком и шлюхами, тупо нажав с десяток кнопок типа "сделать песдато" и "подключить звезду смерти с музыкой и сканером сетчатки к иконке sucks".
Как итог, господа рубисты, пхпшники, сишники и джавошники с печалью, но не без злорадства наблюдают, в какой пиздец превращается индустрия, потирая ручки в предвкушении удовольствия от военно спортивных разьебов всей этой хуйни, так как прекрасно видят аналогию с инженерной революцией прошлого века.
Когда начав с азов и основ, инженеры от проектирования паровозов смогли дойти до создания космических кораблей, но зумеры тех лет решили, что это не эффективно, и гораздо быстрее использовать "наработки из коробки" - по итогам, когда то США построило во время войны за два года боле 5000 военных кораблей самого современного на тот момент уровня, а теперь они тратят миллиарды, но уже больше четырех лет не могут тупо даже починить два корабля, которые были построены еще в 70х, просто потому что "умники" рвали жопу на продвинутых технологиях конструирования из коробки.
Которые как бы быстрее, мощнее и проще, и которые даже макаки освоят. Вот и дорвались - просрали фундаментальные знания основ, потеряли специалистов, которые специально были заточены на то, чтобы из говна и песка делать инженерные шедевры, которые просто перестали воспроизводиться, а теперь сидят и тыкву чешут, типа - какого хера все падает и не работает?
В мануалах же написано все верно должно быть, ан нет - не работает нихера. Потому что понимания того, как и почему работает - не было и нет. Есть тупо заученные мануалы.
И что самое интересное - эти мануалы в миллион раз уже сложнее и запутаннее, чем основные принципы, лежащие в их основе, которые просто следовало бы освоить. Но - нет. Это медленно, неэффективно, там нет кнопки "сделать песдато", там из коробки нихрена нет, и за это скорее всего платить не будут.
Шикарно в общем.
Поэтому и делают сегодня программисты в десять раз больше работы, скачивая патчи и обновления, юзая косячные оемки типа елоквента и куря мануалы, как тут >>1924273, вместо того, чтобы один раз почитать мануал по бд и создать метод в три строки, который просто выполнит произвольный query через PDO. Но - для этого надо знать как работают бд! А в елоквенте пофигу, поэтому все быстрее и проще - возразят мне. И хуй что возразишь.
Но по итогам - "ускорение" программирование получается "в отрицательную сторону", так как необходимость курить все новые и новые мануалы и делать новые и новые патчи, да потом еще совещаться на консилиумах несколько дней на тему "допустимо ли использовать обработку массивов средствами пхп, или необходимо преобразовать все обработчики в методы, а массивы в объекты?". Как итог, народ вешает потом эластик на постгресс, причем блять через плагин вордпресса, и когда мы начинаем истерично ржать, с удивлением спрашивает "не, ну а чо такого?"..
372 1924375
>>1924317

>тно" больше 0, то продавец ещё и доплачивает что-ли за покупку дайте мне этого продавца сюда - я миллионером стану? У тебя тут с логикой какие-то траблы кажется.


Кстати, хоть и хохма это, но такие продавцы есть :)))
Так что имхо не важно тут - может это булевый нуль, я хз как там все в ларавеле, но именно в том и засада двойственности - с одной стороны готовые фреймворки как бы содержат в себе надежные и проверенные решения высокого уровня, так что даже макака, почитав мануал может более менее легко разобраться что и как делать. даже без особого знания корневого нативного языка и соображалки по части алгоритмов. По итогам получается как будто бы быстро и добротно сделанный проект, и юное хвостатое дарование сияет от собственной невьебенности. Дескать, во какой проект слепило. Но на деле - это чужой проект, и слепили его те же, кто слепил ларавел, а ты только сделал тюнинг по инструкции из запчастей, не особо разбираясь в сути.
Но это как правило только начало. Макак много, они все разные, и все хотят как можно больше всяких функционалов, свистелок и перделок, подключений к херовой туче саасок и т.п.. По итогам система развивается, и народ ее активно хвалит, но мануалы становятся все сложнее и сложнее, подключаемых висюлек и пиздюлек типа плагинов становится настолько много, что хер разберешь, плюс к каждому из них свой мануал, который пока изучишь, фреймворк снова устареет. А потом выдут новые релизы постгресса или, пхп, всплывет куча деприкатов, и - правильно, опять курить раздутые мануалы, юзать сырые бета-версии обновлений, все работает по итогу черти как и хер знает как, и умельцы дабы исправить положение втыкают костыли и патчи, написанные на скорую руку и через жопу, и так далее. По итогам пятистраничный сайт администрирует сорок прогеров, которые 90 процентов времени читают мануалы к аддонам к патчам, которые к плагинам, которые для такой-то версии, которая скоро депрекатед потому что выйдет следующая более современная.
О каком нативном пхп может идти тут речь, если по мануалу можно собрать сразу мегапортал с блекджеком и шлюхами, тупо нажав с десяток кнопок типа "сделать песдато" и "подключить звезду смерти с музыкой и сканером сетчатки к иконке sucks".
Как итог, господа рубисты, пхпшники, сишники и джавошники с печалью, но не без злорадства наблюдают, в какой пиздец превращается индустрия, потирая ручки в предвкушении удовольствия от военно спортивных разьебов всей этой хуйни, так как прекрасно видят аналогию с инженерной революцией прошлого века.
Когда начав с азов и основ, инженеры от проектирования паровозов смогли дойти до создания космических кораблей, но зумеры тех лет решили, что это не эффективно, и гораздо быстрее использовать "наработки из коробки" - по итогам, когда то США построило во время войны за два года боле 5000 военных кораблей самого современного на тот момент уровня, а теперь они тратят миллиарды, но уже больше четырех лет не могут тупо даже починить два корабля, которые были построены еще в 70х, просто потому что "умники" рвали жопу на продвинутых технологиях конструирования из коробки.
Которые как бы быстрее, мощнее и проще, и которые даже макаки освоят. Вот и дорвались - просрали фундаментальные знания основ, потеряли специалистов, которые специально были заточены на то, чтобы из говна и песка делать инженерные шедевры, которые просто перестали воспроизводиться, а теперь сидят и тыкву чешут, типа - какого хера все падает и не работает?
В мануалах же написано все верно должно быть, ан нет - не работает нихера. Потому что понимания того, как и почему работает - не было и нет. Есть тупо заученные мануалы.
И что самое интересное - эти мануалы в миллион раз уже сложнее и запутаннее, чем основные принципы, лежащие в их основе, которые просто следовало бы освоить. Но - нет. Это медленно, неэффективно, там нет кнопки "сделать песдато", там из коробки нихрена нет, и за это скорее всего платить не будут.
Шикарно в общем.
Поэтому и делают сегодня программисты в десять раз больше работы, скачивая патчи и обновления, юзая косячные оемки типа елоквента и куря мануалы, как тут >>1924273, вместо того, чтобы один раз почитать мануал по бд и создать метод в три строки, который просто выполнит произвольный query через PDO. Но - для этого надо знать как работают бд! А в елоквенте пофигу, поэтому все быстрее и проще - возразят мне. И хуй что возразишь.
Но по итогам - "ускорение" программирование получается "в отрицательную сторону", так как необходимость курить все новые и новые мануалы и делать новые и новые патчи, да потом еще совещаться на консилиумах несколько дней на тему "допустимо ли использовать обработку массивов средствами пхп, или необходимо преобразовать все обработчики в методы, а массивы в объекты?". Как итог, народ вешает потом эластик на постгресс, причем блять через плагин вордпресса, и когда мы начинаем истерично ржать, с удивлением спрашивает "не, ну а чо такого?"..
373 1924377
>>1924332
Дело не в том, как там что реализовано, а в том, способен ли ты сам реализовать что нибудь хотя бы на этом уровне, или без фреймворка даже формы обратной связи собрать не в состоянии.
Потому что миллион таких уже случаев, когда чел типа собирает мега-проект, но вот суко передвинуть кнопку в футере на два пиксела вправо - не в состоянии от слова совсем. Не говоря уже о каких либо нестандартных задачах. По мануалам - не учатся, старик.
374 1924419
>>1924377
могу реализовать некоторые вещи только на пыхе, без фрейма. но есть вещи которые могу реализовать и там и там. это ок?

>но вот суко передвинуть кнопку в футере на два пиксела вправо


а знаешь почему так ? потому что там блять в проекте насрато так что как не срали даже в индийские помойки да-да, именно сральники, а не проекты как ты мог подумать. и вот ты блять иди ищи по эти шаблонам и лазь по 30 папкам чтобы найти тот css файл который у тя подключается. помню в декабре была ситуация где нахуй были следующие файлы в папке моей темы которые подключает битрикс: style.css, styles.css, _style.css, _styles.css. и угадай где из них была разметка для навбара? ВООБЩЕ НАХУЙ В ДРУГОМ СОВЕРШЕННО ШАБЛОНЕ ОТ ДРУГОГО БЛЯТЬ САЙТА. вроде бы таска плевая, на хуй там, из за такого говна встречаешь на два часа для того чтобы просто найти
375 1924424
>>1924367
Порвало нафиг. Своего рода жизненный путь какого нибудь миддла, который постоянно был вынужден менять работу и так толком и не понял, чем же ему заняться, запомнил только заголовки. Печальный и трудный путь. Судя по всему написано по примеру мануалов - бестолково, непонятно, неюзабельно, но внушает ужас и уважение окружающим. Такие слова умные прям пипец. Вордпресс, хететепе-хедер. Расшифрую, примерно, чтобы поняли глубину маразма.
Пишем - хирург - роудмап.
Потом рисуем квадратики и от балды пишем внутри них термины.
Типа - регистратура - карточка - бахилы - санитария - мыло
перевязочные материалы - клизма - кровотечение - термометр - аутоимунное - наркоз - солутан - примочка - пинцет - тахикардия - ухо-горло-нос - нога-жопа-кариес - анамнез - зеленка - пальпация вульвы - гидроцефал - мошонка - минздрав - анальгин - сыпь - опорожнение судна - десна - кварцевание - залысины - эпикантус копенгагенская декларация - воспаление блуждающего нерва - пигментация ногтей - лазерная терапия - профилактика копрофагии методом черветерапии - монокль.
Ну, примерно так это бы выглядело. Наглость и бесстыдство прогеров, особенно тех, которые в двадцать втором веке душой и телом, не имеет никаких пределов. А хуле делать. Такова селяви.
376 1924427
>>1924419
Именно. Вот поэтому и есть стандарты - где стили должны лежать, где скрипты, как должны быть написаны и оформлены. За это собственно и ебут миддлов, особенно симпатичных. Поэтому я как правило просто смотрю на такой проект, и если там насрано - сношу к ебанной матери и делаю с нуля ракетой. Иначе потом не разгребешься.
377 1924429
>>1924375
Чем чтение мануалов для фреймворка отличается от чтения оного для CMS? Актуальных фреймворков на тот же ПХП в разы меньше чем велосипедных CMS и реализованы они плюс-минус одинаково. К тому же не бонусом идёт понимание правильной архитектуры приложения, что в ЦМС зачастую вообще не так.
Да и код на фреймах хорошо документирован через php-doc и комментарии. Не вижу проблемы.

Имел дело и с теми и с другими и моё мнение таково, что фреймворками пользуются именно программисты, а ЦМСками чаще всего вебмастеры\верстальщики.

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

Но начинать и правда обязательно с чистого ПХП, иначе макака и дурачок с гранатой.
378 1924432
>>1924419

>могу реализовать некоторые вещи только на пыхе, без фрейма. но есть вещи которые могу реализовать и там и там. это ок?


Естественно. Я о тех, которым "пыха не нужна вааще", так как "в ларавеле все есть". Типа игроделов, которые работают в Юнити без малейшей попытки вката в си++ - то есть обреченные на убой.
379 1924439
>>1924429

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


Вот, именно об этом и речь. :)
380 1924447
>>1924432

>Естественно. Я о тех, которым "пыха не нужна вааще", так как "в ларавеле все есть".


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

>Типа игроделов, которые работают в Юнити без малейшей попытки вката в си++


так там же с# нужен. чому кресты то ?
381 1924451
>>1924447
Так на 100к большего и не надо.
382 1924456
>>1924447

>там же с# нужен. чому кресты то ?


угу. скрипты там на c#, а сам юнити на крестах, прикинь :)
но да, тут я признаю что перетолстил сильно, т.к.
такой уровень закапывания уже для ярых олдов.

И кстати да - тоже по той же схеме роудмапа пхп -
не понял сперва, что каждый их квадратик это типа
отдельный обучающий курс или его компоненты.
Походу да, комерсы инфоцыгане портят все.
383 1924482
>>1924456
аж хрюкнул с коммерсов
>>1924451
да чет по собесам я этого нахуй не вижу. при том хочу сумму в джва раза больше
384 1924487
>>1924482
в два раза меньше
быстрофикс
385 1924491
Выдали проект на 500к строк 470к, если быть точным.
Начинался он на yii1, частично подключен ларавель.
Хз как к нему подступиться.
386 1924498
>>1924491
Сколько платят?
387 1924500
388 1924505
>>1924487
Что такого спрашивают на собесах за 50к? Там же главное, чтобы собеседуемый в штаны не насрал и как зовут не забыл. Не понимаю, напиши плиз, что спрашивают. Мне аж иетересно стало.

мимо стронг джун зп 120к
389 1924510
>>1924491
По мере поступления задач
390 1924511
>>1924510
Скажут оценить - я же обосрусь
391 1924521
>>1924511
Тебе сразу сложные таски кидать начнут? Первое время приглядывать же должны, чтобы не обосрался.
392 1924546
>>1924505
ну вот я ищу галеру на ларке/симфонии которые работают. про фреймворки вообще ниче не спрашивают. в основном по теории, ооп, про язык, про бд иногда. все. в принципе ниче сложного и все посильно. адекватно и правильно отвечаешь и в итоге мы вам перезвоним. хуй знает че им не нравится лол. бывают оч редко специфичные вопросы чтобы загасить это вот прямо сразу видно т.к. никто никогда такое не спрашивает а тут решили спросить но это скорее исключение чем правило. если только из за этого. одни напрямую сказали что вот у вас с теорией и практикой все ок, но мы вам откажем потому что у вас опыт широкий, а не глубокий. как то так. другие просто молча слились. вот ждем сегодня завтра ответа от еще одних
393 1924547
>>1924505
а, ну и мб это у вас в ваших дсах ниче не спрашивают. в замкадьях тя за каждую копейку выдрачивают видимо. проверю завтра эту теорию, собес будет с какой то галерой с дс2.
>>1924546 - кун
394 1924550
>>1924546

>у вас опыт широкий, а не глубокий


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

А вообще сливаться после удачного собеса - обычное дело у херочек, привыкай. Хоть сайт пиши с отзывами по таким конторам - чтоб люди время не теряли.
395 1924580
>>1924547
Может стоит попробовать на удаленку? Возьми и пройди хотя бы один собес на 100к, не обязательно дс.
396 1924589
>>1924580
так я и ищу удаленку. в нашем задрищенске 700к 2 конторы работают с таким стеком. все остальные на всяких битриксах, вп, и тп скаме

>У тебя есть проекты на фремворках с композером?


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

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


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

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


Годная идея. мб намучу такое когда буду Vue изучать
397 1924609
>>1924589

>а нахуя так собсно делать? че за бред?


Мониторят рыночек - если много прокачанных джунов, то можно зряплаты понизить например. А если хороший мидл-дурак пойдёт на зарплату джуна, то его даже можно взять. Им, один хуй, делать нечего больше - так хоть какая-то деятельность. Да и начальники работу требуют, а не сидения вконтактике весь день.
Такая вот симуляция деятельности за чужой счёт. На наше с тобой время им глубоко насрать.
398 1924657
допустим есть страничка с формой регистрации и код для регистрации.И есть стили для этой страницы
как бы их всех назвали?
399 1924658
>>1924657
Карасик.
400 1924678
>>1924491
Со смазкой и лаской, аккуратно сзади) Я бы начал потихоньку в сторону Лары переписывать, чтобы в один прекрасный день от Легаси ничего не осталось, этакая каша из топора
401 1924685
>>1924511

>Скажут оценить - я же обосрусь


>500к строк


Я б с полгода времени попросил - я ж не волшебник.
402 1924708
>>1924685
Мы вам перезвоним
403 1924748
>>1924708
Если у тебя на работе это единственный ответ в таком случае, то и правда - нечего там делать. Ну или оценивай перенос многолетних проектов за неделю, а потом в мыле весь обсирайся со сроками и нагрузкой, и точно так же вылетай с работы.
404 1924755
>>1924748
Мы вам за что 120 тысяч платим? А если серьёзно, то про перенос там ни единого слова не было. Анон так и будет ковырять легаси код. Не думаю, что его взяли на работу, чтобы с yii на лару переносить.
1611878219365.png339 Кб, 1920x1080
405 1924863
Решил сделать сайт с рецептами блюд. Набросал тут пикрил схему для базы данных. Красным выделил индексы. Так как до этого мне не приходилось делать так много таблиц с разными отношениями, вангую что мог где-то проебаться. Не прокомментируете, норм или нет? Вроде бы все должно быть понятно, но на всякий случай уточню:
- Пользователи создают рецепты.
- Пользователи могут добавлять рецепты в избранное
- Пользователи могут присваивать чужим рецептам оценку от 1 до 5. Средняя оценка будет выводиться на странице рецепта
- У рецептов, помимо указанных колонок, есть шаги приготовления ( таблица steps ). Их количество неограниченно.
406 1924864
>>1924863
Бля, забыл в рецепт добавить category_id. Пора спать идти.
407 1924866
А, ну и похоже в favorites и recipes_ingredients индексы работать не будут. Там же уникальных полей нету.
408 1924874
>>1924866
база какая, мускуль или постгресс?
409 1924875
>>1924866
хотя по любому, таблицы категории и рейтинг лишние, так как это свойства рецептов. они только мешать будут, разве что только в качестве справочников, если постгрес
410 1924927
>>1924609

>На наше с тобой время им глубоко насрать.


Это точно. Были люди которые 4 раза собес блять переносили. После этого нахуй их послал. Хотя околотоп контора нашего задрищенска была.
411 1924928
>>1924927

>Были люди которые 4 раза собес блять переносили.


ЗАЧЕМ ОНИ ЭТО ДЕЛАЮТ?
412 1924947
>>1924928
На галеру надо идти, где будет собеседовать главный разраб, а не с хрюшами в офисах болтать.
У хрюш работа состоит:
- База программистов, чем больше, тем лучше. Потому они её собирают.
- Палочная система. Чем больше позовут на собесы - тем больше зп.
- Спам. Рассылают всем приглашения на собес, чем больше спама, тем выше зп.

95% офисных вакансий в айти - липовые. А на галере если срочно нужен разраб - сегодня же уже ищут и берут первого адекватного.
413 1924955
>>1924947

>95% офисных вакансий в айти - липовые. А на галере если срочно нужен разраб - сегодня же уже ищут и берут первого адекватного.


это откуда такая инфа? справедливости ради среди них есть и адекваты. помню летом звали на сеньора в какую то литовскую или латвийскую компанию за 3к евро. я честно сказал что не подойду туда в виду своего низкого опыта и знаний но если ей надо набить базу и количество то могу уделить время и прийти. она в итоге извинилась, сказала что все ок и не надо и слилась.
414 1924970
>>1924955
Это единичный случай.

Мне постоянно пишут с предложением пройти собес на симфони, хотя в резюме указана лара. Когда говорю им об этом, то начинают уговаривать. Некоторых даже в чс кидал, особо не пробиваемых.
415 1924971
>>1924678
Как чуть позднее выяснил. Часть функционала они перенесли в отдельные вендорные модули примерно 200к строк.
Видимо хотят до конца легаси распилить. На всякий случай и лида спросил что они хотят с этим проектом сделать в конце концов.
416 1924973
>>1924755

>взяли на работу, чтобы с yii на лару переносить


На собесе речь была про это.
А как оно обернется хз. В целом конечно интересно с такой легаси ебой поработать. Если освоюсь - другие легаси проекты покажутся изичными.
417 1924978
>>1924970
Что характерно потом эти же херки спрашивают по анкете, узнают, что у тебя на симфони всего 0.5 года опыта и обещают перезвонить.
418 1925065
>>1924970
абсолютно так же было. только на битрикс зазывали.
>>1924978
дристанул.

ну все анчоусы, поздравьте, дали оффер на 70к на лару. не дс. со след недели там грести начинаю
419 1925073
>>1925065
Грац. С нуля на 70к вкатился?
420 1925086
>>1925073
да какой с нуля? год греб на всяких говноцмс это магенто2 кун если что со всякого разного рода говнотасками. летом заебало и понял что надо качать фреймворк. начал ларку освоивать. вот делал свои проектики, + тестовые. пытался срулить в сентябре - не вышло, зато набрался опыта. осенью еще теории поднатаскал, к дкабрю свои проекты закончил и отшлифовал. в середине ноября начал искать работу. как то так
421 1925090
>>1925086
блять а, в середине января, а не ноября.
фикс
422 1925098
>>1925065
Грац
423 1925103
>>1924874
Постгрес. А какая разница принципиальная? Раньше его не юзал.
>>1924875
Почему категории лишние? Как мне иначе дерево из них составить?
Насчет рейтинга, сначала я думал хранить в рецепте средний рейтинг и количество проголосовавших. Но ведь тогда один пользователь сможет хоть сотню раз проголосовать за тот же рецепт, да и оценки своей увидеть не сможет.
424 1925111
>>1924875
И еще. Даже если бы категории были бы не древовидными, они ведь повторяются. Предлагаешь енамы юзать или вообще варчары для обозначения категорий? Это же всрато, разве нет?
425 1925118
>>1925086
Все равно неплохо, через пол годика можешь следующую работку искать, если зп не апнут. Эх была бы конфочка с двачерами пхпшниками, в которой бы обсуждали зпшки, собесы и галлеры, то было бы проще. Знаю одну конфу с жсниками, где помогают и не токсят,но на жс переписываться желания пока нету.
426 1925125
>>1925118
я тоже про это думал. мне вот интересно как там в этих ваших дсах? там же в каждой конторе наверное как минимум по одному двачеру сидит. и многие из них вышли из этого треда
427 1925129
>>1925118
на жс перекатываться желания пока нету
428 1925135
>>1925118

>Эх была бы конфочка с двачерами пхпшниками


Тоже хочется.
Когда-то давно создавал такую для вкатунов. По началу было поровну на фронт и бек. Сейчас там доминирует фронт реакт. Ливнул оттуда в итоге.
429 1925157
>>1925135
Почему бы не попробовать сделать, если есть уже опыт?

>доминирует фронт реакт


Ну, тут понятно. В реакт проще вкатиться и все скатывается в таких чатиках к хейту пыхи.
430 1925162
>>1925157
Тут в основном вкатуны сидят. Что вы собрались с ними обсуждать? Так же как итт будут срать тупыми вопросами, вместо того, чтобы загуглить.
431 1925171
>>1925157

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


Морально устал конфы держать. Сейчас еще с работой траблы.
Да и не знаю каналов для привлечения людей. Из треда придет максимум 1.5 тела и всё на этом.
432 1925172
>>1925162
Предыдущая конфа так же начиналась как сборище вкатунов. Теперь там считай мидлы сидят
433 1925185
>>1925171
а ты кого собрался туда звать?) пост на пикабу делать или под постами абу в твиттере срать? кор аудитория отсюда должна быть же как никак
434 1925205
>>1925118

>Эх была бы конфочка с двачерами пхпшниками


Бля, вы за 121 тред не смогли запилить конфу в телеге? Как вы тут вкатываетесь вообще? Пиздос, я думал уже давно есть.
435 1925245
>>1925205
Есть она - anonaprphp
436 1925246
>>1925245
А чего в шапку конфу не добавили?
437 1925247
>>1925205
Есть даже в дискорде конфа, просто всем по хуй
438 1925249
>>1925246
Потому что это не ОП-конфа
439 1925250
>>1925246
Тут шапку миллион лет не обновляли.
440 1925272
>>1917984
Таджичу за 100к на удаленочке на пхп, мне норм, учитывая, что работы на пару часов в день и такого соотношения работы к оплате ты хуй найдешь в моей днищесранске. Плюс если припичет, как выше писали, вполне можно расширить своей стек (до размеров ануса твоей мамки) и перекатиться на еще более сладкие условия.
441 1925279
>>1925245
зашел туда и глянул участников - хрюкнул от того, что увидел там человекас которым в реале коммуницировал лол
442 1925281
А вот если я фуллстек-спец аппер-мидл левела, который спокойно может в одно рыло (опционально нанять двух-трех дурачков в помощь) с небольшой помощью гугла клепать интернет-магазины и прочие широко распространенные на рынке пыха-продукты, но при этом продолжаю работать на дядю за мягко говоря не супер-большое бабло, я сильно дебил?
443 1925285
>>1925281
Инглиш спикишь?
444 1925288
>>1925285
Соу-соу, на пальцах объясниться смогу и словарный запас широкий, но грамматика хромает.
445 1925292
Сначала сломал локально репу хаотичным обновлением веток и запуском make команд. А теперь впн лежит и не могу заного скачать чистую репу из гитлаба.
Охуенно день проходит.
446 1925343
>>1925279
Зачем хрюкаешь?
447 1925344
>>1925272
Сколько лет опыта?
448 1925372
>>1925344
Коммерческого - 7 лет, а так сайтики на хтмл первые простейшие в 12 лет делал, а после стал с кодингом разбраться, так это получается уже 17 лет прошло.
449 1925373
>>1925344
>>1925372
Но я очень ленив и неамбициозен, поэтому такой слабый результат. Чуваки, которые меня в универе просили помочь с кодингом и были на голову слабее меня, сейчас например кто в Германии, кто в США уже пашут за серьезные деньги.
450 1925385
>>1925373
Вот именно, что пашут. Если тебе с твоими 100к комфортно, то зачем напрягаться?
451 1925407
Как реализовать такую функ,когда в одной форме можно ввести или мыло или логин?
452 1925437
>>1925407
Допустим в таблице учеток у тебя два поля: логин и имейл.
Сначала ищешь по логину, потом по имейлу. Если ни то, ни другое не нашел - посылаешь юзера.
Самый простой вариант
453 1925442
>>1925437
тут фишка,как прицепить обработчик к одной форме?
что передавать в POST?
454 1925445
>>1925442
user
потом проверяешь select from users where name=user or email=user and pass=pass limit 1;
455 1925519
>>1925272

>что работы на пару часов в день


Это как? На проде вечно ломается, нужно закрывать таски, лить, быть на связи, делать ревью. Чем старше разработчик, тем больше ответственности, особенно на удалёнке.
456 1925520
>>1925281
Надо расти, а не быть фулстеком и кнопки прикручивать. В серьёзных(денежных) проектах нет никаких фулстеков.
457 1925546
>>1925442
Одно общее поле для логина и для мыла
458 1925550
Какой ОСью пользуетесь для кодинга?
Седня чет виндовый всл2 мне знатно в штаны насрал.
Вчера всё работало, проект через мейк с докером развернулся.
А седня баг на баге, так и не поставил заново проект. Думаю убунту накатить второй осью.
1611945102849.png136 Кб, 536x740
459 1925572
Скрин из ларакаста по отношению Many to Many.
Это так и должно быть, что для промежуточной таблицы не делается отдельная миграция? Возможно он где-то об этом говорит, но я просто сейчас без звука, а в документации тема не раскрыта.
460 1925574
>>1925572
Включи звук или ты сюда за субтитриами зашёл?
461 1925575
>>1925550

>баг на баге


Не думаю, что это из за wsl.
462 1925576
>>1925572
Ну сделай отдельной миграцией.
Так то эти две таблицы по смыслу очень тесно связаны
463 1925578
>>1925575

>это из за wsl


Да, всё так. Даже ишью нашел под свой кейс и советы уровня "перезапустите докир и всл"
464 1925619
>>1925519

>На проде вечно ломается


Ну да, раз в неделю где-то приходят оттуда таски ворохом

>нужно закрывать таски


За пару часов закрываю на день-два вперед.

>быть на связи


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

>Чем старше разработчик, тем больше ответственности, особенно на удалёнке.


Так поэтому и 100к, что я не старший и не стремлюсь в менеджмент, с другой стороны головняка минимум, что мне и нравится.
465 1925620
>>1925574
Какие же двачеры дегенераты, господи.
>>1925576

>Ну сделай отдельной миграцией.


Спасибо что разрешил, но я просто поинтересовался, как люди делают на практике.
466 1925656
Есть один стрим на ютубе. Как из скрипта можно сделать скриншот стрима? Я думал через какой-нибудь headless браузер, но может есть какой-то клиент ютуба на php или еще что-то.
467 1925666
>>1925656
Youtube-dl такого не умеет часом?
468 1925673
>>1925666

>Youtube-dl


Да, как-то забыл про него. Вроде как умеет. Спасибо!
469 1925773
>>1925572
Бля, как смешно выглядит Ларавель по сравнению с Симфони.
В симфони в консоли(в мэйкере) прям пишешь название поля и вбиваешь название к какой таблице приджойнить. Занимает 5 секунд и миграции тебе сгерерит.
470 1925779
>>1925550
Только убунтой пользуюсь. Имхо, бэкендер не на линуксе - шо тракторист без трактора.
471 1925780
>>1925779
Лол, тут вообще без комментариев
472 1925891
>>1925779
Да если б wsl мозги не ебал.
Так то до этого 2 года на винде работал и на пхп и на голанге и всё ок было кроме одного случая когда долго ебался с установкой одного расширения в пхп, а проект был не под докером
tutorials24x7-mysql-online-shopping-cart-database-design.png137 Кб, 890x1395
473 1925897
Это норм схема БД для интернет-магазина? А то я гуглю и везде они, сцуко, разные. Казалось бы, задача-то одна. Но нет, нихрена, каждый лепит, кто во что горазд.
1611999143287.png368 Кб, 1920x1080
474 1925898
>>1924863
Хоть всем и похуй, но я решил что для заметок и оценок нужно добавить автоинкремент и сделать из них элоквентовские модели/сущности. Хрен знает, правильно ли это.
475 1925921
>>1925897
Так оно и понятно, почему везде разные схемы - требования и функционал везде разные.
А почему бы с нуля не запилить и добавлять миграциями необходимые таблицы и поля?
476 1925962
>>1925921
Надо же с чего-то начинать. Лучше сразу представлять, как оно всё будет выглядеть. Понятно, что в процессе будет доработка, но всё же. Да и мне на самом деле накласть на доработки - это просто проект для гитхаба, чтобы было куда посылать на вопрос "а покажите ваш пример кода".
477 1925976
>>1925897
В реале таблиц в несколько раз больше под всякие прикладные и системные фичи. Но как каркас и основа такая схема сойдет.
478 1925979
>>1925976
Ну и отлично.
479 1926009
>>1925897
Берёшь а4 лист и рисуешь. Потом реализуешь, докидывать будешь чего не хватает.
1612007375521.png85 Кб, 760x539
480 1926049
>>1925897
Да кто такой этот ваш slug?
481 1926058
>>1926049
Это часть url. Обычно генерируемая. Например, ты создаёшь страницу товара "Сталин-3000" и она доступна по адресу xxx.ru/products/stalin-3000. "stalin-3000" - это и есть слаг.
482 1926263
>>1925550
>>1925578
>>1925891

Поебался еще немного с всл. Так и не завел проект. То одна ошибка выскакивает, то другая. Пробовал разворачивать проект на в смонтированном диске (вместо /mnt/c/ в ~/ директории) - установка прошла чуть дальше, потом меня послали из-за прав. А с судо мейк вообще не работает.

По ходу совсем не остается вариантов кроме накатывания убунты второй осью. Если и там будут неразрешимые проблемы - минус работа... А так хотелось поучаствовать в крупном проекте...
483 1926275
>>1926263
А ты писал, что у тебя проект не разворачивается? Или только на двочах спрашиваешь сидишь?
484 1926311
>>1926275
Вчера пока рабочий день был - писал.
Сегодня нерабочий - не писал.

Самое странное, что в четверг удалось мейком поставить проект. А в пятницу мейк наебнулся.

Там у них есть пара тел на винде, но как я понял большая часть сидит на лине.
485 1926318
>>1926311
Ну попробуй на убунте. В любом случае тебя не уволят за то, что проект не смог развернуть
486 1926364
какой подход популярнее,
$user = new User("Вова", "Пупкин");
echo $user -> show_name();
или
$user = new User();
echo $user -> show_name("Вова", "Пупкин");
?
487 1926374
>>1926364

>echo $user -> show_name("Вова", "Пупкин");


Это че вообще? Что значит какой подход популярнее? Второй вариант не несет в себе смысла. Таким образом имеем не метод показа имени, а обычный принт/эхо на два поля.

Ну и

>echo $user -> show_name();


явно избыточно

Уж лучше делай $user->printName(); и внутри печатай куда надо
Либо $user->getFullName(); который вернет строку
488 1926387
>>1926364
$user = new User();
$user->setName('Вася');
$user->setLastname('Пупкин');

echo $user->getName(); или преобразовать объект в массив и вывести массив.
489 1926394
>>1926387
я щас почитал,с конструктором как бы более компактно и лаконичнее выглядит
490 1926403
>>1926394
Да ты шо? А если у тебя будет 30 полей?
$user = new User('asd', asdad, asdasd, asd asd,,asd aadas, asdas ,,sadas dasd,a dasd as,asd asd ,asd asd as,asd asd a,as das )
Будет анти-паттерн телескоп.

Делай как я. Почитай что такое сущность, в сущности нельзя в конструкторы пихать. Сущность должна быть пустой при создании объекта.
Дальше если ты хочешь параметры вложить - делай это через фабрику, и вот в фабрику можешь уже положить что хочешь.
Либо в конструктор, либо в параметры метода а-ля build(array $params)
491 1926407
>>1926394
В сущность в конструктор инъекции вкладывают или авто-генерацию чего-либо, никаких параметров чтоб не было при new User();
492 1926446
Кто нибудь работал с Зенд фр в реале?
493 1926458
>>1926407
Это ты где такое узнал? Зачем нам создавать пустую сущность?
1612037702526.png284 Кб, 801x410
494 1926615
че это за пиздец куда я попал
495 1926652
>>1926364

Второй пример неудачный, так как у объекта обычно есть свойства, которые хранятся внутри объекта. И show_name() берет имя из свойств объекта. А у тебя во втором примере зачем-то имя передается снаружи. Зачем тебе такой объект вообще, если ты в нем ничего не хранишь?
496 1926664
>>1926263

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

>>1925962

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

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

Только пароли надо солить и хешировать, потому проверка будет чуть сложнее. Сначала извлекаем из БД хеш пароля по условию name = :login OR email = :login, затем проверяем пароль и хеш на соответствие.

>>1925103

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

>>1924866

Не очень понял, индексы работают и на неуникальных полях. Также, в таких таблицах часто делают уникальный индекс по паре колонок: он и вставить дважды одинаковые значения не позволяет, и ускоряет выборку.
498 1926671
>>1924863

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

>>1924657

style.css если совсем фантазии нет. Если есть то register.css.

>>1924375

> вместо того, чтобы один раз почитать мануал по бд и создать метод в три строки, который просто выполнит произвольный query через PDO. Но - для этого надо знать как работают бд! А в елоквенте пофигу, поэтому все быстрее и проще - возразят мне



Если ты начнешь все запросы руками писать, и писать код маппинга на объекты, то уже где-то на десятом запросе тебе придет в голову мысль, а нельзя ли это автоматизировать. Это и есть то, что делает ORM.

В реальности обычно используется и ORM (для рутинных операций), и прямые SQL запросы там, где ORM неэффективна.
499 1926683
>>1923643

Гугли FizzBuzz

>>1923613

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

>>1923514

Можно. Тут важнее чувство вкуса и понимание, что куда надо подвинуть, чтобы было красиво.
500 1926924
можете сказать что-то за этот курс. https://coursehunter.net/course/php-master-ot-teorii-do-sobstvennoy-cms-internet-magazina
Понимаю что курса мало, но как толчок в правильном направлении сойдет?
501 1926938
>>1926924

>как толчок в правильном направлении


Если успеешь добежать.
image.png208 Кб, 1151x428
502 1926943
>>1926924
Если хочешь научиться делать как деды завещали, то вперед.
503 1926958
>>1926943
Многие годы работал дата энтри девачькой, а теперь дохуя профессионал?
504 1926959
>>1926943
Эти допотопные визитки лучшая антиреклама пыхи sooqa
505 1927025
>>1926943
а как модно стильно и молодежно сейчас?
506 1927042
>>1927025
TDD, DDD, Symfony, Event Sourcing, CQRS, Microservices, Hexagonal Architecture
507 1927087
>>1927042
если не в падлу кинь ресурсы которые тебе кажутся толковыми. Но желательно что-то с нуля
508 1927116
>>1927087
Нулевым надо учить пхп и стандартную библиотеку. Еще ООП и SOLID. Книгу Patterns of Enterprise Application Architecture Фаулера почитать и refactoring.guru

На пхп надо много писать крудов без фреймворка а потом с ним, и учиться поднятию докера с nginx, Симфони и прочей ерундой с этим крудом.

Остальное просто бессмысленно читать не имея работы и не зная как проекты нормальные смотрятся и работают.
509 1927248
зачем нужен ::parent, если можно вызвать род метод и так?
510 1927264
>>1926943
Ахахахах. В совершенстве владеет опенкартом, вордпрессом и БУСТРАПОМ. Ору.
511 1927266
>>1927116

>Книгу Patterns of Enterprise Application Architecture Фаулера



Анончик, можно поподробнее, почему именно эту книгу?
512 1927281
>>1927248
а,я тупанул
513 1927297
Сап pr. Пишет безработный студент. 3 года учил пыху, писал для себя в удовольствие, немного на фрилансе подрабатывал. Недавно прошёл курс от вуза по автоматизированному тестированию на питоне, зашло очень хорошо мне, опыт веб разработки пригодился.

Так вот вопрос. надо бы уже искать работу, на какой стул сесть? Php разраб или qa python? Нравится все одинаково, где больше перспективы?
514 1927309
>>1927266
Она по базовым архитектурным концептам и не оч далека от собственно кода, а то остальные книги по архитектуре либо не по базовым, либо вода и тупо слова, либо и то и то
515 1927363
>>1927309
Если выбирать между этой книгой и Совершенным кодом, что лучше прочитать в первую очередь?
516 1927369
>>1927363
Конечно совершенный код, он про ифы и прочую дребедень
517 1927401
А где в этом вашем ларавеле принято логику держать? В сущностях элоквентовских ( эктив рекорд же ) или как?
518 1927458
>>1927297

>Нравится все одинаково, где больше перспективы?


Дам тебе самый базовый совет - учись принимать решения самостоятельно. Работать будешь ты, а не двач.
И самый заезженный совет - напиши все плюсы и минусы на листочке, и посмотри где чего больше.
Какой бы ты стул не выбрал - везде хлебнешь свою долю говна.
519 1927470
>>1927363
Обе.
Сначала Совершенный код, т.к. он описывает более примитивные вещи вроде грамотного названия методов.
Потом Паттерны, т.к. они затрагивают крупные системы.
520 1927471
>>1927401
Создаешь папочку надеюсь, ты умеешь в шторме папки создавать services в папке App и кладешь туда бизнес-логику.
А елоквент модели лучше держать максимально пустыми, т.к. туда и без того напихали логики актив рекорда перейди в базовый класс елоквент модели и почитай исходники
521 1927538
Сап, двучик.

Подскажи, почему никто не посылает пароль через POST уже в хэшированном виде? Какие в этом подводные камни?

Вот это я для примера накидал
https://pastebin.pl/view/015b0408

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

Поэтому таким образом, если база утечёт, народ не проебёт пароли. Много людей использует один пароль на всё. Это конечно хуёво, но людей не изменишь.
522 1927540
523 1927562
Ремесленники, какие вы знаете методы расстановки скобок { и } ? Какой из них считаете наиболее удобночитаемым и гармоничным?
Screenshot.png7 Кб, 307x250
524 1927564
>>1927562
Такой метод пришёл мне сегодня на ум, и он весьма красив и гармоничен.
Screenshot.png42 Кб, 823x718
525 1927573
Прошу объяснить, почему конструкт getOverWorkedHours не считывает значение массива $this->$hours и не считает с него.
526 1927591
>>1927564
По psr один расово верный вариант
527 1927593
>>1927538
Потому что это ничего не меняет по сути и не дает преимуществ.
Никто уже давно не хранит пароли в чистом виде в базе.
528 1927598
>>1927573
Сравни 23 и 28 строки
529 1927613
>>1927297
С чего ты решил что тут тебе подскажут про питон? Перспективы от тебя зависят, насколько будешь стремиться и чего хочешь.
16120732970430.jpg43 Кб, 720x530
530 1927627
>>1926943

>владеет знаниями AJAX



Всегда проигрываю. Никогда бы не взял на работу и не имел бы дело с тем, кто пишет что "владеет навыком аякс".
ВОТ ЭТО ДОСТИЖЕНИЕ, НАУЧИЛСЯ ОТПРАВЛЯТЬ ЗАПРОС, НИЧЕГО СЕБЕ.
531 1927629
>>1926943

> много лет работал модератором, лил картинки и удалял комментарии


> счас я вас обучу веб-программированию!



Сплошные лулзы
532 1927785
>>1927593
Хранят. И эти базы вскрывают, к сожалению. Я когда фрилонсером подрабатывал видел вполне говнопроекты которые так делают
533 1927883
>>1927627
Ну херки же пишут в требованиях знания REST API, XML, JSON, AJAX
534 1928084
Парни интересно у какого какая вилка, я пхп мидл 120к. Вот думаю искать что то новое, так как на моей галере поднимать не хотят
535 1928137
>>1928084
Чего по собесам не походишь, глядишь, где-нибудь дадут оффер посолиднее?
536 1928262
>>1928137
я очкошник
537 1928353
https://sql-academy.org/ru/guide/number-data-type

Проверка на четность
Выведите id тех комнат, которые арендовали нечетное количество раз.
В качестве результата выведите id комнаты и количество раз сколько ее брали в аренду (используйте псевдоним count).

Я пишу
SELECT room_id, SUM(total) AS count FROM Reservations
GROUP BY room_id
HAVING count % 2 = 1;

Что не так, аноны ?
538 1928419
>>1927538

Если соединение защищено SSL, а сервер не взломан, то пароль защищен от перехвата.

Если используется не SSL, то атакующий может встроить в скрипты кейлоггер (перехват нажатий кнопок клавиатуры) и украсть пароль. Если сервер взломан - то же самое, атакующий может внедрить кейлоггер.

То есть толку от этого особо нет. Разве что защитить пароль от логгирования по ошибке.
539 1928443
Что можно использовать как альтернативу phpstorm, кроме например vscode или sublime? Что еще популярно? Кто-то пользуется eclipse, netbeans? Они популярны вообще? Что сейчас самое используемое?
540 1928455
>>1928443
А чем тебе пхпшторм с вскодом не угодили?
541 1928459
>>1928455
Первый платный, а второй может не угодить например нелюбителям майкрософта.
542 1928522
Phpstorm работает на виндовс 7?
543 1928550
>>1928522
Да, идет. Но я суко сколько всего только не перепробовал - бесит все своей кривизной и мегатоннами глючной ненужной хрени. Поэтому в итоге юзаю ток notepad++ и очень изредка онлайн-идешки для тестов и отладки, т.к. на серваке все равно все удобней и быстрее.
544 1928568
545 1928572
>>1928084
35к мидл
546 1928573
>>1928459
Тебе лень сбросить раз в месяц триал на шторме? ПХПшторм многие не покупают, пользуются триалом бесконечным.
547 1928594
>>1928573
Есть прямая связь с доходами и "экономностью". Дохера жадные и хитрожопые, которые не платят в интернетах, как правило зарабатывают мало, именно потому, что им нахер не надо много, так как они все равно нихера не платят и тырят варез. Те кто платит за контент - тем надо много. А чем больше надо, тем больше и дают.
Купил ютуб премиум, успокоил нервы, улучшилось либидо, больше стал зарабатывать. Программисты блин, поддерживайте друг друга. Не козлитесь на копейки уже!
548 1928595
>>1928594
Дурень.
549 1928605
>>1928594

>которые не платят в интернетах, как правило зарабатывают мало


Типичная хуйня от инфоцыган, а бараны ведутся, лол.
image.png13 Кб, 386x374
550 1928630
>>1928459
Китайцы даже плагин для шторма запилили, чтобы сбрасывать триал и всячески поддерживают пиратство.
>>1928594
В адекватных фирмах тебе оплатят шторм. А пока пользуемся в образовательных целях, так сказать.

А для особо совестливых шторм покупается на год с первой зп. На второй и третий год идет скидка.
551 1928632
>>1928550
А чего вим не накатишь?
552 1928633
>>1928572
Это в какой вебстудии мидл столько получает?
553 1928654
>>1928633
Мухосраньское ООО "Рога и копыта". Почти 3 года опыта работы.
554 1928658
>>1928654
Земля пухом.
Я бы после полугода без апа зп свалил
555 1928662
>>1928654

Бля, чел, вали оттуда. У меня в мухосрани ждун вилка 30-50к это норма. Причём ждун самый ждуновый. Без опыта работы вообще. Знать базовые конструкции языка.
556 1928667
удаленка или релокейт в дс
557 1928669
>>1928654
Какой стек?
558 1928672
>>1928669
Все проекты на ларе
559 1928674
>>1928662
>>1928658
Это единственная контора есть в моем городе. Куда мне валить?
560 1928676
>>1928674
Удаленка.
Тебя с ларой с руками оторвут на 100к+
561 1928678
>>1928672

СУУУКА, ЧЕЛ. Если ты мидл ЛАРЫ, твой ЗП это 100к+
В ДС 200к на изи.

Где такие города искать? Я хочу лет через 5-10 открыть свою кабанью контору, и платить стафу в сумме столько сколько один мидл получает...
562 1928681
>>1928678
Есть города в провинции, где вот так мало платят. Думаю, что через лет 5-10 ничего не изменится. Так что можешь попробовать
563 1928682
>>1928676
Окей, попробую на удаленку. Может действительно получиться найти
564 1928683
>>1928678
В любом околомиллионнике полно гречневых, готовых мидлами веслать всего за х2 от средней по региону.
В моем городе до сих пор есть ваки ниже 50к для сеньоров всякие вебстудии с битриксом
565 1928685
>>1928682
Открываешь хх, поиск Laravel фильтр по удаленной работе. Получаешь около 300 вак часть из них дубли и нерелевант - откликаешься
566 1928686
>>1928681

>Думаю, что через лет 5-10 ничего не изменится


Не факт. Прошаренные кабанчики с жирными клиентами апают ставки, чтобы хантить разрабов получше вчерашних студентов.
Моя первая галера, где закончил на зп 40к, сейчас набирает людей за 100к+.
На их фоне вебстудии с микрозарплатами смотрятся блекло
567 1928687
>>1928678
Мне недавно в ДС предложили 70к за ларавел-мидлосеньёра. Я не ответил, потому что едва тяну на джуна.
568 1928696
>>1928687
С чего решил что не тянешь?
569 1928703
>>1928696
У меня проектов на ларе толком не было. Сделал один простенький сайт, плюс видеокурс посмотрел, повторяя то, что описывали. Сейчас делаю пет-проект для гитхаба. Идёт медленно и печально.
570 1928735
>>1928703
Почему медленно? В чем затыки?
571 1928747
стоит ли реализовать вход помимо пароля на секретном слове?
572 1928764
>>1928735
Старый я. 36 лет. Все эти фасады-мидлверы-обсерверы-реквесты-модели-абстракции не то что "сложные", а просто как-то это всё угнетает.

Ну и вообще. Вот сейчас начал делать проект интернет-магазина. Он был в одном из прошлых тестовых. И мне говорили, что это типа дня на три максимум. Даже скорее на три вечера после работы. И вот начал делать. Сначала установка чистой лары со всеми прибамбасами. Тут композером, тут npm, тут пхпшторм настроить. Нет такого, что из коробки поставил и пользуешься. Потом придумывание схемы БД, создание кучи моделей, миграций, заполнение их тестовыми данными через сидеры и фабрики - это всё вроде э-ле-мен-тар-но, но почему-то у меня уходит дохера времени. Дальше контроллеры, вьюхи и прочее. И у меня при написании кода такое ощущение, что я ядерный реактор пытаюсь приспособить для подзарядки телефона. Типа, вот заготовка из ядерных элементов, вот графитовые стержни, пара тонн электроники, бетонные бункера - а дальше кидай проводку сам, делай что хочешь. И делаешь. Каждый шаг только поле изучения толстенного мануала и постоянно ощущение, что сделал всё неправильно. И если даже не ебанёт, то придёт опытный человек и будет долго и обидно ржать над КАЖДОЙ строчкой кода. Мол, контроллер толстый, проверки надо делать в мидлварах и т.д. А другой придёт и скажет, что проверки должен делать обсервер. Короче, ебанина какая-то. Слишком монструозно всё.
573 1928788
>>1928764

>говорили, что это типа дня на три максимум


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

На первых порах будет сложно. Потом всё как по накатанной.

Ну и основной показатель для бизнеса - работоспособность кода, кто бы что ни говорил. Нужно запилить МВП и выйти на рынок, а потом уже код причесывать.
574 1928887
Первый раз пилю что-то на ларе. Соответственно впервые столкнулся с такой вещью как вебпак ( да и вообще с npm пакетами ), а точнее с такой оболочкой над ним как Laravel Mix.
Весь день пытаюсь понять как и для чего его использовать, доки разные читаю - но везде лишь сырая информация об использовании отдельных функций.
Вот только нигде я не смог прочитать, а какая общая картина должна выстроиться в итоге?
Вот без этих всех штучек я делаю для каждой страницы ( или раздела ) отдельные css и js файлы, и один общий - для повторяемых элементов, например для навигационной панели и т.д.
А что мне с этим вашим миксом делать? Конечно я могу сделать то же самое, просто компилируя все файлы из resources в public, но по-моему это как-то не так должно работать.
Вроде должно быть на выходе по одному css и js полностью для всего приложения? Если так, то я сомневаюсь что люди сразу так и пишут все в один файл, неудобно же.
Значит, мне нужно как-то получить по одному css и js файлу на выходе с множества на входе?
575 1928898
>>1928887

>Значит, мне нужно как-то получить по одному css и js файлу на выходе с множества на входе?


Для этого и нужен микс/вебпак и прочие сборщики
576 1928923
>>1928685
>>1928676
>>1928678
Как же сложно откликаться на вакансии 100к+, когда у самого зп в три раза меньше, пездос. Такое ощущение, что меня на собесе засмеют. Ещё если руководитель моё резюме увидит, то будут неловкие вопросы...
577 1928927
>>1928887

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


Так в том и фишка, что ты пишешь всё в каталоге resources, как тебе удобно. 20 файлов - значит 20 файлов. А лара сама скомпилирует всё это в минифицированный объединённый код и кинет в public, в один файл. Причём, ты можешь писать на scss каком-нибудь, а скомпилится в css. То же самое с js.

>отдельные css и js файлы, и один общий


Настрой так, чтобы на выходе был не один общий, а так, как нужно. Конкретно как, не подскажу, пока что сам знаю микс только на уровне "скомпилируй мне всё в один файл". Я тоже нуб.
578 1928936
Аноны, подскажите по елоквент. Нужно создать модель, и в связанной с ней отношением belongsTo() таблице уменьшить счетчик на еденицу.
Как это сделать?
Создаю модель, сохраняю ее методом
save()
а после через свойство звязанной моджели меняю в ней счетчик?
А это все делается в рамках одной транзакции? А то создам я модель, после буду менять счетчик, а счетчик на этот момент уже 0.
579 1928939
>>1928898
>>1928927
Окей, хоть один пазл сложился. А как это сделать то, не подскажете?
Я догадался пока что склеивать файлы через combine() в один, после чего проводить компиляцию получившегося файла в public.
И если со стайлами это работает хорошо, то что делать со скриптами? Просто склеить скрипты не вариант - тогда сценарии, предназначенные для разных страниц будут просто идти один за другим.
Может нужно какой-то внутренний роутер в js писать, чтобы скрипт запускался только на нужной странице? Я то не знаю, как нормальные люди делают.
580 1928941
>>1928764
Фигня это.
мимо 34лвл, кун >>1924135

Привели мысли и привычки в порядок в первую очередь. Порядок в ежедневном тащит за собой порядок в мыслях.
581 1928944
>>1928939
У меня написано тупо по дефолту.
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.sourceMaps();

И в app.scss просто импортирую дополнительные файлы стилей: @import 'main.scss'; Наверное это не тру, но работает.
582 1928950
КАК же задолбал ЛАРАВЕЛ
Всё у него через жопу хитровывернуто. Сегодня весь день делал список из БД. На Yii2 за пол часа сгенерировал бы код и всё, а тут... писда
583 1928953

> public function __construct ($name, $surname) {


// Вызов конструктора наследуемый класса
parent::__construct($name, $surname);
не понимаю смысла,разве он не насл автоматом?
584 1928954
>>1928923
Какая разница, какая у тебя зп? Говоришь "Рассматриваю зп 120к белыми".

>Ещё если руководитель моё резюме увидит, то будут неловкие вопросы...


Ебать ты... Ну увидит и что? Мб одумается, что второго такого за 30к не найдет, апнет зп
585 1928955
>>1928887
Смотря что используешь. Если только jQuery то в принципе не сильно важно собираешь или нет. Микс(вебпак на самом деле преконфиженный) дает тебе возможность писать новый жс(или даже тайпскрипт) для старых браузеров, транспилируя и вставляю нужные полифиллы, например если ты используешь промисы то ие11 охуеет от такого поворота. Если у тебя на сайте 50 страниц разных, то не сильно много смысла пихать все стили и скрипты в один бандл. Тут несколько стульев, можно делать несколько entry поинтов, по каждому на разную страницу типа, ты должен сам их подключать в нужных местах. Можно через жс организовать модульность, вебпак это может делать, например я наговнякал сейчас вот так как вариант: https://pastebin.com/bpp3eEk0 , в таком варианте проще делать .extract() на какие-то тяжелые либы(твой бандл сплитится на app.js, vendor.js и manifest-runtime)
586 1929040
>>1928887

Склеивать все в один файл - это подход, который работает только для маленьких сайтов. Это тупой подход, который выдает на выходе огромные JS/CSS файлы с кучей ненужного.

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

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

То есть, вместо огромных скриптов ты делаешь компоненты, а сборщиком из них собираешь итоговые скрипты.
587 1929042
>>1928953

Нет, по умолчанию новый конструктор в наследнике заменяет конструктор в предке (как и любой метод в наследнике заменяет метод предка).
588 1929049
>>1929042
>>1929042
ну в теории да,если имя одинаковое,то будет переопределение.
а здесь нафига обратились к род конструктору из дочернего с теми же аргументами?
589 1929125
>>1928353

>SUM(total)


Зочем ты тоталы суммируешь?
590 1929248
>>1928594
Ты не умеешь управлять деньгами. А американец, который тебя нанимает за копейки на галере - умеет.
Вот именно что прямая связь, меньше тратишь - больше денег в кошельке, простая арифметика

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

Ломанный ПХПшторм - для сильных духом, живущих в своём коттедже.
Лицензия ПХПшторма - ошейник у рабов.
image.png593 Кб, 535x528
591 1929295
>>1929248

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

592 1929375
Подскажите минималистичный DI контейнер. Пимпл, который рекомендовал ОП, вроде как больше не будут обновлять, я раньше на нем делал. Или все таки несмотря на это его можно юзать во всяких микро-проектах?
593 1929385
Где лучше всего реализовать создание какой-то более-менее сложной модели в ларавеле? Просто сервис сделать, или через какие-то эвенты-обсерверы-черта лысого?
594 1929456
>>1929375
PHP-DI

пимпл кстати не DI контейнер, но сервис-локатор по сути. Типа антипаттерн, скрывает требуемые для класса зависимости и все такое.
595 1929515
Все эти разговоры про ООП, СОЛИД, ТДД, ДДД...
Захожу в исходники symfony console. Главный файл Application строк так 1.5к с кучей методов маленьких и побольше (до 2х экранов).
И это ваш красивый код?
596 1929591
Мне нужно создать фабрику в ларавеле, которая заполнит таблицу. Там три поля: productId, cartId и quantity. Казалось бы, пиши
$productId = $this->faker->numberBetween(1, 20);
$cartId = $this->faker->numberBetween(1, 10);
$quantity = $this->faker->numberBetween(0, 3);
Но есть важное условие: в таблице не должно быть одинаковых productId и cartId. То есть, отдельная корзина может упоминаться много раз с разными товарами, но вот двух записей, у которых одной и той же корзине соответствует один и тот же товар быть не может.

Как это вообще сделать? Я пытался в фабрике делать проверки, типа
Cart_item::all()->where('cartId', $cartId)->where('productId', $productId)->isNotEmpty(), но они не срабатывают, потому что фабрика сначала формирует данные, и только потом записывает единовременно в базу. Поэтому проверять базу бессмысленно.
597 1929603
>>1929591
В фабрике ты можешь написать любой код.
Сначала собери консистентные данные не записывая их в бд. Потом делай запись.

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

P. s. прав по ходу был тот анон, что про нативный пхп говорил...
598 1929606
>>1929603
Но ведь мы вызвываем фабрику каждый раз, как в первый. Разве нет?
Cart_item::factory(20)->create();
То есть, мы загружаем фабрику 20 раз. Я понимаю, что данные, сгенерированные между вызовами где-то сохраняются, но не в самой же фабрике?
599 1929621
Ну пусть твоя фабрика за один вызов генерит весь набор данных.
Указали ей сгенерить N записей - она лезет в бд, достает существующие пары, на основе них генерит новые N пар и отдает тебе пачкой.
Cart_item::factory(1)->create(); // за один вызов фабрики генерим набор записей
600 1929631
>>1929591
Я конечно хуй знает, но почему бы просто не сделать в базе этот набор уникальным?
601 1929633
>>1929631
Это надо в кишках лары полазить на предмет того, учитывает ли она уникальные ключи в фабрике.
Мне кажется, что нет.
602 1929650
>>1929631
Как? Есть параметр unique(), но он относится к генерируемому значению. То есть можно сгенерировать 20 несовпадающих чисел. Но в том-то и дело, что им по условию не запрещено совпадать. Совпадать запрещено их комбинации с другими числами.

Например,
4 8
5 9
4 9
- это нормально. А
4 8
5 9
5 9
уже нет.
603 1929672
>>1929650
unique можно поставить на несколько полей - т.е. создать уникальный составной индекс
Например, ставим на два первых поля (еще какое-то третье поле)
(4 8) 1
(5 9) 5
(5 9) 4 - уникальность нарушена
Он будет чекать пару целиком
604 1929684
>>1929672

>unique можно поставить на несколько полей


Как?

У меня вообще лажа какая-то. Запускаю
Cart_item::factory(13)->create(); //создать 13 товаров в корзинах
В самой фабрике написано
$cartId = $this->faker->unique()->numberBetween(1, 15); //ссылка на корзины

И валится ошибка:
Maximum retries of 10000 reached without finding a unique value

То есть фейкер за 10к попыток не смог подобрать 13 уникальных значений из промежутка от 1 до 15? Бред какой-то.
605 1929693
>>1929684
Тааак. У меня несколько фабрик. И такое ощущение, что faker->unique() как-то сохраняет инфу о "занятых" значениях между вызовами. Доходит до того, что запускаю фабрику 1 (один) раз, но она не может найти уникального значения. гуглил эту тему, пытаясь разобраться, как вообще работает фейкер, но не смог. Везде чисто обзорные статьи. Даже в документации. Ну или я плохо искал. Ебанина какая-то. Будь оно всё проклято.
606 1929716
>>1928923

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

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

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

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

Ну и я бы не завязывался на внутренности либ, сделал бы всё своими силами, если не уверен, как оно там внутри устроено
608 1929740
>>1929684
Уже бы описал это дело в сидере и дальше ебашить пошел... Застрял на херне.

Какая задача стоит? Сгенерить для базы 20 позиций?
609 1929799
>>1929738
Не умею.
Нашёл, что unique() упоминается в генераторе
* @method Generator unique($reset = false, $maxRetries = 10000)
Но больше там ничего про него нет и как вообще понять, как оно устроено, я не знаю.

>>1929740

>Какая задача стоит? Сгенерить для базы 20 позиций?


В общем, да. Сгенерировать для одной таблицы штук 20 корзин, а для другой 20 товаров в корзинах (т.е. в таблице только ид товара, ид корзины и количество товара).

Дальше надо ещё заполнить таблицу Order и Order_item, но это уже точно ен смогу, потому что заполнять нужно не просто левыми данными, а так, чтобы цифры совпали. И данные... Короче, ну его нахуй. объяснить что-то и тяжело и нахрен никому не нужно, всё равно делать нужно мне, а не интернету. Забейте.
610 1929828
>>1929799

>Дальше надо ещё заполнить таблицу Order и Order_item, но это уже точно ен смогу, потому что заполнять нужно не просто левыми данными, а так, чтобы цифры совпали


Так в фабриках можно создавать связанные модели. В доке про это есть
611 1929838

>public function __construct(Bar $bar)


что за Bar?
612 1929842
>>1929838
Пример класса
613 1929867
>>1929842
ты мне скажи,че за тема
614 1929870
>>1929867
У тебя вырвано из контекста.
Приложи скрин, где этот код увидел.
615 1930010
Почаны, привет. Решаю потихоньку задачку с преобразованием чисел в прописной вид. Нужно разделить число на части по 3 цифры. Правильно ли я поступаю, используя этот код?:

$n=51651654165123;

$spelN=[];

for ($i=$n; $i>=1; $i=$i+0) {
$i=$i/1000;
$t=floor(1000fmod($i,1));
$spelN[]=$t;
}

$spelN=array_reverse($spelN);

Алсо, поясните, почему fmod выдает, например, первым числом 0,12300109863281 , а не 0,123? Ведь дробный остаток от деления $i/1000 по модулю 1 должен равняться именно 0,123. Именно потому, что пыха возвращает длинное число, использую 1000
fmod с функцией floor.
Какие еще могут быть варианты с разделением числа на группы?
616 1930013
>>1930010

<?php

$n=51651654165123;

$spelN=[];

for ($i=$n; $i>=1; $i=$i+0) {
$i=$i/1000;
$t=floor(1000*fmod($i,1));
$spelN[]=$t;
}

$spelN=array_reverse($spelN);

Обосрался с разметкой
617 1930018
>>1929838
Это тайпхинты, при запуске проверяется тип переменной $bar, который должен соответствовать типу Bar, то есть в $bar должен быть передан класс Bar или класс который наследует класс Bar, либо класс который имплементирует интерфейс Bar. Если переданный тип будет не Bar или значение будет null то у тебя все упадет.
618 1930023
Посоны, насколько важна однопоточная производительность для пыхи, влияет ли конкретный фреймворк, типа Битрикса? Если нет, то к чему хостинги толкают свои YOBA 5GHz VDS именно для него?
16092664793410.png4 Кб, 112x112
619 1930117
>>1930023

> Битрикса? Если нет, то к чему хостинги толкают свои YOBA 5GHz VDS именно для него?


Битрих бренд. А по факту низкопроизводительное говно. ему нужно дохуя мощности + пердолинга с конфигами пхп.
И поэтому хостинг провайдеры подготавливают для него все настрречки и накидываю деньжат. Бизнес в РФ он такой.
620 1930188
>>1930023
При запуске скрипта php-fpm создаёт отдельный процесс и на одном ядре могут крутится несколько процессов, этакая однопоточная многопоточность, вот именно для этого нужны еба процессоры, если будет меньше ядер и герц то эти запросы будут висеть в очереди nginx. А Битрикс это говно которое под капотом содержит в себе жрущего ресурсы монстра, у меня простая страница вывода статей через news.list делала 260 запросов к базе, что там за магия такая хуй его знает, а про чтение тысяч при каждом запусуе файлов я уже молчу.
621 1930189
>>1930117

>Бизнес в РФ он такой.


Да он везде такой, если тебе нужно запустить говно которому нужны дополнительные ресурсы и ебля с конфигами, то нужно дополнительно оплачивать своим админам и докупать железки, именно поэтому и накидывают ценник
15693536418480.png888 Кб, 756x715
Чубопель 622 1930191
hh.ru/vacancy/42061716 — думаете утка? Так он может 1000 кандидатов взять, это же слишком низкий порог. Выглядит как мошенник.
623 1930197
>>1930191

>думаете утка?



>Вас ждет интенсивное обучение основам PHP и CMS Bitrix framework.



>Описание стажировки PHP и CMS Bitrix (1 месяц). 1 этап :



> Прохождение сертификации 1С-Битрикс в несколько этапов (в том числе мы оплачиваем за вас $ВСЕ платные$ экзамены уровня Базовый и Профессионал;


Тут вся подъебка за месяц ты хуй эти 2 экзамена сдашь, либо тебе нужно сидеть задрачивать этот битрикс сутками, поскольку там все через жопу, а сам экзамен заключается в том на сколько ты умеешь кликать мышкой в админке и делать ctrl+c и ctrl+v. А еще экзамен представляет собой подключение к удаленному серверу, где все будет адово тормозить, установлена древняя версия CentOS с древним гномом, короче от инфраструктуры для сдачи стресса больше чем от самого экзамена. После пары месяцев интенсивной работы над новыми проектами вполне вероятно сдашь, а так сходу без знакомства с этим поделием я не уверен, либо тебе нужно дрочить билеты.

> Стажировка не оплачивается и является удаленной. Если у вас нет компьютера, можно в офисе компании (Краснодар) проходить обучение.


> При успешном прохождении следует трудоустройство в штат (2 этап) с испытательным сроком (3 месяца). Также у вас на руках остаются именные сертификаты разработчика 1C-Битрикс Framework


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

> CMS Bitrix


Это самый наиглавнейший подъеб, для примера разверни эту хуйню у себя локально, поюзай чуток, а потом сравни с той же ларой.
624 1930200
>>1930188

> 260 запросов к базе


Наебал 160, но тем не менее не понятно нахуя
625 1930225
На w3schools есть уроки в РНР tutorial? Как считаете? Там годнота? Збс проходить уроки туториала РНР в w3schools? Или это говно, старье и в рот ебать это все?
626 1930253
>>1930225
Там самые основы основ, причем не особо свежие (7 и 8 версии пыхи не раскрыты)
Уж лучше по гайду из шапки идти
627 1930258
>>1930253
Спасибо огромное за ответ. Тогда выходит, что если там самые основы основ, то можно их залпом пройти за относительно недолгое время.
628 1930259
>>1930258
Ну да, там материала максимум на день.
629 1930370
А можно как-то отлавливать ошибки, которые могут возникнуть при выполнении команд через exec? Еще часто вижу мнение, что вообще использовать exec такой же зашквар как и eval. Я бота делаю, который через exec скачивает видос из ютуба и делает с ним кое-какие манипуляции через ffmpeg, если что.
630 1930586
>>1930370
https://www.php.net/manual/ru/function.exec.php
Прочитал бы, ну. Вообще лучше Symfony Console юзай, там апи хоть человеческий
631 1930620
>>1930370

Есть такое понятие, как код завершения процесса. Обычно. если все успешно, он равен 0, а если произошла какая-то ошибка, то не равен. Ты можешь проверять код завершения, который вернет exec().

Также, обычно при ошибке программа выводит какую-то информацию в стандартный поток ошибок (stderr). Через exec() ты его не перехватишь, потому лучше использовать библиотеку Symfony Process, которая умеет перехватывать выводимые запущенной программой данные.
632 1930629
>>1930188
Я имел ввиду, насколько он может распараллелить запросы по разным ядрам/потокам? Судя по встроенному тесту Битрикса, кол-во попугаев не зависит от кол-ва ядер.
633 1930639
>>1930010

> почему fmod выдает, например, первым числом 0,12300109863281 , а не 0,123?



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

Это значит, что в памяти компьютера хранятся лишь первые несколько цифр числа (около 15-17 значащих цифр) и расположение запятой.

К примеру, var_dump(123456789012345678901234567890) выведет:

double(1.2345678901235E+29)

(E+29 значит "умножить на 10 в 29 степени). Как видно, сохранились лишь 14 значащих цифр, остальные были потеряны.

Более того, числа в памяти хранятся не в десятичном, а в двоичном виде, как N * 2 ^M (где N и M - целые). Если приглядеться к формуле, то с ее помощью можно точно представить лишь некоторые дробные числа (кратные 1/2, 1/4, 1/8, 1/16 и тд.), а большинство дробных чисел представить точно нельзя:

0,5 - можно точно представить как 1/2 или 1 * 2 ^ -1
0,125 = 1/8 = 1 * 2 ^ -3

А вот другие дроби, вроде 0,1 или 0,123 точно представить нельзя. Из-за этого они представляются в памяти как 0,10000000001... или 0,09999999999999... и возникает погрешность при вычислениях.

В твоем случае 0.0000010986... - это именно такая погрешность. От нее лучше избавляться не с помощью floor(), а с помощью round(), так как погрешность может быть и отрицательной и у тебя может получиться 0,1229999999 и floor() выдаст тут 122 вместо 123.
634 1930652
>>1929693

Тут надо не статьи читать, а исходный код.

Разберемся, как работает код

Factory::create()->unique()->randomNumber

Можно открыть исходники фейкера и посмотреть, как он работает. Начать с Factory::create(): https://github.com/fzaninotto/Faker/blob/master/src/Faker/Factory.php#L11

Видно, что она создает объект Generator и запихивает в него кучу провайдеров.

Затем смотрим код объекта Generator, в нем метод __call(), так как именно он вызовется в ответ на вызов ->unique().

Видно, что в Generator есть "форматтеры" - это конкретные методы для генерации значений вроде randomNumber и "провайдеры" - это классы с набором форматтеров.

Видно, что он ищет метод с именем unique во всех провайдерах и, когда найдет, вызывает его. Такой метод есть в классе Base, от которого наследуются другие провайдеры: https://github.com/fzaninotto/Faker/blob/master/src/Faker/Provider/Base.php#L561

Этот метод "оборачивает" объект Generator в обертку UniqueGenerator: https://github.com/fzaninotto/Faker/blob/master/src/Faker/UniqueGenerator.php

Дальше, я думаю, можно понять.

Тут еще важно, что после первого вызова $faker->unique() объект UniqueGenerator сохраняется в поле $this->unique и второй вызов $faker->unique() вернет тот же объект (с теми же сохраненными значениями).

В твоем случае, возможно что ты использовал faker->unique()->numberBetween в нескольких местах кода, сделал более 15 его вызовов и он перебрал все возможные числа от 1 до 15 и потому не может найти новое.

В общем, я думаю, полезно покопаться в коде, умение разбираться в чужом коде тебе понадобится не раз.
634 1930652
>>1929693

Тут надо не статьи читать, а исходный код.

Разберемся, как работает код

Factory::create()->unique()->randomNumber

Можно открыть исходники фейкера и посмотреть, как он работает. Начать с Factory::create(): https://github.com/fzaninotto/Faker/blob/master/src/Faker/Factory.php#L11

Видно, что она создает объект Generator и запихивает в него кучу провайдеров.

Затем смотрим код объекта Generator, в нем метод __call(), так как именно он вызовется в ответ на вызов ->unique().

Видно, что в Generator есть "форматтеры" - это конкретные методы для генерации значений вроде randomNumber и "провайдеры" - это классы с набором форматтеров.

Видно, что он ищет метод с именем unique во всех провайдерах и, когда найдет, вызывает его. Такой метод есть в классе Base, от которого наследуются другие провайдеры: https://github.com/fzaninotto/Faker/blob/master/src/Faker/Provider/Base.php#L561

Этот метод "оборачивает" объект Generator в обертку UniqueGenerator: https://github.com/fzaninotto/Faker/blob/master/src/Faker/UniqueGenerator.php

Дальше, я думаю, можно понять.

Тут еще важно, что после первого вызова $faker->unique() объект UniqueGenerator сохраняется в поле $this->unique и второй вызов $faker->unique() вернет тот же объект (с теми же сохраненными значениями).

В твоем случае, возможно что ты использовал faker->unique()->numberBetween в нескольких местах кода, сделал более 15 его вызовов и он перебрал все возможные числа от 1 до 15 и потому не может найти новое.

В общем, я думаю, полезно покопаться в коде, умение разбираться в чужом коде тебе понадобится не раз.
635 1930655
>>1929591

У тебя какой-то странный подход к заполнению таблиц. Во-первых, поле id часто автогенерируемое (заполняется в БД само), нельзя ли тут это использовать? Во-вторых, нельзя ли сначала сгенерировать отдельно список товаров, потом список корзин, cсохранить их в БД, а потом уже выбирая из них, сгенерировать список CartItem?
636 1930657
>>1929456

Pimple это DI контейнер.

Сервис-локатор это класс, который передается в конструктор вместо зависимостей:

function __construct($serviceLocator)
{
$this->x = $serviceLocator->getX();
}

Pimple так не используется, он является DI контейнером.
637 1930662
>>1929049

Допустим, есть класс A с полями a, b, c и его наследник B c полями d, e, f. Конструктор A отвечает за заполнение полей a, b, c а конструктор B за поля d, e, f. Если в конструкторе B не вызвать конструктор A, то поля a, b, c останутся незаполненнными.
638 1930668
>>1930655

>Во-первых, поле id часто автогенерируемое (заполняется в БД само), нельзя ли тут это использовать?


Да, оно заполняетса само. И как это использовать?

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


Именно так и происходит. Но вот с правильным заполнением полей таблицы Cart_item проблма.
639 1930782
что такое JSON понятным языком и с чем его едят?
640 1930828
>>1930782
Мне кажется определение из вики вполне исчерпывающе.
JSON (англ. JavaScript Object Notation, обычно произносится как /ˈdʒeɪsən/ JAY-sən[2]) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Формат JSON был разработан Дугласом Крокфордом[3].

Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается независимым от языка и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON.
641 1931007
Похвалите меня, я маленько научился чуть-чуть по-английски читать с помощью гугл переводчика. Сейчас прохожу w3cschools туториал по РНР.
642 1931102
>>1931007
есть русская версия
643 1931155
>>1931102
Ну, ебать. А я уже прошел туториал с помощью гугл переводчика.
644 1931173
>>1931155
начни лучше просто с англ
645 1931187
Кто-нибудь может направить на статью/видео о том как сделать поиск на сайте? Делаю для Интернет-магазина, но пока готова только сама строка и кнопка поиска.
646 1931218
>>1931187
Что искать собрался?
647 1931239
>>1931187
Берешь эластик, прикручиваешь, радуешься охуенному поиску, охуеваешь от нехватки памяти.
648 1931248
ДА блин, запостить вопрос не могу
649 1931250
Аноны, как в елоквент создать новую модель, и сразу же инкрементировать\декрементировать связанную отношением belongsTo модель?
Меня беспокоит атомарность этого действия.
Я создаю модель, и сохраняю ее методом save().
После этого я должен декрементировать связанную отношением модель, это можно сделать через свойства.
Ну будет ли это все в рамках одной транзакци?
?
650 1931253
>>1931250
Ну оберни в транзакцию
651 1931490
>>1931248
Если тебе не хватает интеллекта даже запостить вопрос, то я советую тебе забросить веб программирование.
652 1931510
А как понять, что ты ООП достаточно изучил? Я вот начал читать про ООП, текста дохуя, нихуя не запоминается. Если каждый пример кода запускать, то я еще 100500 лет буду разбираться.
653 1931546
>>1931510

>А как понять, что ты ООП достаточно изучил?


Никогда не будет достаточно. В ООП нужен баланс и чуйка, где хороший код, где говнокод, а где вынужденный говнокод

>Если каждый пример кода запускать, то я еще 100500 лет буду разбираться.


Как ты собрался программированием заниматься без написания кода?
654 1931549
>>1931546

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


Ну, я Мэтта Зандстру начал читать. Там задач нет. На глаз код читаю, описанные примеры, вроде, все понятно, однако там 738 страниц, то что прочитал 70 страниц назад из головы выветривается.
655 1931560
>>1931549
Такие книги стоит читать, если есть опыт написания хотя бы одного проекта. Без наработанного опыта ничего не поймешь.
Читал когда-то давно Зандстру. Не сказать, что сильно помогло.
656 1931563
>>1931560
Ну, в шапке треда написано Зандстру читать. А я человек простой, ОП приказал, я читаю.
657 1931630
>>1930639
Спасибо, Анон! Ты как всегда очень добр к мимохую. Счастья тебе и удачи.
658 1931722
>>1931510
Видосики смотри, видео-курс какой по созданию сайта на ооп пройди.
659 1931861
Дорогие аноны, нужен совет. Делаю задачу про сайт тестирования. Как можно реализовать таймер на стороне сервера, чтобы юзер не мог обрубить его через фронт?
660 1931863
>>1931861
Сохраняешь в мемкешеде/редисе таймстамп времени окончания, потом проверяешь.
661 1931868
>>1931861
Создаёшь в базе запись такой-то юзер начал проходить тест в такое то время, когда он отсылает отвёты сверяешь время получения ответов и время старта прохождения + лимит по времени теста
662 1931896
>>1931863
>>1931868
Спасибо, анончики
Снимок.PNG3 Кб, 475x46
663 1931930
Почему так не работает, а если вызову $function, то всё нормально?
664 1931947
У хтмлакадемии есть базовый интенсив по РНР, там учат кодить на голой пыхе без фреймвороков. И там отсутствует от слова совсем тема ООП. ООП проходят только на продвинутом интенсиве по РНР, где изучают Yii.

Вопрос: а почему хтмлакадемия не дает изучать ООП на голой пыхе? В этом есть какой-то сакральный смысл? Или они тупо пожалели зажопили полезную важную тему для новичков?
image.png43 Кб, 558x934
665 1931963
666 1931993
А че надо читать? Официальный мануал по РНР? И РНР зе ригхт вау the right way?
667 1932002
>>1931947
Имхо потому что ООП бессмысленно изучать в отрыве от создания приложений, а приложения должны иметь какую-то основу и структуру по минимуму. А писать основу и структуру самим с нуля - это как изобретать велосипед. По идее они должны давать введение в солид принципы и начинать с примера какой-либо основы. А основа и есть фреймворк. Там оно уже все реализовано как бы. Поэтому и такой скачок, одни выберут к yii, другие к зенд, третьи симфу, четвертые лару, а на деле все это - просто варианты структурной организации приложения, построенного на опп принципах. Хотя по умному, они должны не только дать несколько примеров структур, но и предложить создать свою для начала, но это затягивает время по сути, т.к. хер ты создашь что-то лучше, чем уже создано. В этом конечно есть серьезный косяк - фреймворки НЕ УНИВЕРСАЛЬНЫ, и когда берут основу типа симфони для приложухи, которая три строки кода в беке заняло бы, если бы сами писали, получаются говнопроекты.
Но так как после курсов выпускают джунов, в задачу которых не входит самостоятельная разработка, до для макаки более чем.
668 1932007
>>1931993
По моему опыту учебники следует пролистывать максимально по диагонали, прогнав немного тесты и задачки, но втыкать в них - ток зря время читать - нихера не запомнится и не поможет, т.к. голая теория нихера не усваивается - ток зря время теряешь.
По любому надо ковырять чужие коды рабочих приложений и stackoverflow, создавая и тестируя свои. когда натыкаешься на понятки - гуглишь что читать по теме уже. То есть хотя бы с элементарного начать, собственного сайтика со свистоперделками со встроенным порнхабом, тестами, парсерами всего, что можно стырить и т.п. Пока не включится интерес к ваянию всяко-разной херни, башка останется пустой а руки кривыми. Это как лепить из пластелина - надо суко лепить, а не читать книжки по лепке.
669 1932018
Переменные генерируют рандомное слово (одна буква одно переменное). Как это сохранить?
670 1932019
>>1932018
В смысле сделать из отдельных переменных одну со словом
671 1932022
>>1931947
Потому что говнокурсы. ООП обязательно надо изучать на голой пыхе, чтобы вообще понимать как примерно работают фреймворки изнутри. Самостоятельно составить MVC-структуру, изучить автолоадер, роутер как работает, нэймспейсы, цепляются конфиги, наследование и прочее.
Поймёшь как это работает - легче будешь понимать фреймворки.

ООП - это база, это не продвинутый уровень.
Я в своё время проходил его, рекомендую, он сначала учит ООП на голой пыхе с созданием CMSке, а потом даже YII обучает, если хочется.
https://www.youtube.com/c/ВикторЗинченкоА/playlists
672 1932177
>>1931930
Полный код и ошибку можно?
673 1932183
>>1932019
Конкатенация
674 1932186
>>1932022

>2015


>netbeans

tipidor.jpg50 Кб, 905x317
675 1932265
Почему он не даёт мне добавить?
676 1932352
Пиздец. Как легко на PHP с PDO и mysql создавать базы данных, таблицы и вообще.

Я помню в шараге мы проходили базы данных на C Builder, это был пиздец, все отключалось, ломалось, нихуя не работало, был ахуй и пиздец нахуй.
677 1932362
>>1932352
Тогда не могу представить твой ахуй от элоквента.
678 1932371
>>1932352
доктрина + symfony maker. Ты тупо по словам накидываешь в консоли сущность, дальше создаёшь миграцию, выполняешь миграцию - всё в базе.
679 1932374
>>1932371
Причём миграции тоже генерятся мэйкером, не надо как в ларавеле их писать)
680 1932384
>>1932374
И чего, мейкер см телепатией знает, что нужно создать такие-то таблицы с такими-то полями таких-то типов?
681 1932426
>>1932384
Я ж написал - сущность описываешь сначала, он генерит сущность по твоим ответам
https://www.doctrine-project.org/projects/doctrine-orm/en/current/tutorials/getting-started.html#starting-with-the-product-entity
И по сущности миграцию генерит.
682 1932456
Как в php помечать возможные промежутки между числами?
Например у меня есть переменна $a со значением 1000.
Нужно сделать так чтоб если $a == (промежуток между 1000-700 т.е. от 700 до 1000) то давало true, если 300 или меньше то false.
683 1932457
>>1932456

>1000-700 т.е. от 700 до 1000


Оц то-есть от 300 до 1000. Я всё напутал но надеюсь вы поняли что мы хотим)
684 1932460
если в бд есть колонка где есть дефолт значение,то нужна команда update?
685 1932536
>>1932456
какое-то шизло. А если от 300 до 700?
686 1932546
>>1932536
Нет надо от 300 до 1000... Но можешь и вариант от 300 до 700 предпложить... Там в примере - условные цифры. Короче поомгайтк!
687 1932635
>>1932546
$b=($a>=300&&$a<=1000)?1:0;
688 1932637
>>1932546
$b=false;
if($a>=300&&$a<=1000) {$b=true;}
на всяк более понятную запись кинул.
689 1932664
>>1931930

$this->function() это попытка вызвать метод с именем function. А такого метода нет, отсюда ошибка.

А вот ($this->function)() это уже вызов анонимной функции, хранящейся в поле function.
690 1932667
>>1932265

Если я не путаю, CURRENT_TIME можно указывать только для полей типа TIMESTAMP.
691 1932694
>>1932637
$b = 300<=$a && $a<=1000, чому не так?
692 1932868
>>1932694
Хз. По логике так логично быть должно - слева переменная, справа логическое выражение из двух неравенств. Но по опыту хер там пыха пустит, тем более седьмая, она за скобки параноит как шизло, там тупо обычные сокращения вложенных условий без них не прокатят, и присваивание булевых там другим синтаксисом делается. Хотя пробуй. Может оно и прокатит, если не запятую, а ; d конце влепить. Хотя я почему-то все таки сомневаюсь, поймет ли компилятор. По идее ты тысячу раз мог бы протестить уже, чем тут от нехуй делать кидать подобные вопросики по части алфавита блин. Типа почему жопа, а не жёпа. я хз, не я пыху писал. Да и хуй уже помню, какие там правила.
693 1932871
>>1932667
Путаешь. Для любых полей с датой.
И перестаньте пользоваться phpmyadmin уже, дикое говнище оно.
Есть же дохера попроще и потолковее инструментов. типа того же adminer. А то больно бл. смотреть, аж яйца крутит, на такие извраты.
694 1932906
Пиздец! Я дебил! Я шараге привык все с доски переписывать в тетрадь. У нас джва компьютерных класса со старыми компами. А учащихся дохуища. На учащихся постоянно не хватает компьютерных классов. Преподы говорят, что компьютерные классы - это архаизм и что в 2к21 году учащиеся обязаны носить с собой ноутбуки. КАКОЙ ТАМ НАХУЙ! Я не мажор нету у меня ноутбуку. Хоть дома некропека есть и то хорошо.

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

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

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

Теперь я запускаю код на пеке, не записывая в тетрадь. И процесс пошел гораздо быстрее. В разы быстрее. ПИЗДЕЦ Я ДЕБИЛ, СТЫДНО БЫТЬ МНОЮ!!! КАКОЙ ЖЕ Я ТУПОЙ!

Спасибо, что есть умные аноны!
Screenshot.png57 Кб, 1439x762
695 1932962
>>1932637
Что означает &&?
698 1933053
111.jpg17 Кб, 488x88
699 1933326
А что, в php есть максимальное возможное число?
700 1933329
Как сделать так чтоб echo выдавало сумму сложения? Например echo "$a+$b" и выдавало результат $c .
701 1933334
Когда выводил $num = 99999999999999999999999999999; В консоли выдало вот такое: 1.0E+29, это он типа слишком большие числа в другой формат выдает?
702 1933384
>>1933334
да, гугли типы данных, в какой формат переводить такие числа, чтобы не было ошибки. там интеджер мелкие слишком надо делать флоат чтобы столько девяток втащить. А с js там вообще танцы с бубнами. https://www.php.net/manual/ru/language.types.php
https://www.php.net/manual/ru/language.types.integer.php
Подсказка - гугл отвечает быстрее
703 1933385
>>1933329
Ой не ну результат перменную а просто результат. Короче помогайтек!!!!
704 1933400
>>1933329
echo $a + $b
705 1933405
>>1933400
Пон спс!
706 1933520
1933329
Вы серьёзно помогли этому долбаёбу? Он ведь даже не прочитал ОСНОВЫ ОСНОВ, но всё равно спрашивает гениев из этого треда о помощи в такой простой задаче. Я разочарован в вас.
707 1933569
>>1933326

Да, есть. В PHP числа могут храниться в 2 форматах: int - целое и double (иногда называют float) - число с плавающей запятой.

В формате int на 64-битных машинах можно представить только целые числа примерно от -9 * 10^18 (10 в 18-й степени) до +9 * 10 ^ 18. Точные максимальное и минимальное значения int хранятся в константах PHP_INT_MAX и PHP_INT_MIN, можешь вывести их с помощью echo. Числа в формате int хранятся точно, без погрешности.

Если число дробное или выходит за пределы int, то оно представляется в формате double. Это неточный, приближенный формат, который сохраняет лишь первые 15-17 значащих цифр и порядок числа (положение запятой и сколько за числом идет нулей). То есть, длинное число 12345678901234567890 сохранится как 1,2345678901235 * 10 ^ 19 - часть идущих в конце цифр теряется.

В формате double можно представить числа примерно от 10 ^ -308 до 10 ^ 308. Это, получается и есть "максимально возможное число".

Если тебе нужно работать с еще большими числами, или нужно точное представление без потери цифр, то стоит посмотреть на расширения BCMath и GMP. Они позволяют выполнять операции со сколь угодно большими целыми числами.
708 1933574
>>1933334

1.0E+29 обозначает "умножить 1.0 на 10 в 29 степени", или передвинуть запятую вправо на 29 разрядов, добавляя нули по мере необходимости. Как видишь, из-за преобразования в формат double число сохранилось с погрешностью.
709 1933627
Ребят, траблы с пыхой. Проблема ясна, а вот что делать вообще хз. Вся проблема на скринах. Если словами, то phpStorm всрато работает с namespace'ами. Когда создаю класс в другом namespace он напрочь отказывается создавать его экземпляр в исходном namespace. Пытался гуглить, но всё что находил это обычную теорию по пространствам имён. Не могу двигаться дальше в обучении из-за этой проблемы. Вроде всё правильно делаю, но может где то просто тупая ошибка закралась?(p.s если при создании класса подключать namespace через use, а не напрямую как на скрине эффект тот-же).
710 1933647
>>1933627
один слэш точно лишний
711 1933652
>>1933647
Перед Ass? Попробовал без него, то же самое
712 1933686
>>1933627

А как ты, собственно, пытаешься создать инстанс, когда не подключил класс User в свой index.php ?
Мне кажется, тебе нужно для начала получше ознакомиться с немспейсами
воть.jpg215 Кб, 1920x1080
713 1933690
>>1933686
Не совсем понял, вот так имеешь ввиду? Через use?
714 1933694
>>1933690
Use всего лишь даёт алиас для пространства имен, а не подключает. В данный момент в твоём файле нет класса User, откуда по-твоему php должен его взять ?

Подключить файл можешь через require ‘User.php’ в самом начале.
715 1933700
>>1933694
И вправду, заработало. Спасибо большое. Действительно, стоить больше почитать про namespace. Я думал что "use" как раз и выполяет эту функцию. Спасибо анон.
716 1933701
>>1933627

Когда ты запускаешь index.php то в нем не определен класс User, потому PHP не может создать объект этого класса.

use не "подключает" класс, а лишь создает синоним (то есть use \Ass\User лишь говорит, что имя User это синоним для полного имени \Ass\User).

Тебе нужно либо руками через require подключить файл с классом, либо разобраться в автозагрузке. Начать лучше с первого, а потом переделать на второе. Вот урок про автозагрузку (так кстати и require упомянут): https://github.com/codedokode/pasta/blob/master/php/autoload.md
717 1933936
Я прошел sql туториал в w3schools. Я - молодец!
изображение2021-02-08152507.png11 Кб, 602x388
718 1934039
Делаю меню с выбором пунктов и вылезающим окном, но есть 2 проблемы: 1) Между меню и окном есть небольшой пробел и, если курсор попадёт на него, то окно исчезнет, я могу это починить приблизив окно к меню впритык, но тогда будет некрасиво; 2) Когда появляется окно, снизу от пункта появляется огромное белое пространство, что печалит меня.
Код css (menuleft это меню слева, а showmenu это окно справа):
.menuleft{
position: absolute;
margin-left: 50px;
margin-top: -300px;
border-radius: 8px;
width: 255px;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.16);
background-color: rgb(255, 255, 255);
}
.menuleft li{
border-bottom: 1px solid #f5c800;
}
.menuleft li:hover{
color: #ffc222;
transition: all ease 0.5s;
cursor: pointer;
}
.showmenu{
color: #000000;
display: none;
margin-left: 230px;
width: 300px;
margin-top: -31px;
background:#f3f3f3;
height:200px;
box-shadow:0 5px 5px rgba(0,0,0,0.3);
}
.menuleft li:hover .showmenu{
display: block;
}
изображение2021-02-08152507.png11 Кб, 602x388
718 1934039
Делаю меню с выбором пунктов и вылезающим окном, но есть 2 проблемы: 1) Между меню и окном есть небольшой пробел и, если курсор попадёт на него, то окно исчезнет, я могу это починить приблизив окно к меню впритык, но тогда будет некрасиво; 2) Когда появляется окно, снизу от пункта появляется огромное белое пространство, что печалит меня.
Код css (menuleft это меню слева, а showmenu это окно справа):
.menuleft{
position: absolute;
margin-left: 50px;
margin-top: -300px;
border-radius: 8px;
width: 255px;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.16);
background-color: rgb(255, 255, 255);
}
.menuleft li{
border-bottom: 1px solid #f5c800;
}
.menuleft li:hover{
color: #ffc222;
transition: all ease 0.5s;
cursor: pointer;
}
.showmenu{
color: #000000;
display: none;
margin-left: 230px;
width: 300px;
margin-top: -31px;
background:#f3f3f3;
height:200px;
box-shadow:0 5px 5px rgba(0,0,0,0.3);
}
.menuleft li:hover .showmenu{
display: block;
}
719 1934056
Валидатор тоже надо в стиле ООП писать?
Мне кажется это будет оверинженеринг
720 1934059
>>1934056
А как ты его писать собирался?
721 1934062
>>1934059
процедурно по классике
722 1934110
>>1934062
Ну пиши процедурно, потом покажешь
Screenshot.png36 Кб, 839x633
723 1934121
Помогайте быстре!!!!! Как сделать так чтоб хернюшка на строке 65 ссылалась на скорлупу b значения 2? Или просто на значение 2 в скорлупе b.
724 1934124
>>1934121
А всё мы додумались...
image.png375 Кб, 600x255
725 1934281
726 1934430
>>1934056
на вордпрессе пиши, оверинженегринг)) что тут происходит, ахах, рил
image.png378 Кб, 400x400
727 1934450
Я тут вам чистый код принес
728 1934762
>>1934039

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

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

Допустим, пишем во вьюхе
<input name="isPublished" type="hidden" value="0">
<input name="isPublished" type="checkbox" class="form-check-input" value="{{$item->isPublished}}" {{ old('isPublished', $item->isPublished) ? 'checked="checked"' : '' }} >

А в правилах валидации
'isPublished' =>'boolean'

И получается фигня какая-то. Если не менять галочку, то всё ок. Если снимаем, то в контроллер попадает 0 и всё тоже ок. Но вот поставить обратно её не получается, в контроллер всё равно уходит 0. Я уже и так и сяк с этими полями шаманил, никак не могу понять логику. По идее же у нас тупо два поля. если чекбокс не стоит, то это поле просто не учитывается и контроллеру улетает 0 из скрытого поля. А если галку ставим, то значение чекбокса перебивает скрытое поле и контроллеру идёт 1. Но такое ощущение, что если её снять, то это работает, а если поставить, то нет.
730 1934911
>>1934899

Стоит сначала разобраться, как передаются чекбоксы. Если галочка поставлена, то браузер передает имя (name) и значение (value) чекбокса в POST-данных (например: isPublished=x). Если галочка не поставлена, то значение чекбокса вообще не передается на сервер.

Тебе надо всегда передавать в value одно и то же, например, значение 1.

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

Также, гугл выдает такую статью: https://5balloons.info/working-with-checkbox-input-in-laravel-form/
731 1934939
>>1934911

>Стоит сначала разобраться, как передаются чекбоксы.


Так в том-то и дело, что я знаю, как они передаются. и даже полностью объяснил это в своём посте (и ты повторил то, что я написал).

>Тебе надо всегда передавать в value одно и то же, например, значение 1.


Нет. Мне нужно передавать 1 только если чекбокс установлен.

>передается параметр isPublished дважды.


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

> гугл выдает такую статью: https://5balloons.info/working-with-checkbox-input-in-laravel-form/


Я её уже читал. Там не совсем то. Там написано, что можно сваять в контроллере костыль в виде проверки на существование параметра if($request->has('isPublished')), но к нему ещё придётся прописывать изменение данных в реквесте перед записью в бд. Как-то это криво, не думаю, что должно так быть.
732 1934942
>>1934939

>на сервер отправится строго одно поле.


Сразу уточнение: если оно установлено. Если ни одно поле не установлено, то на сервер оно не передастся вообще.
733 1934945
>>1934939
И моя проблема, по итогу, в том, что если галочка изначально не стоит, но мы её ставим, то уходит "isPublished" => "0", а должно быть "isPublished" => "1". Я не понимаю, где я накосячил.
734 1934981
>>1934945

>Я не понимаю, где я накосячил.


в value="{{ $product->isPublished() }}"

попробуй так:
https://pastebin.com/XMHW84Bz
735 1934997
Я все правильно сделал?
Аноним 736 1935340
Проснулись и улыбнулись.

Предыстория.
Учил swift для вкатывания на ios, на нем друзья уже программируют и работают уже не один год. Но что-то не задалось с ним, прошел 1 собес, выполнил все тестовые задания, но были проблемы с теорией. Обговорили зп и договорились, что подучу и выхожу на работу. А тут началась учеба, родичи заболели короной было не до этого и я забил на время как я думал. После всей хуйни нарисовался вариант пойти в небольшую фирму PHP программистом БИТРИКС 24. Долго думал идти или нет, но пошел. Уже были куплены курсы на GeekBrains, дали их и сказали учи. Уже месяц прошел, курсы эти не особо нравятся. А нормальных учебников так и не нашел. На swift было все просто открыл xcode, нашел видеоуроки, есть хорошие учебники. Одно и тоже, но в видеоформате и в текстовом, про сто и доступно. А с PHP ебать сложно. Одни говорят сразу учить пхп в одном редакторе, другие говорят нужно с началу HTML с CSS учить в других редакторах. Я уже запутался. Есть предложения каких-нибудь адекватных курсов, уроков, книг с чего стоит начать.

Если что в будущем нужно будет не сайты клепать, а приложения под CRM Битрикса 24.
737 1935504
>>1935340

>приложения под CRM Битрикса 24


В знатное говно вляпался. Лучше бы на свифте сидел
1257603280452.jpg45 Кб, 600x600
738 1935507
>>1934981
Спасибо. Контроллер я менять не стал и хидден поле оставил, а вот value="1" в чекбоксе прописал. И всё заработало правильно.
739 1935531
>>1935340

>CRM Битрикса 24



Земля пухом, это самое дно отрасли, пробуй свифт пока есть возможность
Аноним 740 1935539
>>1935504
>>1935531
Да бля, если в свифт то незнаю когда смогу устроится, а я студент и тут нормально относятся к тому, что хожу не каждый день. В планах пока тут хуярить, пока учебу не закончу еще 1.5 года. Если по окончанию учебы будут хорошо платить то останусь, если нет то устрою перекат на свифт + какой-то опыт будет в разработке.
741 1935542
>>1935539
Не судьба договориться со свифтерами на парт тайм?
Пхп само по себе дно, Битрикс еще большее дно
Аноним 742 1935583
>>1935542
Я не сидел за сфитом уже месяца 3 и уже подзабыл что там к чему. Так еще в городе всего 2 вакансии на свифт джуна, хуй знает можно ли будет у них студентику работать.

А тут уже платят, сиди учи получай бабосы. Так дальше вроде как больше должно быть.
743 1935675
>>1935583

>тут уже платят, сиди учи получай бабосы


Погнался за 10 рублями сегодня, чтобы не идти за 100 рублями завтра...
744 1935857
>>1935340
Классическая ошибка для начинающего пхп разработчика. Пойми, что ты так в сторону веб-мастера катишься. Убегай на свифт давай, бака!
745 1935916
>>1935542

>Пхп само по себе дно


А js тоже дно? Или нет? Если нет, то чем php доннее js'a?
746 1935918
>>1935916
И почему это php дно?!
747 1935931
>>1935916
За жс хотя бы платят хорошо
748 1935933
>>1935918
Низкие зп, тонны легаси, цмски и е-комерс движки. Пхпшники - джамшуты от мира айти
749 1935935
>>1935933
И симфонисты тоже джамшуты?
750 1935966
Сап, двач.

Допустим у меня api выглядит так, то что оно принимает метод вызываемого контроллера через get параметры.

В таком случае лучше index метод контроллера должен звать остальные, или лучше сделать это через middleware?
751 1936011
>>1935935
Симфонисты занесены в красную книгу как редкий вид адекватного пехапешника
752 1936012
>>1935966

>api выглядит так, то что оно принимает метод вызываемого контроллера через get параметры


Это на какой галере такие выкрутасы?
753 1936021
Допустим есть товар, у товара есть категории. Что делать с товаром при удалении категории через админку? Я себе такие варианты представляю, что наверное лучше вообще не вводить возможность удаления категории, в которой существуют товары. Хотя это тоже так себе вариант.
754 1936035
>>1936021
Удалять товар вместе с категорией. Гугли delete cascade.
755 1936044
>>1936011
А ларавелисты наполовину джамшуты или полностью? А энтерпрайз проект например на друпале это тоже для джамшутов?
А вот паттерны в пхп стали тоже джамшутовыми от того, что они на пхп? Паттерны на сишарпе от них как-то отличаются? А фронтедер - это джамшут или нет? А битрикс ладно, это возможно частный случай проект для банка - джамшутинг?
Откуда вообще такое разделение на джамшутов?
756 1936048
>>1936044

>А ларавелисты наполовину джамшуты или полностью?


Из тех, с которыми работал 50/50. Были, кто откровенно говно в прод льет, были среднячки, хороших ларавелистов, увы, не встречал.

>А вот паттерны в пхп стали тоже джамшутовыми


Если бы их часто видел. Так нет, средний пхп проект - процедурщина, обернутая в классы моделей или контроллеров

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


Учитывая начинку битрикса - да
757 1936085
>>1936035
Да знаю я что это такое, как по мне самый худший варик.
758 1936106
>>1936021

Это вопрос к тебе (ну или к заказчику), а не к нам: что должно происходить?

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

Вариант 3 самый неудачный, так как сотрудник может удалить категорию, думая, что она пустая, а по факту удалит пол-магазина с заказами.
759 1936117
>>1935966

Лучше сделать нормальное API с URL вроде http://example.com/products/list.

>>1934997

$b, $test, $str1 - плохое название переменной. Учись выбирать более говорящие названия.

Также, используя функции array_map и max можно найти макс. длину строки без написания цикла foreach.

Писать if ($value[$i]) неправильно, так как в массиве может не быть элемента $i и будет выдано предупреждение. Надо проверять, что такой элемент есть с помощью isset, array_key_exists или count.

в остальном решено верно.
760 1936138
>>1932906

Раз ты изучаешь ООП, то можешь глянуть как-нибудь нашу задачку про ООП-гостиницу: https://arhivach.net/thread/302511/#1082529

>>1932460

Не понял вопрос.

>>1931861

Можно сделать сущность "попытка прохождения теста" и в начале теста создавать такую сущность и записывать во сколько, кто начал проходить какой тест.
761 1936147
>>1931510

Попробуй решить задачу про ООП-Гостиницу, например: https://arhivach.net/thread/302511/#1082529 . Если не решается, значит, надо изучать ООП еще.

Еще есть задача про ООП-скидки: https://www.cyberforum.ru/php-oop/thread1459985.html

Более сложная задача - парсер математических выражений (сделанный на ООП), которому дается на вход математическое выражение вроде x(2a + b) + 5 + 3bx и он его упрощает до 2ax + 4bx + 5. Ну это конечно сложная задача, новичок над ней может месяц голову ломать. Но полезная. Там много классов получается. Я могу дать подсказку, если что.
762 1936153
>>1936106
Да, в принципе я поразмыслил, вопрос изначально дурацкий. Если оставить товар без категории каким то образом, то что, писать в графе "категория" [ДАННЫЕ УДАЛЕНЫ], чишо? Да и множество других неудобств сразу же вскрывается. Наверное лучше вместо этого просто предоставлять максимально широкие возможности редактирования категории.
763 1936159
>>1931187

1) Самый простой способ - использовать полнотекстовый поиск в БД (это через WHERE ... MATCH AGAINST ).Делаешь в таблице колонку, помещаешь туда текст для поиска, делаешь полнотекстовый индекс и используешь MATCH AGAINST

2) Уровень покруче - это внешний движок вроде Sphinx. Вот урок https://gist.github.com/codedokode/10539366

Ты настраиваешь запуск индексатора, например, раз в час, а также при желании можешь сделать realtime-индекс и при изменениях в БД слать в него данные в реальнмо времени. После чего ищешь через sphinx.

3) Elasticsearch, это по принципу работы как sphinx, только с 1000 разных ручек и переключателей, можно искать что угодно как угодно, группировать, сортировать данные, итд. Возможностей море.
764 1936186
>>1936159
Мне как раз сегодня задача пришла поиск на сайта потвикать как-то чтобы ЛУЧШЕ было. Сейчас сфинкс спокойно себе работает, но у меня сильное желание навернуть эластиксерч, просто потому что по нему больше инфы можно найти в инете (сфинкс как я понял это от снг разраба), обмазаться всякими морфологическими словарями и вообще апи удобное, DX так сказать. Боюсь только что он на джаве работает и могут возникнуть подводные камни, о которых я еще не догадываюсь. Говорят что память жрет как падла, но на сайте нужно примерно 3-5к итемов индексировать, я надеюсь что он будет до 1-1.5гб использовать
123.png21 Кб, 1029x174
765 1936219
Для пыхи на расстоянии вытянутой руки существуют какие-то космические вещи. Вот понадобилось сделать фильтр по полу юзеров, который они нигде не вводят, и просто сразу по первой ссылке. Представляю как бы я ебался
766 1936295
Попал в тупик. Мне нужно получить переменные $nameitem[0], $nameitem[1] и $nameitem[2], но почему-то когда заканчивается цикл while, единственная переменная, что остаётся это $nameitem[2] (остальные становятся пустыми). Я даже понимаю, что дело в особенности цикла while, но не знаю как это исправить и получить все переменные.

while ($row = mysqli_fetch_row($result)) {
for ($j = 0 ; $j < 3 ; ++$j)
{
$nameitem[$j] = $row[$j];
};
}
767 1936309
>>1936295
Инициализируй переменную до цикла.
$nameitem = [];
768 1936324
>>1935340
Вернусь к вопросу, посоветуйте книги по ПХП
769 1936955
>>1936044

>А битрикс


Джамшуты отдыхают здесь.
Это ебучее говно из портала в ад, который в дырке сельского туалета куда срали каждый день без оставновки со времён Екатерины II.
Как такое можно было сотворить я не представляю, простые вещи которые в той же ларе сделаешь за минут 20 на этом говне можешь делать несколько дней. Даже сука проект развернуть не так просто, можно целый день проебаться, структуры базы нет, все в инфоблоках, id которых встречаются по всему коду, качаешь базу себе, то кодировка 1251, то mbstring.func_overload надо, то не надо, то блядь база проекта с новым ядром не совместима, выкачивать папку /bitrix по фтп с прода весом пару гигов чтобы сука оно просто развернулось локально.
Vvv.png368 Кб, 600x720
770 1936992
>>1917260 (OP)
Кто-нибудь уже делал задачу про компанию "Вектор" в ООП-части гайда?
771 1937053
>>1936955
а как вам crm от SAP?
image.png269 Кб, 463x408
772 1937078
Пацаны, помогите.

В Laravel response()->json(['value' => (float)$value]) возвращает цифру в научной нотации, то есть 5.54e6

Как пофиксить?

json_encode так не делает.
773 1937144
>>1936992

Я бы посоветовал поискать на phpclub.tech, но он не открывается. Тогда можно попробовать поискать на архиваче: https://www.google.com/search?q=клуб+php+ооо+вектор+site:arhivach.net
774 1937224
Как в ларавеле работать с файлами по фен-шую? Допустим, есть товары, у которых есть название, цена, описание и картинка. Я гуглил и нашёл что-то такое:
if ($request->hasFile('image')) {
$input['image'] = time() . '.' . $request->image->getClientOriginalExtension();
$request->image->move(public_path('images'), $input['image']);
}

Картинка при этом сохраняется в папку /public/images/, а путь к ней ($input['image']) записываем в базу отдельно, через create($input).

Однако, в документации описан другой способ:
$newFileName = time() . '-' . $request->file('image_url')->getClientOriginalName();
$path = $request->file('image_url')->storeAs('public', $newFileName);

Он записывает файл в каталог /storage/public/ и если сделать сразу $item->update($data), то в базу запишется путь к временному каталогу файла (на кой хрен - непонятно), поэтому я подшаманиваю название:
$data['image_url'] = $newFileName;
$result = $item->update($data);
И затем, чтобы сторедж был доступен из паблика, прописываю
php artisan storage:link
И обращаюсь из вью так:
<img src="{{asset("storage/$item->image_url")}}">

Вопрос: Какой способ более правильный? Или я вообще дичь тут какую-то нагнал?
775 1937231
>>1937224
А если придет не изображение? Тут же ни в одном из вариантов не проверяется что за файл.
776 1937232
>>1937231
Проверяется.
$this->validate($request, [
'title' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);

Меня просто интересует сама концепция, куда лучше загружать файл? В сторедж или паблик? И конструкция file('image_url')->storeAs('public', $newFileName) - она, получается свежая, раньше не было? Раз нигде не упоминается, кроме документации.
777 1937262
>>1936117
А можешь пояснить чем плох этот api?
778 1937328
>>1936117
Только бля, без хуйни. Просто аргументированно скажи почему это плохой дизайн. Какие у него могут быть проблемы и тд. Я хочу разобраться
779 1937549
Как работает процесс оплаты на сайтах?
780 1937896
>>1937224
В первом варианте ты руками копируешь файл в public/ папку сайта
Во втором ты сохраняешь файл в свой публичный диск(концепция ларавела, который по дефолту находится в storage/public/. Нюанс в том что ты можешь в конфиге поменять "драйвер" публичного диска на какое-то облако, и тебе особо ничего не нужно будет менять в коде, а в первом случае придется переписывать. Всё это дело можно посмотреть в config/filesystems.php
781 1937929
>>1937896

>storage/public/


То есть, по фен-шую нужно закачивать картинки в /storage/public/ и линковать это хранилище в /public, так? Окей, понял, принял.
782 1937965
>>1918124

>Вроде бы пиздеть не должны



С чего бы? Потом хрюша скажет что это не для вас написано и вообще вы нам не подходите, много спрашиваете
783 1937972
>>1918124
Сеньор по определению мультиязычник, а не пыхарь. То есть может делать побольше существенно, и похеру на каком языке. Так что тут как бы сам вопрос не совсем корректно стоит.
784 1937975
>>1918168

>Так всегда было и будет. :)



А потом кабанчик нанимает ребят в кожанке чтобы тебе дали пиздюли для повышения работоспособности
785 1937981
я совсем новый и тупой.

{"user_id":10,"session_id":"2c2l3h4ii271aojentejtdcmh3","products":[{"product_id":15,"options":{"15":[45,47],"18":52},"quantity":1,"price":1500},{"product_id":16,"options":{"15":[47,48],"18":51},"quantity":2,"price":1000}]}

как с этого получить именно products > product_id > значение?
786 1938015
>>1937975
Ох блт, в каком ужасном мире ты живешь. Сочувствую тебе искренне.
787 1938089
>>1937981
Если представить что это пхп массив то products[0]['product_id']
788 1938893
Объясните как выводить эту хуйню чтобы было видно все буквы

$arr = ['d' => ['f', 'e' ],'a' => ['c', 'b'] ];

А ещё как сортировать по алфавиту - чтобы в а были б и ц и т.д.
789 1938905
>>1936147
Первая ссылка не рабочая
790 1938955
Допустим, есть магазин товаров. У них цена в долларах. Нужно сделать возможность посетителю менять отображаемую цену на рубли и обратно. Как это лучше сделать?

а) Ввести дополнительное поле в таблицу и в зависимости от реквеста, вытаскивать цену из нужного поля.
б) Оставить одно поле цены, но проверять реквест, и если в нём указана другая валюта, налету преобразовывать цену перед отправкой посетителю.

Какой подход более правильный? У меня ощущение, что меня за любой будут ругать.
791 1938963
>>1938955
Б лучше. Взять какую-то валюту за базовую и на основе неё считать цены в других валютах.
При варианте А придется следить за 2мя полями (при 2х валютах) в таблице, в которых считай одна цена лежит. И при росте кол-ва валют соответственно будет расти кол-во таких полей.
792 1938969
>>1938963
Зато обновление цен будет проходить один раз при смене цены товара (или курса) в админке. А при первом варианте сервер будет пересчитывать все цены на каждом запросе. При хайлоаде будет гораздо выгоднее добавить бесплатное поле в таблице (пусть даже сотню полей), чем нагружать проц.

Ну, мне кажется, что так ответят гуру.
793 1939020
>>1938963
>>1938969
Скажешь гуру, что они оторванные от жизни долбодятлы.
В реальности у продавцов могут быть разные цены для разных валют, не согласованные с курсом, к примеру потому, что по каким то причинам им предпочтительнее одна валюта чем другая, и цена с учетом курса может различаться. Логики особой тут нет, но обычно это именно так. Поэтому должно быть множество цен - для каждой из валют. Рассчет по курсу применим только при предварительной договоренности с конкретным продавцом, так как их "а вот у меня курс лучше!" будет в каждом втором случае. Ну, это скорее из реального "коммерческого опыта" соображение.
я делал вообще всегда отдельной таблицей - ид товара - ид валюты - цена.
794 1939043
>>1939020
Ок, понял, принял.
795 1939077
>>1938969

То, что касается производительности, надо измерять, а не гадать. Я сомневаюсь, что пересчет валюты (одно умножение) хоть как-то повлияет на время выполнения запроса.
796 1939079
>>1938905

Она рабочая, просто надо домотать до задачи. Скопирую тогда сюда:

Есть Гостиница, в ней есть Номера. Для каждого Номера известен его номер, количество Гостей, которое в него влезет, а также цена за сутки. В Гостиницу приезжают Гости. Нужно сделать ООП-модель Гостиницы с такими возможностями:

- получить список свободных номеров на определенную дату
- получить список свободных номеров, которые будут свободны в определенный диапазон дат (от A до B)
- дан список Гостей и диапазон дат, в которые они хотели бы заселиться. Необходимо подобрать им самый дешевый и маленький Номер, который их вместит и который свободен в это время.
- то же самое, но при отстутствии одного подходящего номера для Гостей разрешается заселить их в несколько номеров, опять же, начиная с самых дешевых. Например, приехало 3 Гостя, но все 3-местные номера заняты и мы выделяем 2 2-местных, или 3 1-местных или 1-местный + 2-местный.
- зарегистрировать проживание данных Гостей в данных Номерах на данный период
- получить историю заселения Номера (кто в нем когда жил)
- получить историю заселения Гостя (в каких номерах он жил)
- получить статистику доходов Гостиницы за данный диапазон дат (в день A отдель заработал X тугриков, в день B - Y тугриков и так далее)

То есть надо создать классы, и сделать в них методы, которые вычисляют то, что описано выше.
797 1939082
>>1938893

var_dump($arr);
print_r($arr);
echo json_encode($arr, JSON_PRETTY_PRINT);

Сортировать с помощью функций типа sort, usort.

>>1937549

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

Периодически тебе приходит на почту отчет со списком оплат: за такой-то заказ получено столько-то денег. И периодически тебе на счет переводят деньги.
798 1939087
>>1937328

Он плох тем, что некрасивый и негибкий. Сравни сам:

/index.php?controller=product&method=list&price_from=2000
/product/list?price_from=2000

Также, такую систему могут не поддерживать системы документирования вроде swagger, как ты будешь делать документацию на API?

А так, использовать можно, не думаю, что тут требуется middleware. Оно вообще не для этого, а для того, чтобы поменять что-то в запросе или что-то в ответе (заголовок какой-нибудь добавить).
799 1939088
>>1939020
В конечном счете пляшем от бизнес требований.
На какой-нибудь бирже нужны динамичные цены, зависящие от какой-то базовой валюты.
В маркете тот же стим нужны фиксированные цены
800 1939098
>>1939088
ну в принципе да, речь шла именно об обычных маркетах барахолках. у бирж там отдельная тема вообще.
801 1939145
Сап, а как лучше сделать удаление тестов в задаче на тестхаб? Удалять полностью из базы или делать отдельное поле isDeleted? Если удалять, то оставлять ли в базе вопросы и ответы, теги? Не знаю, насколько такой запрос будет нагружать бд, не легче ли все оставить? Алсо, еще вопрос про порядок вопросов - в базе есть поле sequence_number, и если допустим при редактирование юзер меняет местами вопросы или удаляет их, то просто обновлять всем вопросам это поле или может есть какой-нибудь хитрый алгоритм?
802 1939625
>>1917260 (OP)
Как сделать так чтоб при объявлении (создании нового ) объекта он автоматически добавлялся в глобальный массив?
803 1939639
>>1939625
ПОМОГАЙТЕ БЫСТРЕЕ!!!!!
Screenshot.png25 Кб, 754x506
804 1939727
В классе нельзя просто так новые переменные объявлять чи шо?
Screenshot.png18 Кб, 554x299
805 1939750
Хочу сделать так чтоб исходя из одной переменной объекта (profession) выдавались значения всем остальным переменной путём if profession (константа) тогда...

ПОЧЕМУ НЕ ДАЁТ и как это тогда сделать?
806 1939764
>>1939727
>>1939750
Модификатор доступа укажи https://www.php.net/manual/ru/language.oop5.properties.php
И if должен быть внутри функции и ты должен вызывать эту функцию за пределами класса
807 1939770
>>1939764

>и ты должен вызывать эту функцию за пределами класса


Так это ведь постоянно функцию вызывать придётся после объявления объёкта. И функций тоже наверное дохера надо, оно же только 1 return сможет сделать.
То-есть нужны будут функции define salary, define coffee, define papers... Жесть?!
808 1939797
ВЫ СПИТЕ ШТОЛИ???? ПОМОГИТЕ БЫСТРЕЕЕ!!!!
809 1939803
>>1939770
Да ничего сложного

Создаёшь класс
class Zalupa {
// Тут твои переменные класса, с модификаторами доступа
public function huita () {
// Вот тут твой if
}
}

А потом создаёшь экземпляр и вызываешь метод
$zalupa =. new Zalupa();
$zalupa->huita();
810 1939810
>>1939803
После $zalupa->huita(); у всех показателей залупы выставятся нужные значения? А можно сделать так чтоб они выставлялись сразу при создании новой залупы обозначением професси в конструкте (скобочках), без строчки с вызовом функции?
811 1939812
>>1939810
Гугли конструктор класса
812 1939832
>>1939812
Хмммммм.......... Наверное - понял!!!
813 1939917
Подскажите ПОЖАЛУЙСТА в какой програмке можно НОРМАЛЬНО писать и ПРОВЕРЯТЬ/ТЕСТИРОВАТЬ код на PHP? А то мне больше не нравятся - интернетные штучки!
814 1940300
>>1939145

Удалять может быть плохо, так как теряются результаты прохождения. Человек старался, проходил тест, а результаты удалили. Проще использовать isDeleted (этот подход называется soft delete). Или можно заморочиться и смотреть: есть результаты прохождения? Если нет - то удалять целиком, если есть - то скрывать.

Удалять надо, конечно, вместе с вопросами и тегами. При десятке-другом вопросов нагружать БД сильно не должно, но ты можешь сделать измерения и проверить.

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



Наверно, придется обновлять все значения.
815 1940303
>>1939727

Внутри конструкции class { ... } идут только определения констант, полей и методов.

class A
{
// константа
private const X = 1;
// поле
private $x = 1;
// метод
public function doSomething($a) { ... }
}

Там нельзя писать произвольный код, определять переменные или писать слово if. Произвольный код и создание переменных пишут внутри методов.
816 1940304
>>1940303
Мы пока вот так сделали... Понадеемся што - сработает!

class Employee
{
const PROFESSION_MANAGER = "Менеджер";
const PROFESSION_MARKETER = "Маркетолог";
const PROFESSION_ENGINEER = "Инжинер";
const PROFESSION_ANALISER = "Аналитик";

public $name;
protected $workPlace; // В какой департамент назначен работник
protected $profession; // Профессия работника
protected $rank; // Ранг работника
protected $isLeader; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct()
{
$this->name = $name;
$this->workPlace = $workPlace;
$this->profession = $profession;
$this->rank = $rank;
$this->isLeader = $isLeader;
if ($this->profession = Employee::PROFESSION_MANAGER)
{
$this->salary = 500;
$this->coffeConsumption = 20;
$this->papers = 200;
}
elseif ($this->profession = Employee::PROFESSION_MARKETER)
{
$this->salary = 400;
$this->coffeConsumption = 15;
$this->papers = 150;
}
elseif ($this->profession = Employee::PROFESSION_ENGINEER)
{
$this->salary = 200;
$this->coffeConsumption = 5;
$this->papers = 50;
}
elseif ($this->profession = Employee::PROFESSION_ANALISER)
{
$this->salary = 800;
$this->coffeConsumption = 50;
$this->papers = 5;
}
}
}
816 1940304
>>1940303
Мы пока вот так сделали... Понадеемся што - сработает!

class Employee
{
const PROFESSION_MANAGER = "Менеджер";
const PROFESSION_MARKETER = "Маркетолог";
const PROFESSION_ENGINEER = "Инжинер";
const PROFESSION_ANALISER = "Аналитик";

public $name;
protected $workPlace; // В какой департамент назначен работник
protected $profession; // Профессия работника
protected $rank; // Ранг работника
protected $isLeader; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct()
{
$this->name = $name;
$this->workPlace = $workPlace;
$this->profession = $profession;
$this->rank = $rank;
$this->isLeader = $isLeader;
if ($this->profession = Employee::PROFESSION_MANAGER)
{
$this->salary = 500;
$this->coffeConsumption = 20;
$this->papers = 200;
}
elseif ($this->profession = Employee::PROFESSION_MARKETER)
{
$this->salary = 400;
$this->coffeConsumption = 15;
$this->papers = 150;
}
elseif ($this->profession = Employee::PROFESSION_ENGINEER)
{
$this->salary = 200;
$this->coffeConsumption = 5;
$this->papers = 50;
}
elseif ($this->profession = Employee::PROFESSION_ANALISER)
{
$this->salary = 800;
$this->coffeConsumption = 50;
$this->papers = 5;
}
}
}
817 1940339
Имеется объект с свойством-массивом в нём.
Имеется объект, который при определённом значении одного из своих свойств должен залазить в свойство-массив первого объекта.

КАК ЭТО СДЕЛАТЬ?
818 1940341
>>1940304

>$this->name = $name;


>$this->workPlace = $workPlace;


>$this->profession = $profession;


>$this->rank = $rank;


>$this->isLeader = $isLeader;


Конструктор это из воздуха должен брать? Добавь аргументы в метод. И да, за такой elseif по рукам бьют. Мало того что выглядит плохо, так еще всё на магических числах.
819 1940346
Вопрос по вебпаку/миксу. Допустим, я в своем app.css делаю импорт bootstrap.scss. Из-за этого мне при изменении любой строчки приходится ждать по 6-7 секунд пока все скомпилится чтобы глянуть на изменения. Можно ли как-то закешировать этот bootstrap.scss или что-то около того?
Наткнулся на функцию mix.extract, вроде бы для чего-то похожего предназначена, но хз, профита из нее извлечь не получается.
820 1940410
>>1917260 (OP)

>тебе надо установить Апач


А почему Апач, а не nginx? Апач намного лучше?
821 1940450
>>1940410
Лучше Опен сервер
822 1940451
>>1940341

>Конструктор это из воздуха должен брать?


Да, эти штучки будут задаваться в скобках при объявлении объекта.

>И да, за такой elseif по рукам бьют. Мало того что выглядит плохо, так еще всё на магических числах.


Не понял ничего.
823 1940483
>>1940450
Ну, ОП в шапке же пишет - тебе надо установить Апач. А че, почему?
824 1940508
>>1940483
ОП человек занятой, бабки зашибает. Нет у него времени гайды и шапку 10-летней давности на форуме для анимешников переписывать.
825 1940514
>>1940508
Ну, тогда че, лучше nginx?
826 1940517
>>1940339
ПОМОГИТЕ БЫСТРЕЕЕ!!!!
827 1940552
>>1940339

>КАК ЭТО СДЕЛАТЬ?


При определённом значении одного из своих свойств имеющегося объекта, залезаешь в свойство-массив первого объекта.
828 1940559
>>1940552
ТАК СРАБОТАЕТ?

<?php

error_reporting(-1);

class Department
{
public $workers = array();
}

$procurementDepartment = new Department;

$sellDepartment = new Department;

$adDepartment = new Department;

$logisticDepartment = new Department;

class Employee
{
public $name;
protected $workPlace; // В какой департамент назначен работник
protected $profession; // Профессия работника
protected $rank = 1; // Ранг работника
protected $isLeader = "Не руководитель"; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct()
{
$this->workPlace = $workPlace;
}
if ($this->workPlace == "Закупки")
{
$procurementDepartment->workers = $this;
}
}
}
828 1940559
>>1940552
ТАК СРАБОТАЕТ?

<?php

error_reporting(-1);

class Department
{
public $workers = array();
}

$procurementDepartment = new Department;

$sellDepartment = new Department;

$adDepartment = new Department;

$logisticDepartment = new Department;

class Employee
{
public $name;
protected $workPlace; // В какой департамент назначен работник
protected $profession; // Профессия работника
protected $rank = 1; // Ранг работника
protected $isLeader = "Не руководитель"; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct()
{
$this->workPlace = $workPlace;
}
if ($this->workPlace == "Закупки")
{
$procurementDepartment->workers = $this;
}
}
}
829 1940568
>>1940346
Я не шарю, но scss всегда почему-то весь пересобирается, тут как вариант импортировать не весь бутстрап а отдельные модули его, например grid, table и т.д.
830 1940571
>>1917260 (OP)
А оп кстати все еще пхпшник или на голанг/джаву ушел?
831 1940648
Я решил задачу про кубики.

<?php

$anonDice1 = mt_rand(1, 6);
$anonDice2 = mt_rand(1, 6);

$compDice1 = mt_rand(1, 6);
$compDice2 = mt_rand(1, 6);

$anonSum = $anonDice1 + $anonDice2;
$compSum = $compDice1 + $compDice2;

echo "У Анонче выпало $anonDice1 и $anonDice2. У Компухтера $compDice1 и $compDice2.\n";

if (($anonDice1 == $anonDice2) && ($compDice1 == $compDice2)) {
echo "2 дабла. ПОВТОРНЫЙ РАУНД!";
exit();
} elseif ($anonDice1 == $anonDice2) {
echo "Компухтер выиграл.";
exit();
} elseif($compDice1 == $compDice2) {
echo "Анонче выиграл.";
exit();
}

if ($anonSum > $compSum) echo "Анонче выиграл.";
else echo "Компухтер выиграл.";


Скоро я начну получать деньги?
831 1940648
Я решил задачу про кубики.

<?php

$anonDice1 = mt_rand(1, 6);
$anonDice2 = mt_rand(1, 6);

$compDice1 = mt_rand(1, 6);
$compDice2 = mt_rand(1, 6);

$anonSum = $anonDice1 + $anonDice2;
$compSum = $compDice1 + $compDice2;

echo "У Анонче выпало $anonDice1 и $anonDice2. У Компухтера $compDice1 и $compDice2.\n";

if (($anonDice1 == $anonDice2) && ($compDice1 == $compDice2)) {
echo "2 дабла. ПОВТОРНЫЙ РАУНД!";
exit();
} elseif ($anonDice1 == $anonDice2) {
echo "Компухтер выиграл.";
exit();
} elseif($compDice1 == $compDice2) {
echo "Анонче выиграл.";
exit();
}

if ($anonSum > $compSum) echo "Анонче выиграл.";
else echo "Компухтер выиграл.";


Скоро я начну получать деньги?
832 1940687
>>1940648
elseif ($anonDice1 == $anonDice2) {
echo "Компухтер выиграл.";
exit();
} elseif($compDice1 == $compDice2) {
echo "Анонче выиграл.";
exit();
}
Это что и зачем?
833 1940692
>>1940687
если выпадает дабл, то этот игрок проиграл
834 1940697
>>1940692
Это ты от себя придумал? Там такого не было вроде
Screenshot.png95 Кб, 1297x775
835 1940700
Не понял??? Шо за наёб?
836 1940701
>>1940700
Всё понял.
837 1940733
изи, еще одна задача в копилку
https://ideone.com/4hi8U9
838 1940783
Устанавливать линукс или оставить винду? Что предпочтительнее? Надо ли будет знать на работе линух? Если да, то хотел бы тогда поставить ubuntu, она подойдет? Спс
839 1940816
>>1940700
Переменные класса объявлять надо вне функций, до конструктора.
И поменяй местами выражения, тумкало - ты присваиваешь неизвестно чему неизвестно что.
840 1940824
>>1940700
>>1940816
Поясняю - в мануале аргументы в конструкторе видишь?
А у тебя - у тебя аргументов нет. Есть неведома херня,
которая возникла из ниоткуда.
плюс ни там, ни там нет переменных класса.
так что я хз что ты хотел добиться.
841 1940847
>>1940783

>Устанавливать линукс или оставить винду?


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

>Что предпочтительнее?


Linux

>Надо ли будет знать на работе линух?


Да

>Если да, то хотел бы тогда поставить ubuntu, она подойдет?


Лучше начинать с убунты или минта
Screenshot.png41 Кб, 842x706
842 1940900
>>1940552
Не работает - твоя магия... Не хочет оно к массиву внешнего объекта приписывать объект.
анон 843 1940966
JS или PHP, какой язык сложнее?
844 1940971
>>1940966
Почти одинаково, скриптовые языки. Правда на РНР еще надо безопасность маленько знать, чтобы тебя не хакнули, не бэкдорнули, не эксплоитнули, не инъекцировали.
845 1940996
>>1940971
Короче, был наполеоновский план запилить несколько своих сайтов, перед этим выучив верстку и js. Бэк мечтал написать на ноде. С фронтендом разобрался, запилил несколько страниц шаблонов, и после признался самому себе, что у меня к куям отсутсвтует дизайнерский талант и выглядят мои страницы не очень. Решил мозга не ебать, и запилить на вордпрессе, взяв готовую тему (уже нашел красивую). Для вордпресса говорят пхп нужно знать. JS я типа как синтаксис и обращение с DOMом "выучил", в той степени, что могу всякие выпадающие меню и слайдеры делать сам с нуля. Потому и спросил что сложнее. Буду сейчас пыху учить.

Какие вообще знания php нужны для вордпресса? Какой учебник актуален для последней версии? Можно и на английском. Спасибо.
846 1941011
>>1940996
Если ты пиздец как торопишься, то смотрит обучающие всякие видео по вордпрессу.

А если не торопишься и хочешь хорошо подготовиться, то тогда надо идти по шапке треда, учить голую пыху по задачам, мануалам, ООП пыхи учить. Про безопасность читать, а то вдруг тебя хакнут https://www.youtube.com/watch?v=dOaGvMaFkbY
847 1941027
>>1941011
В шапке что-то совсем беда, кроме мануала все лохматых годов...

Вот это вот Learn PHP 8: Using MySQL, JavaScript, CSS3, and HTML5 читал кто-нибудь, аноны, стоящая книжка?
848 1941029
>>1941027
Как по мне лохматость не слишком страшна. Не так уж много изменилось. Базовые принципы остались те же. ИМХО!
849 1941105
>>1941027
Почитай котерова и симдянова рнр 7. Именно по языку большой охват. Гит, композер, бд. Хтмл и цсс это лучше отдельно посмотреть.
850 1941113
Призываю доброанона, который постоянно рейтит мои первые потуги в пхп!
Решал задачу из гайда для нюфанек на написание суммы прописью.
Тужился около двух недель, в перерывах между основной работой и семейными делами, но упрямо не бросал ее. В итоге родил вот что:
https://ideone.com/Pw4DPm
Постарался кратко, с максимально необходимыми комментариями.
Подскажите, где я хуй?
p.s. Где поучиться клинкодингу? Чувствую, если сейчас буду упускать какие-то моменты, потом переучиться будет ОСНЕ сложно.
p.p.s. Платиновый вопрос: почему phpformatter, пидорас такой, не пропускает запись массива вида $x=[] ?
851 1941123
>>1940648
Условия задачи жопой читал?
Если дабл у обоих- ничья, и смысла играть дальше нет.
Выпадение дабла у одного из игроков ничего не меняет, сравниваются суммы.
Что выдаст твоя программа, если суммы очков Анона и компьютера будут равны?
852 1941131
>>1939917

Согласен, программы больше чем на 20-30 строк удобнее запускать у себя, а не через сайты. Для этого тебе надо:

1) установить PHP, вот один из (немного устаревших) гайдов: https://github.com/codedokode/pasta/blob/master/soft/php-install.md

2) установить IDE или редактор кода на твой выбор. Платно: PhpStorm, бесплатно: VS Code (+ плагины для PHP), Sublime Text, Eclipse for PHP.

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

Если все сделать правильно, то ты сможешь запускать программу одной кнопкой из редактора.
853 1941137
>>1941113
Дружище, дрочить 2 недели такую задачу, пусть и по вечерам, это пиздец. Ты же понимаешь, что у тебя проблема с реализацией алгоритма? Программирование для знающих математику. Кто бы что не говорил. Все эти разговоры, что на деле хватает начальной алгебры — бред. Я даже не знаю как тебе помочь. Ну, реализовал ты кривоработающий код, спиздил куски, а толку? Ты же себя не наебешь, дружаня. Математика качает мозг. Решение подобных задач не должно вызывать решения в течении 2х недель.
854 1941139
>>1940304

Вместо гигантского elseif можно сделать массив, вида

[профессия => [зарплата, кофе, страницы]]

и брать данные из него. Будет компактнее.

Также, будь внимательнее. Здесь:

($this->profession = Employee::PROFESSION_MANAGER)

Нужно писать не =, а == или ===.

Когда допишешь, советую запостить код тут на проверку.

>>1940410

Возможно, совет немного устарел.

Вообще, чтобы запускать у себя на компьютере код, проще всего использовать встроенный в PHP сервер без всяких Апачей. А если хочется заморочиться то да, можно поставить nginx + php-fpm, это будет конфигурация как на продакшене.
855 1941143
>>1939917
Качаешь с сайта рнр архив под винду, если ты под виндой, запускаешь консоль из папки с разархивированным пхп дистрибутивом, пишешь php -a и выполняешь код прямо в консоле в интерактивном режиме.
856 1941153
>>1940559

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

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

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

Тогда уж логичнее передавать не название департамента, а сам объект департамента в конструктор. Это один вариант решения проблемы. Другой вариант - можно вообще не хранить в Работнике, к какому департаменту он относится. Код тогда будет выглядеть так:

// Создаем свободного работника
$e= new Employee(....);
// принимаем его на работу в Департамент
$someDepartment->addEmployee($e);

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

Также, нехорошо, что ты залезаешь внутрь объекта Департамента и напрямую что-то добавляешь в массив. Правильнее вызывать метод addEmployee, как описано в коде выше, а массив закрыть от прямого доступа снаружи. Почему? Ну например, может быть Департаменту надо обновлять какую-то информацию при добавлении Работника, и если добавлять его напрямую в массив, Департамент об этом не узнает. Прочти-ка про инкапсуляцию: https://github.com/codedokode/pasta/blob/master/php/encapsulation.md
856 1941153
>>1940559

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

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

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

Тогда уж логичнее передавать не название департамента, а сам объект департамента в конструктор. Это один вариант решения проблемы. Другой вариант - можно вообще не хранить в Работнике, к какому департаменту он относится. Код тогда будет выглядеть так:

// Создаем свободного работника
$e= new Employee(....);
// принимаем его на работу в Департамент
$someDepartment->addEmployee($e);

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

Также, нехорошо, что ты залезаешь внутрь объекта Департамента и напрямую что-то добавляешь в массив. Правильнее вызывать метод addEmployee, как описано в коде выше, а массив закрыть от прямого доступа снаружи. Почему? Ну например, может быть Департаменту надо обновлять какую-то информацию при добавлении Работника, и если добавлять его напрямую в массив, Департамент об этом не узнает. Прочти-ка про инкапсуляцию: https://github.com/codedokode/pasta/blob/master/php/encapsulation.md
857 1941157
>>1940571

Не ушел.

>>1940648

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

>>1940697

Да, не было, но в принципе можно и добавить такое правило.

>>1940700

У тебя в определении конструктора нет аргументов в скобочках:

public function __construct($x, $y, $z <-- вот тут) { ... }
858 1941160
>>1940733

Вместо числа 3 (непонятно, что это) лучше было бы использовать переменную $percent, равную 3. И число 5000 тоже заменить на переменную.

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

>>1940783

Можно установить обе системы. Если страшно переходить, можно попробовать сначала установить линукс в виртуальной машине.
859 1941168
>>1941153
Благодарю за развёрнутый ответ. Буду - пробовать!
860 1941176
>>1941137
Ни одного куска кода нигде спизжено не было, к каждой строчке пришел сам.
Вместо хейта можно было бы указать на слабые стороны, не? Если кроме "все хуёво" нечего сказать, то и говорить необязательно.
861 1941180
>>1941113

Не определяй функции с именами внутри других функций (анонимные функции - можно). Так как функцию с именем можно определить лишь один раз, второй раз будет ошибка. Если у тебя вызывать функцию summ_to_text() дважды, то на втором вызове программа упадет. PHP это не JS, тут так делать нельзя.

> $splitArray=[];


Лучше назвать это $groups

> $i=$i+0


Если ничего не требуется делать, то тут можно оставить пустое место.

Брать 3 последние цифры числа проще через $i % 1000 (остаток от деления на 1000). А все, кроме последних цифр получается как floor($i / 1000).

> $regexpLastNumber1='/^[1]$/';


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

$lastDigit = $n % 10; // последняя цифра
if ($lastDigit == 1) ...

> discharge_sum ($dischargeValue,$x)


Если вместо $x передавать 3 формы слова, то получилась бы универсальная функция, которая умеет выбирать формы для любых слов, а не только тысяч, миллионов, рублей.

> $spelN


Лучше $number

> $spelN=array_reverse($spelN);


Это коряво. Лучше передавать массив в функцию в правильной форме, чтобы она не занималась его переворачиванием. Более того, переворачивание логичнее всего сделать в splittingIntoGroups(), чтобы она сразу возвращала массив в правильном порядке.

Получается странная функция: в нее надо передать массив чисел в обратном порядке, и она вернет массив слов - тоже в обратном порядке.

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

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

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

> $textArray[]


Лучше назвать $words

> Эта функция меняет фразы "один тысяча" и "две тысяча" на "одна тысяча" и "две тысячи" соответственно


Это очень коряво. Правильнее было бы передавать род в функцию, которая преобразует число в текст, чтобы она брала "одна" вместо "один". То есть у функции 2 аргумента - число и род.

Плюс, функция correct_thousand опять написана нелогично. Она принимает на вход какой-то массив, и почему-то заменяет в нем элемент номер 1. Где тут логика (если не смотреть на остальной код)? Логичнее было бы передавать в нее не весь массив, а только нужную строку. Опять нарушение разделения ответственности - функция "знает" то, что знать ей не требуется и занимается не своим делом.

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

Например: функция принимает 3-разрядное число и возвращает массив слов (или строку, тоже можно).

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

Например, так:

слова = [];
для каждого 3-разрядного числа:
если это число > 0, то:
добавляем в слова[] написание этого числа
доабвляем в слова[] нужную форму слов рубль, тысяча, миллион

> delete_double_space


> splittingIntoGroups



Нужно использовать единый стиль в именах.

> $regexpDoubleSpace='/(\\s){2,}/ui';


>$textAfterDeleteDoubleSpace=preg_replace($regexpDoubleSpace,' ',$textForDeleteSpace);


>return $textAfterDeleteDoubleSpace;



Тут можно написать короче:

return preg_replace('/(\\s){2,}/ui', $text);

> $dischargeArraySpelN[roubles]


Пропущены кавычки у roubles.

> if ($splitArray[0]==0){


> $wordAfterRoubles='рублей';


Это (выбор формы слова) ответственность функции discharge_sum и это должно быть написано в ней, а не тут.

В общем, код стоит доработать. Он станет и короче, и читабельнее.
861 1941180
>>1941113

Не определяй функции с именами внутри других функций (анонимные функции - можно). Так как функцию с именем можно определить лишь один раз, второй раз будет ошибка. Если у тебя вызывать функцию summ_to_text() дважды, то на втором вызове программа упадет. PHP это не JS, тут так делать нельзя.

> $splitArray=[];


Лучше назвать это $groups

> $i=$i+0


Если ничего не требуется делать, то тут можно оставить пустое место.

Брать 3 последние цифры числа проще через $i % 1000 (остаток от деления на 1000). А все, кроме последних цифр получается как floor($i / 1000).

> $regexpLastNumber1='/^[1]$/';


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

$lastDigit = $n % 10; // последняя цифра
if ($lastDigit == 1) ...

> discharge_sum ($dischargeValue,$x)


Если вместо $x передавать 3 формы слова, то получилась бы универсальная функция, которая умеет выбирать формы для любых слов, а не только тысяч, миллионов, рублей.

> $spelN


Лучше $number

> $spelN=array_reverse($spelN);


Это коряво. Лучше передавать массив в функцию в правильной форме, чтобы она не занималась его переворачиванием. Более того, переворачивание логичнее всего сделать в splittingIntoGroups(), чтобы она сразу возвращала массив в правильном порядке.

Получается странная функция: в нее надо передать массив чисел в обратном порядке, и она вернет массив слов - тоже в обратном порядке.

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

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

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

> $textArray[]


Лучше назвать $words

> Эта функция меняет фразы "один тысяча" и "две тысяча" на "одна тысяча" и "две тысячи" соответственно


Это очень коряво. Правильнее было бы передавать род в функцию, которая преобразует число в текст, чтобы она брала "одна" вместо "один". То есть у функции 2 аргумента - число и род.

Плюс, функция correct_thousand опять написана нелогично. Она принимает на вход какой-то массив, и почему-то заменяет в нем элемент номер 1. Где тут логика (если не смотреть на остальной код)? Логичнее было бы передавать в нее не весь массив, а только нужную строку. Опять нарушение разделения ответственности - функция "знает" то, что знать ей не требуется и занимается не своим делом.

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

Например: функция принимает 3-разрядное число и возвращает массив слов (или строку, тоже можно).

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

Например, так:

слова = [];
для каждого 3-разрядного числа:
если это число > 0, то:
добавляем в слова[] написание этого числа
доабвляем в слова[] нужную форму слов рубль, тысяча, миллион

> delete_double_space


> splittingIntoGroups



Нужно использовать единый стиль в именах.

> $regexpDoubleSpace='/(\\s){2,}/ui';


>$textAfterDeleteDoubleSpace=preg_replace($regexpDoubleSpace,' ',$textForDeleteSpace);


>return $textAfterDeleteDoubleSpace;



Тут можно написать короче:

return preg_replace('/(\\s){2,}/ui', $text);

> $dischargeArraySpelN[roubles]


Пропущены кавычки у roubles.

> if ($splitArray[0]==0){


> $wordAfterRoubles='рублей';


Это (выбор формы слова) ответственность функции discharge_sum и это должно быть написано в ней, а не тут.

В общем, код стоит доработать. Он станет и короче, и читабельнее.
862 1941181
>>1941137

Но в этой задаче нет математики сложнее, чем деление с остатком. Не думаю, что изучение матанализа тут как-то поможет. Тут надо уметь грамотно разбивать код на функции, определять их входные аргументы и результаты, а математика тут особо не нужна.
863 1941226
Вопрос к рабочим анонимусам. Как на галерах обстоит вопрос с рабочими ПК? У каждого свой личный? Мне никто не запретит, к примеру, накатить на рабочий комп любимый арчик с тайловым wm и поставить аниме на заставку?
864 1941232
>>1941176
Анон, никакого хейта. Ты над примитивной задачей ломал голову 2 недели. Тебе определённо стоит задуматься над тем нужно ли тебе программирование. Если уж так сильно хочется, то определись, что ты хочешь программировать. Может стоит взглянуть в сторону бухгалтерии с их 1С? Есть неплохая книга https://www.labirint.ru/books/723474/ попробуй из неё для начала решить хоть сколько-то задач, чтобы затем браться за то, что в шапке. У тебя проблема с пониманием и решением задачи и её переноса на код.
865 1941237
>>1941181
Математика тут не нужна? Математическое мышление и комплексный подход к решению задачи нужен. Увы, но математику не зря считают основной всех наук. Без этих вещей никуда.

Важна не выученая формула, а принцип работы. Понимаешь, что я хочу донести? У человека проблемы с алгоритмом и пониманием. Это не связанное с программированием напрямую действие.
866 1941241
>>1941226
BYOD давним давно в моде. У нас программисты себе заказали топовые 27 iMac. Охуели в край. Я себк ноут для рвботы просил — купили НР, но по характеристикам не плохой. Матрица говно. Вдмины всё орали, чтобы не удалял винду по корпоративным правилам, но я из послал назуй и накатил то, что мне нужно.
867 1941248
>>1941241
Загуглил что такое BYOD, не совсем понял как это соотносится с тем, что вам ноуты покупают.
868 1941253
>>1941248
Это к тому, что ты можешь со своим девайсом приходить на работу. Я же написал про ноут как пример, что смог накатить самостоятельно, что мне нужно для работы. Но учти, что далеко не везде такая свобода.
869 1941269
>>1941180
Анон, не знаю, зачем ты этим занимаешься, но очень надеюсь, что закон кармы сработает и добро вернется к тебе. Спасибо.
>>1941232
Две недели над задачей- это две недели с учетом наличия основной работы и семейных дел. В итоге далеко не каждый день удавалось вырвать по часу-два на обдумывание кода и его написание. Порой даже не успевал сконцентрироваться и вспомнить, какая переменная для чего мне нужна.
Программирование пока рассматриваю просто как баловство, как кроссворд, над которым интересно поломать голову. После того, как Анон указал мне, что пользоваться регулярками для чисел- дурной тон, у меня случился фейспалм от того, что я сам до этого не додумался.
Я просто учусь, мне незнакомы нормы и приемы, кажущиеся тебе очевидными и базовыми.
870 1941619
Прохожу ваши уроки
https://ideone.com/8Rn7BN это нормальная проверка на палиндром или php не для меня?
871 1941729
анон, помоги
если есть запрос в SQL типа такого "WHERE something LIKE %some%"

тут ясно как работакет LIKE %%.

А как что-то такого зделатть в парсинге JSON.

$wheredata = array(
"something" = %some внутри строки%)
872 1941844
>>1941619
я вот так сделалЪ https://ideone.com/bzBQFE
873 1941848
>>1941844
ой, оказывается на английском палиндром будет palindromE, но теперь уже ничего не изменить
874 1941936
>>1931963
Не понял предпоследний вопрос. Чего из этого нет в PHP? Вроде всё есть.
875 1941947
>>1941269
Ты словно не понимаешь про что я пишу. 2 недели даже в неспешном темпе это долго. Я не говорю, что ты должен алгоритм за секунду построить в уме и воплотить его в коде.

Для себя программирование это дело полезное, пригодится в любом случае, но лучше поеби мозги с решением задач из книги, которую я тебе скинул. Почитай книгу: грокаем алгоритмы. Программирование это не про написание кода, это про размышление как реализовать это в коде.
876 1942039
>>1941936
я так понимаю "официального" множественного наследования нет как такового, но в целом сделать возможно
877 1942047
>>1941947
я читал, что грокаем алгоритмы это очень слабая книга, типа для детей прям, она точно меня продвинет хоть насколько-нибудь к пониманию, как использовать программирование для решения задач?
если что я не он

>>1941269
кстати, вначале, когда только начал изучать программирование, задачи очень тяжело шли, у меня в школе/вузе не было никогда его, наверное поэтому
постепенно я начал решать их быстрее, потом начал удивляться, как вообще я мог так долго решать такую чепуху?
878 1942059
>>1942047
Если ты знаком с алгоритмами и структурами данных, то не нужна.
879 1942080
Анчоусы, а что принято делать в ларавеле если логика создания модели сложнее, чем "просто впихнуть валидные данные из реквеста в базу данных"?
Оборачивать создание модели в метод сервиса? Переопределять метод create()? Или может поместить всю эту логику в еще в какое-то место, о котором я даже не подозреваю?
880 1942185
>>1942080

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


То же, что и не в ларавеле.

>Оборачивать создание модели в метод сервиса? Переопределять метод create()? Или может поместить всю эту логику в еще в какое-то место, о котором я даже не подозреваю?


Выносить куда-нибудь, например в сервисный слой. А в особо сложных случаях - в доменный слой
881 1942187
>>1942047
Если туго с алгоритмическим мышлением, можно порешать задачки, например с кодварса.
При решении задач сначала описываешь решение (хоть на бумаге), затем переводишь в код.
882 1942189
>>1942187
согласен, кодварс хорошая тема, можно в конце чужие решения прочекать, много нового узнаешь
883 1942203
>>1942185

>То же, что и не в ларавеле.


>Выносить куда-нибудь, например в сервисный слой.


Окей, спасибо за ответ. Изначально так и сделал.
884 1942204
>>1941947
Спасибо. Учту и ознакомлюсь с книгой, обязательно. Вообще, еще до того, как начал эту задачу, решил, что нужно расширить кругозор, а не просто задрачивать гайд Анона.
Скоро еще должен подъехать php 7 в подлиннике, на бумаге.
885 1942235
>>1942189

> можно в конце чужие решения прочекать, много нового узнаешь


Нашел там только говнокод и всякие хаки, которые делают код write-only
886 1942595
>>1942204
У меня рнр в подлиннике есть еще 5 версии. В 2009-2010 годах собирался вкатываться в программирование по ней))) 7 тоже покупал, но так и не вкатился.
887 1942659
Начал изучать Laravel, малость охренел с такой вещи как фасады. Их часто вообще используют ИРЛ? Подозреваю что на аутсорсе да, ибо это попросту намного быстрее. А в продукте? Вроде понимаю что это дичайший антипаттерн, но и кажется что глупо их не использовать, если уж предоставляют такую возможность. В итоге у меня все сервисы получаются статическими, это вообще нормально? Не стыдно будет такое на гитхабе для портфолио держать?
888 1943057
>>1942659

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


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

>В итоге у меня все сервисы получаются статическими, это вообще нормально?


Можешь вместо использования фасадов явно инжектить свои сервисы куда надо
889 1943281
Подскажите, пожалуйста, в чем может быть причина. Есть видеохостинг на ларавел, видео сжимаются с помощью ffmpeg. Видео, которые весят больше 50мб тормозят. Сервер на ssd, порт 1Gbit/s. Качество видео 1920x1080 30fps.
890 1943302
Хочу научиться делать сайты на пыхе, в шапке про апач написано, можно ли через опенсервер пробовать скрипты выполнять? И в чем писать код, в блокноте?
Простенькие примеры я выполнял через онлайн интерпретатор.
891 1943331
>>1943057
Окей, а как более правильно будет организовать доступ к базе данных, если не через фасады?
892 1943348
>>1943302

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



Если речь про бекенд, то вот варианты:
- Встроенный php сервер
- XAMP
- OpenServer
- Docker

Выбирай любой удобный способ

Для выполнения консольных скриптов - соответственно из консоли запускаешь.

>И в чем писать код, в блокноте?


PHPStorm
893 1943353
>>1943348
Спасибо.
894 1943423
https://ideone.com/dwEfh1
решал полчаса, шансы на вкат есть?
895 1943449
>>1943331
Речь про более высокий уровень. Не про "доступ к базе данных", а про "доступ к доступу к базе данных".

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

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

Поэтому в ларавеле и придумали "фасады". Вообще фасад это неправильное название, по факту это сервис локатор, но все как-то привыкли. Фасад позволяет получить доступ к любой части матрешки напрямую, прямо здесь и сейчас, без чертежей и конфигов. Это быстро, думать нихуя не надо, знать о программе нихуя не надо. Но при этом никакой "картины в целом" больше не существует. Чертеж размазан по программе со всеми вытекающими последствиями. Если ты пишешь софт на заказ и больше его никогда не увидишь, то просто идеальный вариант. Поэтому собственно лара вообще и взлетела.
896 1943511
>>1943449
Спасибо за широкий ответ, он скорее относится к моему первому вопросу >>1942659
Второй вопрос >>1943331 как раз о низшем уровне. О том, что именно будет правильнее внедрять в сервис для доступа к БД. Не инстанс модели же?
Вообще, я был бы очень рад не задавать здесь дебильных вопросов, но нормальных примеров просто нету. В доках лары одни фасады.
Решил чекнуть опенсорсные проекты на ларе - так вообще веру в человечество потерял. В одних толстейшие контроллеры в которых по 50 use в самом верху. В других сервисы напрямую взаимодействуют с реквестом и т.д.
Если у кого-то есть пример хорошего кода на Laravel, буду очень признателен если поделитесь.
Screenshot.png138 Кб, 1439x858
897 1943571
Скачал PHP и установил VScode.
Что дальше?
Как запускать и тестировать файлы?
898 1943589
А че вообще делоть на уровне после того как только только установил опенсервер. только только прошелся по основам языка есть основы еще и других языков грубо говоря на JS и Python написано по калькулятору. Есть базовое представление о HTML/CSS. Хочется взять да и захуячить какой нибудь проект, но есть чувство что первая задача из шапки будет сложновата список учеников
899 1943614
Где определять логику CRUD-а в ларавеле? Есть куча статей, что паттерн репозиторий лучше не ипользовать, но где тогда все прописывать? Прямо в контроллере?
900 1943629
>>1943614
Я на первой работе писал логику в контроллер, на одну сущность один контроллер.
901 1943679
>>1943629
Потом после таких вот котроллеристов говно разгребать
902 1943684
>>1943614
У тебя какая-то каша в голове.
Сначала где-нибудь пропиши логику, потом видно будет, куда её выносить, когда начнешь переиспользовать код
903 1943689
>>1943571
НУ? ЧТО ДАЛЬШЕ?!!!
904 1943690
>>1943571
>>1943689
А дальше задаешь свои вопросы гуглу
905 1943692
>>1943690
Нет вы скажите...
906 1943697
>>1943679
Что не так?
907 1943701
>>1943697
Если бы приходилось разгребать проекты, где вся логика в контроллерах, не задавал бы таких вопросов
908 1943747
<script src="https://ideone.com/e.js/KaHFrM" type="text/javascript" ></script>
Личинка прогера ползет к успеху в этом итт.
909 1943749
>>1943747
<?php

$money = 10000;
$years = 16;

for (;;){
$money += $money/10;
$years += 1;
if ($money >= 1000000){
break;
}
}
echo "Мы накопили {$money} за {$years} лет, поздравляем!" ;
910 1943760
>>1943571
Судя по тому, что ты написал, тебе надо скачать microsoft excel/1C.
911 1943806
>>1943692
Нiт.
912 1944137
Аноны, читаю сейчас пасту ОПа про алгоритм обработки данных с формы, а именно ООП подход
https://github.com/codedokode/pasta/blob/master/forms.md
И что-то не могу до конца понять посыл ОПа. В плане того, что он предлагает нам сделать отдельный класс UserForm, хранить в нем сущность User, отдельный класс валидации и проводить валидацию непосредственно в классе UserForm после заполнения уже изначально невалидными данными.

Вот его пример:
$post = new Post;
$postForm = new PostForm($post, $postValidator);
Сначала заполняется изначально невалидными данными: $postForm->fill($_POST);
После он проверяет: $errors = $postForm->validate($post);

Какой смысл в том, чтобы изначально создавать объект, в котором уже находятся невалидные данные ? И что делать в случае, если у нас у сущности Post на свойствах стоят тайп хинты, тогда каким образом мы будем ее заполнять, если у нас прилетит вместо строки условно массив, при попытке записать в это свойство вылетит ошибка. Аноны, объясните, это я тупой и не понимаю, что пытается донести ОП или какой правильный подход в таких ситуациях
913 1944161
>>1944137
Тайп хинты на свойствах появились буквально вчера, раньше такого не было. Ну и у ОПа видно что пример сильно вдохновлён симфони формами, где один контроллер и отрисовывает форму по GET, и обрабатывает по POST, вот из-за этих вариантов и получается что интерфейс немного странно выглядит. Вообще лучше представить что объект $post или $user в таких примерах это не прям сущность из бд, а объект, который представляет поля формы, просто в несложных формах можно срезать и сделать это дело одной сущностью, чтобы потом руками не писать например $user->changeName($userForm->name) и т.д. (представь что таких полей много)

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


Если объект представляет собой данные из формы, а не настоящего юзера или пост, значит он может находиться в невалидном состоянии, просто для простоты в тех же доках симфони эти понятия совмещаются, всё херачится прямо в контроллере в нескольких ифах и как бы на этом ок. Когда у тебя очень много разных форм и сущностей то такой подход конечно намного быстрее
914 1944181
>>1944161

>Вообще лучше представить что объект $post или $user в таких примерах это не прям сущность из бд, а объект, который представляет поля формы


Так у ОПа там вроде бы идет явное разделение, что Post это сущность, а PostForm это объект, которые представляет именно данные из формы (в который непонятно зачем передается еще и сама сущность)
И как в итоге лучше делать в таких ситуациях, не убирать же тайп хинты ?

У меня есть идея, что у нас есть сущность, есть объект (данные, которые ожидаются из формы) в который мы передаем валидатор и сами данные, что-то вроде:
$postData = new PostData($validator, $_POST)
Там уже сразу проверяем, валидные данные или нет. Если все данные валидные, то заполняем свойства этими данными, а если нет, то заполняем к примеру свойство с ошибками. И вроде бы так же остается разделение ответственности валидации, о чем ОП и говорил, что валидации без разницы, какие данные она валидирует.
Потом уже проверяем, если это свойство пустое, то отправляем этот объект в сущность
$post = new Post($postData);
И делаем дальше необходимые действия. Правильный ли это подход ? Если нет, то как правильно это нужно сделать
915 1944657
>>1943806
ПОМОГИ
916 1944667
>>1943571
Запускать php tvoyFail.php
Можно поставить сервер и запускать, тестировать phpunit, но тебе далеко ещё и судя по тому какие вопросы задаешь и вовсе не придется
Screenshot.png286 Кб, 937x497
917 1944682
>>1944667
Запустил с помощью php.exe. Что дальше ну?!
918 1944712
>>1944682
Оставь, это не твоё.
919 1944731
>>1944682
Такими темпами мб к пенсии вкатишься
920 1944736
>>1944712
>>1944731
ПОМОГИТЕ
921 1944739
>>1944736
Зачем тебе PHP? Это мертвый язык, посмотри в любую статистику - например от хабра или dou. Оплата труда самая низкая после 1C, вакансий становится меньше, новых проектов меньше. Медианный опыт работы php разраба - 6 лет. Да и люди в этом треде как видишь злые, бесплатно хрен помогут тебе. Питон или js намного круче сейчас, даже сам Хауди Хо об этом говорит. Го к нам в питон тред: https://2ch.hk/pr/res/1943168.html#1944728 (М)
922 1944740
Почему происходит division by zero если в массиве $workers содержатся хуйнюшки с значением 400 в $papers?
923 1944741
>>1944739
Меня от туда послали учить PHP.
924 1944777
>>1944739
Всё верно - пхп умер фактически. Остались только легаси проекты на нём - остальные на ноду перешли, или Питон.
Я сам после пяти лет работы с ПХП перекатился на Го.

>>1944741
Пошли их в ответ!
925 1944782
>>1944736
Тебе сперва надо SICP прочитать чтоб понимать что делаешь.
926 1944834
>>1944740
...->workers = $Иванов <<< не добавляет Иванова в массив workers.
927 1945072
>>1944741
Наверняка за подобные вопросы
928 1945077
>>1944740
А IDE бы подсветила, что херню делаешь, присваивая одному свойству разные значения
929 1945078
930 1945079
>>1945077
>>1945078
пик отклеился
932 1945081
Хоть бы валидировали картинки. Непонятно, почему не грузит...
933 1945084
>>1945080
Убери галку в Настройки -> Медиа -> Удалять eXiF
image.png86 Кб, 782x117
934 1945088
935 1945089
>>1945084
Спасибо
анон 936 1945173
А в чем отличия между обновлениями "целой части числа" (например с 7.4 до 8) и дробной части (7.3 => 7.4)? Первые более масштабны?
937 1945185
>>1944739

>Хауди Хо


вкат плз
938 1945207
>>1945173

>например с 7.4 до 8


В мажорных ломают обратную совместимость

>7.3 => 7.4


В минорных вводят новые фичи
939 1945319
что значит много стрелок в одной строке,объект вызывает разные методы в одну строку?
940 1945366
>>1945319
Приведи пример кода
941 1945370
>>1944834
Почему?
942 1945375
>>1945319
Объект вызывает метод, тот что-то возвращает, у этого чего-то вызывается метод, который тоже что-то возвращает и так далее.
https://en.wikipedia.org/wiki/Method_chaining
943 1945380
>>1945370
Добавление элемента в массив:
$arr[] = $elem;

А теперь сравни со своим кодом.
944 1945386
>>1945380
Подозреваю нужно сначала сделать
$arr[] = $someDepartment->workers;

А потом
$arr[] = $elem;
945 1945389
>>1945386
Полный код бы привел.
По тем двум обрывкам непонятно, что хочешь сделать.
946 1945392
>>1945389
{
const PROFESSION_MANAGER = "Менеджер";
const PROFESSION_MARKETER = "Маркетолог";
const PROFESSION_ENGINEER = "Инжинер";
const PROFESSION_ANALISER = "Аналитик";

protected $name;
protected $profession; // Профессия работника
protected $rank = 1; // Ранг работника
protected $isLeader = ""; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct($name, $profession, $rank, $isLeader)
{
$this->name = $name;
$this->profession = $profession;
$this->rank = $rank;
$this->isLeader = $isLeader;

if ($this->profession == Employee::PROFESSION_MANAGER)
{
$this->salary = 500;
$this->coffeeConsumption = 20;
$this->papers = 200;
}
elseif ($this->profession == Employee::PROFESSION_MARKETER)
{
$this->salary = 400;
$this->coffeeConsumption = 15;
$this->papers = 150;
}
elseif ($this->profession == Employee::PROFESSION_ENGINEER)
{
$this->salary = 200;
$this->coffeeConsumption = 5;
$this->papers = 50;
}
elseif ($this->profession == Employee::PROFESSION_ANALISER)
{
$this->salary = 800;
$this->coffeeConsumption = 50;
$this->papers = 5;
}

if ($this->rank == 2)
{
$this->salary = 1.25;
}
elseif ($this->rank == 3)
{
$this->salary
= 1.50;
}

if ($this->isLeader == "Руководитель")
{
$this->salary = 1.50;
$this->coffeeConsumption
= 2;
$this->papers = 0;
}
}
}

$ИванПетров = new Employee("Иван Петров", "Маркетолог", 1, "");
$ИванПетров2 = new Employee("Иван Петров2", "Маркетолог", 1, "");
$ИванПетров3 = new Employee("Иван Петров3", "Маркетолог", 1, "");
$procurementDepartment->workers = $ИванПетров;
$procurementDepartment->workers = $ИванПетров2;
$procurementDepartment->workers = $ИванПетров3;

var_dump($procurementDepartment->countAll());
946 1945392
>>1945389
{
const PROFESSION_MANAGER = "Менеджер";
const PROFESSION_MARKETER = "Маркетолог";
const PROFESSION_ENGINEER = "Инжинер";
const PROFESSION_ANALISER = "Аналитик";

protected $name;
protected $profession; // Профессия работника
protected $rank = 1; // Ранг работника
protected $isLeader = ""; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct($name, $profession, $rank, $isLeader)
{
$this->name = $name;
$this->profession = $profession;
$this->rank = $rank;
$this->isLeader = $isLeader;

if ($this->profession == Employee::PROFESSION_MANAGER)
{
$this->salary = 500;
$this->coffeeConsumption = 20;
$this->papers = 200;
}
elseif ($this->profession == Employee::PROFESSION_MARKETER)
{
$this->salary = 400;
$this->coffeeConsumption = 15;
$this->papers = 150;
}
elseif ($this->profession == Employee::PROFESSION_ENGINEER)
{
$this->salary = 200;
$this->coffeeConsumption = 5;
$this->papers = 50;
}
elseif ($this->profession == Employee::PROFESSION_ANALISER)
{
$this->salary = 800;
$this->coffeeConsumption = 50;
$this->papers = 5;
}

if ($this->rank == 2)
{
$this->salary = 1.25;
}
elseif ($this->rank == 3)
{
$this->salary
= 1.50;
}

if ($this->isLeader == "Руководитель")
{
$this->salary = 1.50;
$this->coffeeConsumption
= 2;
$this->papers = 0;
}
}
}

$ИванПетров = new Employee("Иван Петров", "Маркетолог", 1, "");
$ИванПетров2 = new Employee("Иван Петров2", "Маркетолог", 1, "");
$ИванПетров3 = new Employee("Иван Петров3", "Маркетолог", 1, "");
$procurementDepartment->workers = $ИванПетров;
$procurementDepartment->workers = $ИванПетров2;
$procurementDepartment->workers = $ИванПетров3;

var_dump($procurementDepartment->countAll());
947 1945393
>>1945389
Ой извините...

<?php

error_reporting(-1);

class Department
{
public $workers = array();
public function countAll() // Считает зарплату, потребление кофе, производство бумаг и расход валюты на 1 бумагу
{
$salaryTotal = 0;
$coffeeTotal = 0;
$papersTotal = 0;
$moneyPerPaper = 0;
foreach ($this->workers as $employee)
{
$salaryTotal += $employee->salary;
$coffeeTotal += $employee->coffeeConsumption;
$papersTotal += $employee->papers;
}
$moneyPerPaper = $salaryTotal / $papersTotal;
$returnMassive = array(0 => $salaryTotal, 1 => $coffeeTotal, 2 => $papersTotal, 3 => $moneyPerPaper);
return $raturnMassive;
}
}

$procurementDepartment = new Department;
$sellDepartment = new Department;
$adDepartment = new Department;
$logisticDepartment = new Department;

class Employee
{
const PROFESSION_MANAGER = "Менеджер";
const PROFESSION_MARKETER = "Маркетолог";
const PROFESSION_ENGINEER = "Инжинер";
const PROFESSION_ANALISER = "Аналитик";

protected $name;
protected $profession; // Профессия работника
protected $rank = 1; // Ранг работника
protected $isLeader = ""; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct($name, $profession, $rank, $isLeader)
{
$this->name = $name;
$this->profession = $profession;
$this->rank = $rank;
$this->isLeader = $isLeader;

if ($this->profession == Employee::PROFESSION_MANAGER)
{
$this->salary = 500;
$this->coffeeConsumption = 20;
$this->papers = 200;
}
elseif ($this->profession == Employee::PROFESSION_MARKETER)
{
$this->salary = 400;
$this->coffeeConsumption = 15;
$this->papers = 150;
}
elseif ($this->profession == Employee::PROFESSION_ENGINEER)
{
$this->salary = 200;
$this->coffeeConsumption = 5;
$this->papers = 50;
}
elseif ($this->profession == Employee::PROFESSION_ANALISER)
{
$this->salary = 800;
$this->coffeeConsumption = 50;
$this->papers = 5;
}

if ($this->rank == 2)
{
$this->salary = 1.25;
}
elseif ($this->rank == 3)
{
$this->salary
= 1.50;
}

if ($this->isLeader == "Руководитель")
{
$this->salary = 1.50;
$this->coffeeConsumption
= 2;
$this->papers = 0;
}
}
}

$ИванПетров = new Employee("Иван Петров", "Маркетолог", 1, "");
$ИванПетров2 = new Employee("Иван Петров2", "Маркетолог", 1, "");
$ИванПетров3 = new Employee("Иван Петров3", "Маркетолог", 1, "");
$procurementDepartment->workers = $ИванПетров;
$procurementDepartment->workers = $ИванПетров2;
$procurementDepartment->workers = $ИванПетров3;

var_dump($procurementDepartment->countAll());
947 1945393
>>1945389
Ой извините...

<?php

error_reporting(-1);

class Department
{
public $workers = array();
public function countAll() // Считает зарплату, потребление кофе, производство бумаг и расход валюты на 1 бумагу
{
$salaryTotal = 0;
$coffeeTotal = 0;
$papersTotal = 0;
$moneyPerPaper = 0;
foreach ($this->workers as $employee)
{
$salaryTotal += $employee->salary;
$coffeeTotal += $employee->coffeeConsumption;
$papersTotal += $employee->papers;
}
$moneyPerPaper = $salaryTotal / $papersTotal;
$returnMassive = array(0 => $salaryTotal, 1 => $coffeeTotal, 2 => $papersTotal, 3 => $moneyPerPaper);
return $raturnMassive;
}
}

$procurementDepartment = new Department;
$sellDepartment = new Department;
$adDepartment = new Department;
$logisticDepartment = new Department;

class Employee
{
const PROFESSION_MANAGER = "Менеджер";
const PROFESSION_MARKETER = "Маркетолог";
const PROFESSION_ENGINEER = "Инжинер";
const PROFESSION_ANALISER = "Аналитик";

protected $name;
protected $profession; // Профессия работника
protected $rank = 1; // Ранг работника
protected $isLeader = ""; // Руководитель ли работник
protected $salary; // Зарплата работника
protected $coffeeConsumption; // Объём потребляемого сотрудником кофе в литрах
protected $papers; // Количество производимых работников отчётов

public function __construct($name, $profession, $rank, $isLeader)
{
$this->name = $name;
$this->profession = $profession;
$this->rank = $rank;
$this->isLeader = $isLeader;

if ($this->profession == Employee::PROFESSION_MANAGER)
{
$this->salary = 500;
$this->coffeeConsumption = 20;
$this->papers = 200;
}
elseif ($this->profession == Employee::PROFESSION_MARKETER)
{
$this->salary = 400;
$this->coffeeConsumption = 15;
$this->papers = 150;
}
elseif ($this->profession == Employee::PROFESSION_ENGINEER)
{
$this->salary = 200;
$this->coffeeConsumption = 5;
$this->papers = 50;
}
elseif ($this->profession == Employee::PROFESSION_ANALISER)
{
$this->salary = 800;
$this->coffeeConsumption = 50;
$this->papers = 5;
}

if ($this->rank == 2)
{
$this->salary = 1.25;
}
elseif ($this->rank == 3)
{
$this->salary
= 1.50;
}

if ($this->isLeader == "Руководитель")
{
$this->salary = 1.50;
$this->coffeeConsumption
= 2;
$this->papers = 0;
}
}
}

$ИванПетров = new Employee("Иван Петров", "Маркетолог", 1, "");
$ИванПетров2 = new Employee("Иван Петров2", "Маркетолог", 1, "");
$ИванПетров3 = new Employee("Иван Петров3", "Маркетолог", 1, "");
$procurementDepartment->workers = $ИванПетров;
$procurementDepartment->workers = $ИванПетров2;
$procurementDepartment->workers = $ИванПетров3;

var_dump($procurementDepartment->countAll());
948 1945394
>>1945393
К этому моменту
$procurementDepartment->workers = $ИванПетров;
массив workers уже проинициализирован. Так что можешь смело пушить в массив свои работничков.

Ну и у пхп такое поведение, что при добавлении в непроинициализированный массив, он создаст новый массив хотя так лучше не делать, т.к. неявное поведение
Screenshot.png35 Кб, 825x613
949 1945602
>>1945394

>Так что можешь смело пушить в массив свои работничков.


???
950 1945684
Вопрос по принципу подстановки Барбары Лисков. Допустим есть абстрактные классы AbstractA и AbstractB. От них наследуются A и B соответственно.
AbstractA в конструкторе требует AbstractB. И если я в конструкторе A пропишу что аргументом должен быть не какой-нибудь AbstractB, а конкретно B, все будет хорошо работать и даже IDE ругаться не будет ( будет ругаться если не выполнить parent::construct($b) ).
Это нарушение LSP? Потому что если я проведу аналогичные действия не с конструктором, а каким-нибудь другим методом, выбрасывается Fatal Error: Declaration of A::method(B $b) must be compatible with BaseA::method(BaseB $b)
951 1945698
>>1945684
И еще вопрос. Возможно есть какой-нибудь паттерн, по которому я смогу осуществить желаемое ( не копипастить у множества классов одинаковые методы, которые отличаются лишь требуемым типом аргумента при неверном типе безоговорочно должно выбрасываться исключение )?
Вроде видел как в джаве что-то похожее через дженерики реализуется, но это не точно.
952 1945722
>>1945684

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

Поэтому конструкторы предка и наследника не обязаны быть совместимыми. Они могут быть абсолютно разными.

А вот обычные методы в наследнике должны быть совместимыми с предком. Потому нельзя при наследовании заменить тайп-хинт AbstractB на B - это сломает код, который передает в этот метод объект, отличный от B. Раз предок принимает такие объекты, то и наследник должен.

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



Боюсь, что такого в PHP нет.
953 1945723
>>1945602
ПОМОГИТЕ
954 1945729
>>1945602

Слово array в строке с ошибкой лишнее.

>>1945393

Плохо, когда код снаружи залезает внутрь объекта и что-то меняет в массиве. Тебе лучше сделать в классе Department метод addEmployee(Employee $e) и с его помощью добавлять работников, а прямой доступ к массиву $workers закрыть.

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

> $isLeader = ""


тут для обозначения, является ли человек лидером, лучше использовать значения типа bool, то есть true и false.

Далее, ты делаешь ошибку. Базовая ставка и итоговая (с учетом надбавок) зарплата - это две разные величины. Ты же не сохраняешь базовую зарплату, а хранишь только итоговую. Из-за этого тебе будет сложно пересчитывать зарплату при смене ранга или статуса босса.
955 1945730
>>1945729

>Слово array в строке с ошибкой лишнее.


Как я должен был это понять?

>Тебе лучше сделать в классе Department метод addEmployee(Employee $e)


Да, ты прав. Хороший совет.

>Из-за этого тебе будет сложно пересчитывать зарплату при смене ранга или статуса босса.


Почему?
956 1945735
А пхп умирает, между прочим https://t.me/isPHPdying
957 1945736
>>1944777

Фуу, что хорошего в ноде? Нечитаемая лапша с 10 уровнями вложенности, везде уродливые промисы вместо линейного синхронного кода, по 10 анонимных функций вложены друг в друга. Нет тайп-хинтов, потому читать код невозможно. Нет private/protected, костыли (прототипы) вместо нормального ООП. Если ошибиться в написании свойства (this.errror), то никаких ошибок не выдастся. Нет Доктрины и Симфони, потому собирают из сотен библиотек самодельный фреймворк.

Не верится, что кто-то выберет это вместо PHP. Подозреваю, что на начальном этапе, где не требуется поддерживать или рефакторить код, на ноде еще как-то можно писать, но при появлении первых сложностей эти горе-работнички просто сбегут и оставят работодателя с кучей нечитаемого кода.
958 1945742
>>1944682

Запускать PHP лучше не двойным кликом (так как окно сразу закрывается), а из консоли. Вот урок про основы использования консоли: https://github.com/codedokode/pasta/blob/master/soft/cli.md

Судя по тексту ошибки, тебе надо установить Visual C Redistributable (распространяемый компонент Visual Studio, не саму Visual Studio) версии 14.28 или выше с сайта майкрософт.

Ссылки на него есть тут: https://support.microsoft.com/ru-ru/topic/последние-поддерживаемые-версии-visual-c-для-скачивания-2647da03-1eea-4433-9aff-95f26a218cc0

Выбери vc_redist.x64.exe или vc_redist.x86.exe в зависимости от разрядности (32-битный или 64-битный) PHP. Если не уверен, можешь поставить оба.
959 1945743
>>1945736

>Нечитаемая лапша с 10 уровнями вложенности


Как напишешь - так и будет.

>везде уродливые промисы вместо линейного синхронного кода, по 10 анонимных функций вложены друг в друга


Наверное даже именно поэтому в 8 версию пхп не завезли поддержку стрелочных фукнций. Ой падажжи...

>Нет private/protected


А ты каждый объект рвёшься вывернуть наизнанку или документацию к библиотеке не читаешь?

>костыли (прототипы) вместо нормального ООП


Тайпскрипт, алло.

>Нет Доктрины и Симфони, потому собирают из сотен библиотек самодельный фреймворк.


>Симфони


Который сам по-сути набор независимых библиотек? Неожиданно.
960 1945745
>>1945722
Благодарю за ответ :3
Забавно конечно, что об этой особенности почти нигде не пишет.
961 1945761
>>1945698

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


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

>В плане того, что он предлагает нам сделать отдельный класс UserForm



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

Мы не всегда можем для этого использовать User, так как набор полей и их значения в форме могут отличаться (например: в форме может быть меньше или больше полей, чем в сущности. Или в форме есть 2 поля ввода пароля, а в сущности - только поле с хешем от пароля).

Если список полей в User и в форме совпадают, то в принципе может хранить данные формы в объекте User, без использования UserForm.

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

> Сначала заполняется изначально невалидными данными


Они могут быть и валидными. Мы это не знаем, пока не проверим их.

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



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

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



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

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

public function fill(array $data)
{
$this->name =strval($data['name'] ?? '');
...
}

В более сложном случае мы можем не писать руками эти присваивания, а использовать библиотеку JMSSerializer или Symfony Serializer, которая умеет заполнять объект свойствами из массива с преобразованием типов (типы прописываются в объекте как аннотации).

>>1944161

> Ну и у ОПа видно что пример сильно вдохновлён симфони формами, где один контроллер и отрисовывает форму по GET, и обрабатывает по POST



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

>>1944181

> а PostForm это объект, которые представляет именно данные из формы (в который непонятно зачем передается еще и сама сущность)



Идея была в том, что если у тебя в форме 5 полей совпадают с полями сущности, а 2 поля отличаются, то можно в PostForm хранить только эти 2 поля, а оставшиеся 5 полей хранить прямо в Post (для чего он и передается в PostForm).

Также, в этом случае мы можем написать основной валидатор, чтобы он проверял объект Post (и был независим от формы), и небольшой дополнительный валидатор для 2 оставшихся полей формы, которых нет в Post.

Момент с валидацией тут основной. Если мы напишем валидатор для PostForm, то мы получим намертво привязанный к форме валидатор, которым нельзя проверять приходящие из других источников объекты Post, например, из БД. Потому валидатор лучше делать для объекта Post. И для этой цели Post вкладывается в PostForm - чтобы можно было передать его валидатору.

Иногда бывает еще сложнее, часть правил относится к любым объектам Post, а часть правил валидации относится только к этой форме (то есть их можно нарушать, например, при создании объекта программно). Тут тоже приходится делать 2 валидатора: для Post и для PostForm.

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



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

> $post = new Post($postData);



Тут косяк в том, что с таким конструктором Post намертво привязан к форме (PostData) и невозможно создать его без формы, например, программно.
962 1945763
>>1944137

>В плане того, что он предлагает нам сделать отдельный класс UserForm



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

Мы не всегда можем для этого использовать User, так как набор полей и их значения в форме могут отличаться (например: в форме может быть меньше или больше полей, чем в сущности. Или в форме есть 2 поля ввода пароля, а в сущности - только поле с хешем от пароля).

Если список полей в User и в форме совпадают, то в принципе может хранить данные формы в объекте User, без использования UserForm.

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

> Сначала заполняется изначально невалидными данными


Они могут быть и валидными. Мы это не знаем, пока не проверим их.

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



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

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



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

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

public function fill(array $data)
{
$this->name =strval($data['name'] ?? '');
...
}

В более сложном случае мы можем не писать руками эти присваивания, а использовать библиотеку JMSSerializer или Symfony Serializer, которая умеет заполнять объект свойствами из массива с преобразованием типов (типы прописываются в объекте как аннотации).

>>1944161

> Ну и у ОПа видно что пример сильно вдохновлён симфони формами, где один контроллер и отрисовывает форму по GET, и обрабатывает по POST



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

>>1944181

> а PostForm это объект, которые представляет именно данные из формы (в который непонятно зачем передается еще и сама сущность)



Идея была в том, что если у тебя в форме 5 полей совпадают с полями сущности, а 2 поля отличаются, то можно в PostForm хранить только эти 2 поля, а оставшиеся 5 полей хранить прямо в Post (для чего он и передается в PostForm).

Также, в этом случае мы можем написать основной валидатор, чтобы он проверял объект Post (и был независим от формы), и небольшой дополнительный валидатор для 2 оставшихся полей формы, которых нет в Post.

Момент с валидацией тут основной. Если мы напишем валидатор для PostForm, то мы получим намертво привязанный к форме валидатор, которым нельзя проверять приходящие из других источников объекты Post, например, из БД. Потому валидатор лучше делать для объекта Post. И для этой цели Post вкладывается в PostForm - чтобы можно было передать его валидатору.

Иногда бывает еще сложнее, часть правил относится к любым объектам Post, а часть правил валидации относится только к этой форме (то есть их можно нарушать, например, при создании объекта программно). Тут тоже приходится делать 2 валидатора: для Post и для PostForm.

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



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

> $post = new Post($postData);



Тут косяк в том, что с таким конструктором Post намертво привязан к форме (PostData) и невозможно создать его без формы, например, программно.
963 1945768
>>1945602
Поставь уже phpstorm. Пусть он тебя по рукам за кривой синтаксис бьет
964 1945769
>>1943749

Здесь непонятно волшебное число 10. Лучше сделать переменную $percent = 0.1 и использовать ее для читаемости. Вместо $years += 1 можно писать $years++; Условие $money < 1000000 можно поместить в заголовок цикла и тогда if будет не нужен.

>>1943629

Проблема кода в контроллерах в том, что его нельзя повторно использовать (вызывать откуда-то). Например, у тебя есть в контроллере код простановки лайка. Из-за того, что он в контроллере, обрабатывает данные из $_POST, $_COOKIE, $_SESSION ты не можешь вызвать этот код из другого места, чтобы программно поставить лайк.

А вот если бы он был в сервисе и изолирован от $_POST и тд, то его можно было бы вызывать откуда угодно. И тестировать проще. И читабельность выше.
965 1945777
>>1943571

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

Тут описано, где прописать путь к PHP в базовой конфигурации (без плагинов): https://code.visualstudio.com/docs/languages/php Это, правда, годится только для проверки кода по мере набора.

Чтобы запускать PHP программу одной кнопкой F5, надо прописать другие настройки. А в них путь к PHP. Как, описано тут: https://www.codewall.co.uk/how-to-run-php-code-directly-in-the-visual-studio-code-console-terminal/
966 1945785
>>1943511

Злоупотребление фасадами может навредить. Ну представь, ты решил написать сервис для простановки посту лайка, но в коде сервиса обращаешься глобально к функциями вроде session(), фасадам Auth, Cookie, Request. Тогда твой код нельзя будет повторно использовать (вызвать, чтобы программно поставить лайк), так как он завязан на реквест и сессию, которых может не быть при запуске в командной строке.

Лучше было бы передавать нужные параметры (вроде текущего пользователя) явно через аргументы.

> О том, что именно будет правильнее внедрять в сервис для доступа к БД. Не инстанс модели же?



Если тебе нужен прямой доступ к БД , то внедрять надо объект Illuminate\Database\Connection (взял из таблицы отсюда: https://laravel.com/docs/8.x/facades#facade-class-reference )
967 1945794
>>1943423

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

Имя функции лучше начинать с глагола. Имена переменных начинаются с маленькой буквы.

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

>>1941619

Решение неправильное. Во-первых, нельзя пытаться получить букву из строки с помощью скобок: $text[$i]. Это возвращает не i-ю букву, а байт, а одна буква может состоять из нескольких байт. Вот урок про это: https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

Далее, это неправильное сравнение: if ($count == $words) так как ты сравниваешь число совпавших букв с числом слов в тексте. Они не обязаны быть равны.

>>1941844

Выглядит верно.

>>1941729

Можно писать WHERE JSON_VALUE(....) = '....'. Функция JSON_VALUE выделяет один элемент из JSON-объекта.
968 1945802
>>1945730

>>Слово array в строке с ошибкой лишнее.


> Как я должен был это понять?


Ты должен знать синтаксис PHP или использовать проверку в редакторе кода, которая подчеркнет ошибку. Слово array использовалось в старых версиях PHP для создания массива, например array(1, 2, 3) (сейчас пишут просто [1, 2, 3]), непонятно, зачем оно там вписано в коде.

>>Из-за этого тебе будет сложно пересчитывать зарплату при смене ранга или статуса босса.


> Почему?



Ну попробуй сейчас в Employee сделать метод changeRank() и чтобы после его вызова все зарплаты, кофе, страницы пересчитывались корректно. У тебя вряд ли получится, так как в некоторых случаях ты сбрасываешь this->papers в ноль и теряешь исходное значение числа произведенных страниц.

>>1945743

>> Нет private/protected


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


А у тебя к каждому объекту отдельная документация, где написано, что с ним можно делать и что нельзя? В PHP неправильный доступ невозможен на уровне языка.
969 1945815
>>1945761
>>1945761
У тебя отличная чуйка. Пока я пытался расписать тебе всю задуманную архитектуру, я сам понял что в ней не так и почему она говно. Еще раз спасибо)
970 1946069
>>1917780
>>1917785
>>1917788
такой вопрос написание нейросетки для написания сайта (интернет магазина,визитки,бложика) насколько реально?
фронт энд уже преставил но чуствую с бекэндом ебнусь
971 1946080
>>1946069
Когда научат нейросети угадывать, что на самом деле нужно заказчику.
Пока это даже людям неподвластно
972 1946086
>>1946080
на чем тогда зарабатывает wix
973 1946092
>>1946086
На лендингах
974 1946636
https://www.codewars.com/kata/54b724efac3d5402db00065e

интересная ката, помогает потихоньку осиливать встроенные функции методы? strtr/str_replace и всё такое, но можно и через циклы (как я и решил, так как очередной вкатун)
975 1946788
>>1946069

Нейросеть - это же не искуственный интеллект, который будет за тебя работать. Это просто алгоритм, который обучают при подаче на вход набора чисел выдавать на выходе другой набор. Так что генерировать твоя нейросеть сможет только то, что в нее перед этим заложили.
976 1947214
Всем привет! Решил попробовать себя в веб-программировании. Подскажите, пожалуйста, сколько примерно времени у меня может уйти на изучение стека PHP, JS, MySQL на базовом уровне, если я буду заниматься ежедневно по 6-8 часов? Пока только освоил HTML/CSS. В шапке написано 6-8 месяцев нужно изучать, но не указано, сколько при этом нужно часов в день заниматься.
977 1947224
>>1947214
не делай этого
978 1947230
>>1947224
почему?
979 1947233
>>1947230
99% что бросишь и еще негатив останется
980 1947235
>>1947233
выгорю, занимаясь по 6-8 часов в день, или веб в целом не зайдет?
981 1947239
>>1947235
выгорают на работе.
а так не зайдет.
начало зайдет,мож даже чет простое сделаешь,а потом усё
982 1947242
>>1947239
понял, спасибо
На самом деле у меня других вариантов нет, я живу в городе 300к населения и в городе мало контор, и чтобы вырваться в мск и другие сферы программирования, я должен хоть с чего-нибудь начать, хотя бы с веба
983 1947244
>>1947242
почему кодерство?
984 1947250
>>1947244
хочу когда-нибудь вкатиться в биоинформатику, сделать хоть что-то полезное
985 1947251
>>1947250
ну этот тред не про это
986 1947254
>>1947251
да, но на данный момент я заинтересован в веб-программировании, буду изучать)
987 1947256
>>1947254
изучай
988 1947262
Вопрос остается открытым. Подскажите, пожалуйста, сколько у меня может уйти времени на изучение?
989 1947467
>>1947214

>Подскажите, пожалуйста, сколько примерно времени у меня может уйти на изучение стека PHP, JS, MySQL на базовом уровне, если я буду заниматься ежедневно по 6-8 часов?


У всех очень по-разному идёт. Непонятно как у тебя вообще с ИТ и информатикой, какой бэкграунд, как быстро обучаешься, способность к самообучению и тд. Неясно так же что подразумевается под "на базовом уровне" - на этом уровне ты никакую работу уже не найдёшь, скорее всего.
Просто дай себе месяц регулярных ежедневных занятий, а там посмотри - нравится или нет.
990 1947470
>>1947214

>Пока только освоил HTML/CSS.


С этим тоже осторожнее - я такое слышал от таких, которые по-факту ничего не умеют и работу им не доверить.
991 1947472
>>1947467

>дай себе месяц регулярных ежедневных занятий


И не по 6-8 часов. Сдуру и хуй сломать можно. По 2 часа 5\7 будет за глаза - больше и не надо.
992 1947712
Я правильно понимаю алгоритм-
что при любом занесении к-л изменений в БД,
после этого идет код, где в сессии запихиваем то,что запихивали в БД,чтобы потом лазя по страничкам все было сохранено?
993 1947771
Пыхозавры, вам где-нибудь в реальном проекте приходилось использовать функцию session_regenerate_id()?
В чем ее профит?
994 1947772
Кстати, почему не перекатываете?
Тред уже в бамплимите.
995 1947842
>>1947712

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

Сессия вообще ненадежное место для хранения данных. Если человек зайдет на сайт с другого компьютера, то у него будет новая пустая сессия. Потому те данные, которые надо сохранять надежно и надолго, стоит помещать в БД.
997 1947923
>>1947842
так они и так в бд.
вот я вхожу на сайт,аутентификатор ищет меня,а потом извлекает из бд имя,фамилию,город в сессию,что бы была страничка юзера(как в ВК)
998 1948033
>>1947908

Эта уязвимость давно уже неактуальна, она возможно только если разрешить передавать id сессии через GET-параметры (/script.php?SESSION_ID=1234). Сейчас по умолчанию это отключено и уязвимость не сработает, если только специально не поменять настройки.

При этом, session_regenerate_id никак от этого не спасет.

>>1947771

Это можно делать при разлогинивании (или при логине) пользователя. Чтобы при новом входе получалась гарантированно новая сессия.

>>1947923

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

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

По моему, так это глупая идея.
999 1948041
>>1948033

>Сейчас по умолчанию это отключено и уязвимость не сработает, если только специально не поменять настройки.


Но ведь PHPSESSID передается в куках, а куки можно украсть.
1000 1948066
>>1948041

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

Если ты можешь украсть куки, ты и любые запросы можешь делать от имени пользователя. Session fixation тебе просто не нужна. Ну и regenerate_session_id тут никак не поможет.
1001 1948121
>>1948033

>По моему, так это глупая идея.


везде для начинающих именно такой подход.
про кеширование я вообще не знаю
1002 1948213
ПЕРЕКАТУХ ПИЛИТЕ!
1003 1948299
Не понимаю, как организовать корзину в ларавеле.
Допустим, у нас есть таблицы
Cart (id, user_id, session_id, name, email, phone, address)
и
Cart_item (id, product_id, cart_id, quantity)
Вот юзер зашёл на сайт, стартовала сессия, в куку записали session id. Юзер нажал "добавить в корзину" некий товар. Сработал аякс(!) скрип и в специальный аякс контроллер ушёл запрос на добавление. Контроллер проверяет, существует ли для этого session_id запись в Cart, если не существует, то создаёт. Ок, на этом этапе всё вроде более-менее логично. Но дальше надо проверить, существует ли уже такой заказ в Cart_item? Если нет, со создать, если есть, то инкрементировать в нём quantity. То есть из аякс контроллера управлять Cart_item моделью. Херня какая-то. Или это норма? То же самое с уменьшением количества, нужно либо уменьшить quantity, либо (если оно было равно 1) вообще удалить всю запись из Cart_item.

Однако, это же круд получается. Добавить/редактировать/удалить сущность. И, по идее, для этого нужно использовать рест контроллер. Аякс рест контроллер. Но таких нет. Я нагуглил решение на мидлвере https://coderoad.ru/28970350/Как-сделать-restful-ajax-маршрутами-к-методам-в-Laravel-5 ,но эта ссылка чуть ли не единственная. Поэтому у меня ощущение, что я что-то делаю глобально не так. А как надо?
1004 1948313
>>1948299
А что смущает конкретно? Я не понял.
Вообще в контроллере логично создавать модели и управлять ими.
Для красоты можешь в класс Cart добавить метод addItem() и внутри него уже делать операции с CartItem.
1005 1948349
>>1948313
Смущает то, что фактически я пишу рест контроллер, когда они есть из коробки. Но только обычный, без аякса. Вот и подумал, что пишу велосипед.
1006 1948353
>>1948349
А в коробочном РЕСТ-контроллере для экшонов можно задать поведение, чтобы отдавать результат в ajax-формате? JSON какой-нибудь.
1007 1948387
>>1948353
Задать-то можно, но фишка рест контроллера в том, что он оперирует с пост/пут/патч/делет реквестами (то есть, роутер посылает автоматически нужный тип запроса к нужному методу контроллера). А аякс только пост посылает. Вот как раз прикручиванию этого костыля пример по сылке выше и посвящён.
1008 1948396
>>1948387
А зачем тебе нужна вообще РЕСТ-концепция в твоем проекте?
1009 1948461
>>1948299

>Однако, это же круд получается. Добавить/редактировать/удалить сущность. И, по идее, для этого нужно использовать рест контроллер. Аякс рест контроллер. Но таких нет.



Ты пытаешься понять то, что тебе сейчас не нужно. У тебя есть урл, и его програмный обработчик, это твой route. Дальше ты можешь делать что угодно. В твоём кейсе, у тебя есть какой-то CartController, и у него много разных методов, например addItem(item_id),
incrementItem(item_id) и т.д. Ты у себя в рутах и пишешь что-то на уровне Route::post('cart/add', 'CartController@addItem'), понятное дело с разными проверками на авторизацию(это можно писать прямо в контроллере, можно выносить в мидлвары и группировать руты как AuthOnly, суть ты понял. В самом контроллере делаешь что тебе нужно. Если ты знаешь что твой CartController@addItem будет вызываться только через аякс, то возвращаешь json ответ, если не только через аякс, то можно сделать проверку в самом конце обработчика вроде if ($request->wantsJson()) { ... } else { redirect(...) }, wantsJson вроде проверяет как и Accept заголовок, так и Requested-With: XMLHttpRequest, можешь вообще явно на каждый рут передавать доп. параметр вроде format, который по дефолту равен html. Если тебя смущает то, что ты базу дрочишь прямо в контроллере, то не смущайся, если хочешь то сделай отдельный сервис(отдельный пхп класс в отдельной папочке, у которого может быть или небыть богатая логика и вот это всё) и дергай всё через него
1010 1948493
На сайте есть алерт, сообщение которого зависит от некой переменной. Сейчас такой кейс, что таких алертов может быть несколько и различаются они только сообщением алерта. Вынести весь html код алерта в отдельный файл и просто подключать его или лучше сделать что-то типа AlertUtil и просто дергать у него статический метод, который будет принимать дескрипшн алерта и выплевывать html код. Что посоветуете, аноны ?
1011 1948652
Не отображается этот код пыхи на странице, пхп.ини чекал, в теге мета прописывал кодировку, запускаю через опен сервер

<!DOCTYPE HTML>
<html>
<head>
<title>Список студентов</title>
<meta>

</head>
<body>
<? echo $_SERVER['HTTP_USER_AGENT'];?>
</body>
</html>
1012 1948684
Можно ли мешать код-сверху php,ниже html?
Просто учебные примеры кишат этим
1013 1948763
>>1948213

Погоди немного, всего 1000 постов.

>>1948299

Вообще, запросы на увеличение/уменьшение кол-ва - плохая идея, так как они не идемпотентны (если произойдет ошибка и запрос отправится повторно, то кол-во товара изменится 2 раза). Лучше слать запрос вида "задать кол-во товара X равным Y". Его можно повторять сколько угодно раз и ничего не изменится. Также, надо сделать валидацию, что такой товар существует, что его достаточно в наличии.

Операцию изменения количества наверно правильнее сделать в сервисе. Потому что завтра тебе захочется, например, добавлять в корзину подарок и как ты это будешь делать? Код в контроллере не повторно используемый, а сервис можно будет вызвать для добавления подарка.
1014 1948764
>>1948652

Надо использовать <?php вместо <?

>>1948684

Если у тебя все программа умещается в один файл на 200 строк, то можно. Если приложение большое, то надо разделять файлы с бизнес-логикой и с отображением данных.
1015 1948824
>>1948121

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

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

Хороший учебник должен объяснять, зачем это делается, а не предлагать копировать код, не понимая, зачем он нужен.
1016 1948879
>>1948764

>Надо использовать <?php вместо <?



Пробовал, так же
1017 1948957
Какая CMS самая удобная? Вротпресс? Поэтому на ней куча сайтов?
1018 1948979
А какой РНР-фреймворк быстрее всего изучить для нуба? Yii? Я прав?
1019 1949034
>>1948979

> Yii?


Yii безбожно устарел + там хватает своих неочевидностей и магии.
Если хочется окунутся в легаси 10летней выдержки, то бери этот фреймворк, работы на наш век хватит

>А какой РНР-фреймворк быстрее всего изучить для нуба?


Зависит от твоего подхода к разработке.
Если склонен к хуяк-хуяк, то ларавел.
Если к тырпрайзу - симфони
1020 1949064
для админа нужна отдельная таблица в БД?
1021 1949065
>>1949064
и нужна ли отдельная форма для админа?
1022 1949069
>>1949064
В простейшем случае можно ограничится одним полем в таблице юзеров is_admin, можно поставить enum или даже внешний ключ на список ролей.
Можно завести систему ролей и прав RBAC (права к ролям, роли к юзерам).
1023 1949070
>>1949065
Форма для чего?
1024 1949072
>>1949069

> можно поставить enum или даже внешний ключ на список ролей.


шта?
>>1949070
для админа.где нибудь ссылка мелким шрифтом на основной странице внизу,которая переведет на форму ввода его логин(мыло) и пароль
Снимок экрана 2021-02-22 134102.jpg72 Кб, 701x630
1025 1949084
накатал черновой вариант.
1026 1949086
>>1949072

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


Ну сделай так. Либо просто отдельным роутом вида site.com/admin без явно кнопки/ссылки если юзеру не положено знать про админку

> можно поставить enum или даже внешний ключ на список ролей.


>шта?


enum в таблице user поле role и варианты: user, admin
либо вынести доступные роли в отдельную таблицу user_role
в ней будет 2 записи - роли user и admin
в таблице user поле role_id fk на таблицу user_role
image.png30 Кб, 919x272
1027 1949089
Кажется, автор задачи сам неправильно решил, ведь при его решении "а" будет тоже искаться, а по условию такого не должно быть.
Сам решил вот так:
echo preg_replace('#a[^\\sa]+a#', '!', 'aba acacca azzza wwwwa aaa');

Что скажете? Я что-то не так понял, или все-таки я сделал правильно?
1028 1949090
>>1949086
не user_role, а просто role
1029 1949102
>>1949086

>enum в таблице user поле role и варианты: user, admin


либо вынести доступные роли в отдельную таблицу user_role
в ней будет 2 записи - роли user и admin
в таблице user поле role_id fk на таблицу user_role
как эта тема называется(хочу почитать)
1030 1949106
>>1949102
Это основы реляционных баз данных
1031 1949205
$pdo=new PDO('mysql:host=localhost;dbname=webapp;charset=utf8','root', '');

$sth = $pdo->prepare('SELECT* FROM users');
$sth->execute();
$sth->setFetchMode(PDO::FETCH_ASSOC);

while($row=$sth->fetch()){
$id=$row['id'];
$login=$row['login'];
$email=$row['email'];
}
почему он выводит только одно поле?

}
1032 1949411
>>1949205
через foreach тоже самое
1033 1949418
Я где-то слышал, что если мы перебираем в foreach результат какой-то функции, ну например:

>foreach ( $model->all() as $model )


То эта функция будет вызываться при каждой итерации. Это правда?
1034 1949430
>>1949418
https://ideone.com/zNbOoQ
Да нет, один раз вызывается и потом крутит в foreach результат функции.
1035 1949666
А насколько сложно научиться писать эксплоиты и бэкдоры в вордпресс?
1036 1949925
Аноны, подскажите по архитектуре.
Суть такова - есть приложуха на slim, пытался васянить чистую архитектуру, active-domain-responder, eloquent ORM, но получилась хуита такого плана - экшены вызывает сервис из слоя домен, а в сервисе у меня полнейший венегрет. Я стараюсь делать провайдеры которые в сервисе вызываются, и которые в себе уже вызывают ORM классы ( которые у меня в отдельной папке в условно одну кучу, так как нужны в каждом сервисе).
Но чет мне это все не нравится.
Че почитать что бы правильно сделать.
Про всякие "сущности" вообще нихуя не понимаю.
1037 1949978
Иваны, есть одна проблема, смежная с ПХП.
Недавно, ради интереса и опыта, связался с одним челом, который предложил вместе сделать сайт - типа он верстает, а я сделаю функционал и натяжку его вёрстки. Мне делать было нех и я согласился неглядя. Ну там речь шла о небольшом блоге-статейнике, как мы с ним уговорились.
Первые звоночки прозвенели когда он начал рассказывать какие сайты как много зарабатывают, не сверстав даже главную. Потом он начал мочить по функционалу - какой-то форум захотел, разделы блядь, ещё какую-то неведомую срань. Как выяснилось этот перец вообще ни в зуб ногой по сайтам и вебдеву и тупо копирует увиденное у других.
Ну а потом он дал свою вёрстку - чтобы её натянуть мне нужно будет всё перевёрстывать т.к. она запилена в каком-то визуальном редакторе под другую CMS. Я ему предлагал тупо взять левый дизайн и вёрстку и делать на ней, но он сам хочет верстать.
Теперь вопрос - как мне его слить по-тихому? Я придумал пока 2 варика: 1 - ебать ему мозг правками по вёрстке пока сам не свалит, 2 - сказать ему прямо, что я ебал работать с его материалом и без чёткого плана он составить его точно не сможет. Что лучше?
1038 1949991
>>1949925

>active-domain-responder


Какой ещё ADR, если Слим на MVC работает? Сдаётся мне, что ты не совсем понимаешь что делаешь - для ADR сам фрейм пиши. Да и вообще он бесполезная хрень, если подумать - в норме контроллеры тонкие, и если ещё и разделять на экшон и респондер логику, то там по 2 строчки кода будет. И по 25 бойлерплейнта из неймспейсов и структур ООП.
Из контроллера вызывай сервис, где содержится логика работы приложухи. Всё.
1039 1950018
>>1949978
Работаешь бесплатно? Если да, то сливай как хочешь, ты ему ничем не обязан.
1040 1950027
>>1950018

>Работаешь бесплатно?


Думал попрактиковаться немного, и, если получится, то сесть на поддержку этого сайта. Теперь хуй подпишусь на такое - гемор один.
1041 1950064
>>1950027
зачем такой "коллега" нужон? капец, что сложного просто сверстать адаптив 1 страницы за день? даже не зная ничего не уйдет больше трех дней
короче, тебе проще самому взять все сверстать и натянуть это дело, как нравится
1042 1950079
>>1950064

>зачем такой "коллега" нужон?


Я подразумевал, что он ещё и контент пилить будет - сайт по тематике которую он знает.

>что сложного просто сверстать адаптив 1 страницы за день? даже не зная ничего не уйдет больше трех дней


Ну вот он не знает и верстает 3 дня одну страницу, а на выходе меню из <label> без <a>, стили впердолены прямо в разметку блоками, причём перекрывая друг-друга мне это разгребать весь день придётся при натяжке, 2 футера и прочий трэш, который хочется развидеть.

>проще самому взять все сверстать и натянуть это дело, как нравится


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

Не связывайтесь с нулевыми, Иваны.
1043 1950124
>>1949991

>>Сдаётся мне, что ты не совсем понимаешь что делаешь - для ADR сам фрейм пиши.



Так и есть, если не в напряг распиши в чем суть ADR? Или статью какую.
Я когда пердолился со слоистой архитектурой, особенно как пример отделения логики приложения от реализации БД - вроде как типа понял. Но потом дошел до реализации, с ORM моделями елоквента ( в которых как часто в гайдах и показывают - какая то бизнес-логика живет обычно ) - и понял что хуита у меня а не слои.
1044 1950174
>>1950124

>в чем суть ADR?


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

>статью какую


Я в гугле неплохие статьи находил.

>ORM моделями елоквента ( в которых как часто в гайдах и показывают - какая то бизнес-логика живет обычно


Я туда только всякие небольшие преобразования данных пишу, вроде вывода отформатированной даты. Не любитель я всё в модель пихать - через сервисы\менеджеры делаю.
Screenshot.png34 Кб, 588x259
1045 1950412
ПАРНИ, есть какой-то способ красиво и быстро запихнуть всех Ивашек в массив? Если пушать их через одну строку то строка гигантская получится.
1046 1950489
>>1950412
Попробуй Faker
1047 1950490
>>1950489
Нет, надо по нормальному.
1048 1950492
>>1950490
Не делает никто так, как на скрине.
Данные берутся из каких-то источников. Например, можешь представить, что тебе пришел json с сотрудниками - парси из json-а
1049 1950494
>>1950492
Я новичок. Объясни как сделать это со стандартным php 8.0, без джсонов и факеров.
1050 1950495
>>1950494
У тебя какая задача стоит?
Сгенерить 16 рандомных сотрудников, чтобы код потестить?
1051 1950496
>>1950495
Запихуть 16 сотрудников в массив объекта в наиболее компактной и удобной форме.
1052 1950505
>>1947467

>>если я буду заниматься ежедневно по 6-8 часов?



Ох уж эти фантазии. Я все это проходил.
Чел если ты до сего момента не имел подобного опыта и дисциплины на это - у меня для тебя оче плохие новости.
Через пару лет "обучения" ты вдруг поймешь что проебывался 70% времени, и это еще хорошо. Потому что скорее всего забьешь хер.
1053 1950510
>>1950174
Скинь, если не сложно, как у тебя все это организованно. Хоть кривой жепег картинкой.
Где сервисы хранишь, каждый сервис уникален для отдельного контроллера? Но полюбасу есть такие которые инкапсулируют общуюю какую то логику. Их в отдельном общем каталоге? А потом от них наследуешь сервис для конкретного контроллера?
А то у меня уже ORM моделей наплодилось блядь. И в разных "контроллерах" постоянно почти одинаковые вещи всплывают, типа получить выборку по модели, с определенным набором отношейний.
По хорошему нужно какую то прослойку сделать, в которой будут какие то общие бизнес-логические задачи реализовываться, а орм-ки будут в этой прослойке. Что то типа "сущности", но пока что как то не понятно.

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

на последний вопрос если что можешь не отвечать, понимаю что это чето совсем не конкретное, это больше мысли в слух
1054 1950513
>>1950412
ПОМОГИТЕ ЕСЛИ НЕ ГАДЫ
1055 1950514
>>1950496
Никак компактнее не сделаешь. У тебя объекты не объединены никак, так что по ним не пройти как по коллекции.
Можно сразу создавать объекты и писать в массив:
$employes = [
new Employe(...),
new Employe(...),
...
]

Либо так же как создал 16 строками, еще 16 строками запихнуть в массив
1056 1950555
Аноны, подскажите правильный порядок действий в такой задаче:

Из БД я формирую статистический отчет. Это пост запрос из формы с кучей праметров. Сервис обрабатывает запрос и возвращает результирующий массив. Далее мне необходимо сделать две вещи - вывести данные клиенту на страницу, и сформировать эксель файл.
С выводом данных клиенту нет особых вопросов.
С формированием файла проблем тоже нет, делаю либой PHPSpreadsheet.
Непонятка с тем как управляться с этими созданными эксель-файлами, и как их удалять с сервера.
По логике выглядит так - отправляю запрос ajax-ом, запрос достает данные из БД, формирует эксель-файл, сохраняет его в отдельный каталог на сервере. А клиенту возвращаются данные и ссылка на этот эксель файл, на скачивание. Вопрос первый - уникальность имени сохраненного файла, так как все файлы в одном каталоге - то имена должны быть уникальны. Но уникальные рандомные симфолы - это не красиво как то. Второе как удалять? Кроном запускать скрипт который данный котолог проверяет, и удаляет файлы отчетов дата создания которых старше чем 15 минут. Это то что я сделал.
Но может иные более оптимальные варианты есть?

и кстати , сколько на свободном рынке стоит такой небольшой сервис, в котором зареганные пользователи создают записи,с разными данными, а потом эти записи достаются статистическими запросами, по разным полям записи, для сотрудников небольшого бизнеса сделал. Типа в системе записывается некая работа, и расходники которые на нее потрачены. Потом по этим работам, по исполнителям, по расходникам и т.п. стат. отчеты за период по времени
1057 1950562
>>1950555

>Но уникальные рандомные симфолы - это не красиво как то.


таймстеп + пару рандомных символов как вариант

>Второе как удалять? Кроном запускать скрипт который данный котолог проверяет, и удаляет файлы отчетов дата создания которых старше чем 15 минут. Это то что я сделал.


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

>котолог

1058 1950604
>>1950513
$ИваныПетровы[] = new Empolye(...);
$ИваныПетровы[] = new Empolye(...);
...
$ИваныПетровы[] = new Empolye(...);
1059 1950611
>>1950604
А потом прилетает таска: добавьте еще 100500 ИвановПетровых
1060 1950613
>>1950513
Ты бля в цикле можешь их добавить в массив или вообще поехал уже?
image.png7 Кб, 335x174
1061 1950633
>>1950613
Так что ли?
1062 1950635
>>1950412
Тебе типа такого надо было?
>>1950633
1063 1950701
>>1950611
Через цикл делай.
image.png35 Кб, 760x163
1064 1950710
1065 1950775
>>1950701
Я возьму фейкер и нагенерю скок хочешь.
А тот анон не может в фейкер и будет сидеть построчно выводить $employe138542 = new Zalupa(hui, vkachus);
1066 1950784
почему извлекает только одну запись,а не все?(без хтмл работает норм)
image.png136 Кб, 534x230
1067 1950788
>>1950784
Что ты пытался этим сказать?
1068 1950792
>>1950788
перебрать массив
1069 1950794
>>1950784
А как насчёт того, чтобы думать немножечко перед тем, как постить итт?
1070 1950796
>>1950792
Ну перебрал.
А делать что с ним собрался?
1071 1950798
>>1950796
отобразить в таблице
>>1950794
а что не так?
1072 1950801
>>1950798
Твой код вообще работать не должен
image.png6 Кб, 256x184
1073 1950804
Не знал, что такой сайдэффект есть
image.png1 Кб, 141x74
1074 1950805
Снимок экрана 2021-02-24 190344.jpg34 Кб, 1078x276
1075 1950806
>>1950801
добавил в цикл эчо
1076 1950808
>>1950784
Убери форич и твой код сломается
1077 1950812
>>1950806
Ну вот он вывел вне таблицы перед хтмл твои эхо.
А как это же вывести в таблице в хтмл?
1078 1950815
>>1950812
але,про это я и спрашиваю сначала.
где облом,просто точно укажите,а не глумится
1079 1950817
>>1950815
Простейшая задача. Если и такое не можешь решить - бросай вкат, это не твоё
1080 1950818
>>1950817
сделать всю таблицу частью пхп кода?
1081 1950819
>>1950818
Близко
1082 1950821
>>1950818

Еще подсказка:
php - шаблонизатор, можешь прямо в хтмле ебашить пхп код сколько хочешь
1083 1950822
>>1950510

>как у тебя все это организованно


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

>если не брать в расчет контейнеры зависимостей


>можно организовать чем то типа фабрик с тайпхинтами?


Контейнеры и есть фабрики. Но так да - я тоже люблю получать зависимости так:
function funcName(App\Namespace\SomeClass $object)
или даже так:
function funcName(App\Namespace\SomeClassInterface $object)
1084 1950841
>>1950821
засунуть таблицу в цикл?
Снимок экрана 2021-02-24 200801.jpg82 Кб, 1048x614
1085 1950870
а теперь другая проблема,нужно чтобы для каждого поля была ссылка на удаление
1086 1950879
>>1950870
не,это чушь.
как тогда код поймет,что именно эту запись надо будет удалить?
1087 1950889
Как в этом вашем PHP работают области видимости?
Как грамотно заполнить массив, объявленный глобально, через функцию?
Что-то мне подсказывает, что использовать global <var> это какой-то быдлокод.
1088 1950911
echo"<a href='delete.php?id=row['id']'>delete</a>";
поправьте пжл
1089 1950915
echo"<a href='delete.php?id=$id'>delete</a>";
echo"</td>";
переделал,но td в запросе висит
Снимок экрана 2021-02-24 215700.jpg54 Кб, 711x492
1090 1950939
короче,получилось.
удаление тоже работает
1091 1951018
>>1950939
ты красава, я еще регулярки изучаю, к полноценной практике еще даже не прикасался
Screenshot7.png37 Кб, 733x866
1092 1951043
Анон, я не понимаю как декомпозировать задачу на разные функции, делегировать им обязанности, я понимаю что мой код пикрелейтед это говнокод, но как разбить это все дело с использованием пространства имен, что бы общая логика была в одном месте, а сама функция не росла как дворец путина.

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

Я прихожу к удручающему выводу, что 5 месяцев проебал не понятно на что, и надо было сразу лезть на юдеми какой нибудь и наваливать англоязычные материалы.
1093 1951048
>>1950939
Ты уверен, что нельзя вывод прописать единожды ?
Погугли print_r, может поможет локаничнее прописать.
1094 1951054
>>1951043

>разбить это все дело с использованием пространства имен


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

>уже 5 месяцев учу ПХП(книги, ютубчик, халявные скаченные курсы)


Самостоятельно хоть что-то сделал, или только по туториалам и задачкам учишься?
Пили про студентов таблицу - из ОПпоста, если ещё не.
1095 1951065
>>1951054
Решил сделать простейшие игры, одна спрашивает четное ли число, а другая рандомно выдает мат выражение, в обоих случаях приветствует тебя, проверяет твой ответ и прощается после 3 раундом. Если ответ не верный, игра завершается.

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

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

Вообще я мечу на фриланс в будущем(в неопределенном), но я так понимаю без ебучей бесконечной верстки(и JS) там никак? Или есть задачи?
1096 1951066
>>1951054

>Пили про студентов таблицу - из ОПпоста, если ещё не.



Спасибо анон, ознакомился, выглядит не плохо, надо будет взяться.
1097 1951088
Всем привет.
Собираюсь вкатиться работать на заводик (через год там будет зп 50к при работе 2/2. Параллельно хочу вкатиться в wordpress разработку. В идеале зарабатывать хотя бы 500-1000 в день. Каковы шансы? Или таких как я миллиард и лучше даже не пытаться?
1098 1951097
Бля, подскажите далбоебу как с помощью константы __DIR__ скакануть на два каталога наверх относительно скрипта в котором нужен доступ.
Такое
$dir = __DIR__ . "/../../catalog/test.txt";

чет не работает. ОС - шиндовс пок что.
1099 1951098
>>1951088
Скажу по себе - сложно потому что не пхп сложен, а потому что будет тяжело себя заставить учиться. А потом будет тяжело себя заставить инициативно искать работу, выполнять таски и все такое.
Если ты таким никогда не был - умножай вероятность слива на 10
1100 1951149
>>1951098
Я рофла ради освоил верстку в вузе (онли html/css) за месяц где-то на уровне 4/10. Сейчас хватает, чтобы верстать сайты типа (okna-ramenskoye.ru). Сверстал его за 3 вечера, не особо торопять. Багов много, но заказчику по сути вообще на всё похуй. Нужен был сайт шоб был как говорится. Мог бы сверстать лучше, по бэму, кроссбраузерность норм поправить и всё такое. Заплатили за него 5к, т.к. сам предложил ценник. Могли бы заплатить больше, как оказалось)
Так что, думаю, с пыхой проблем не будет в изучении, да и в вп уже ковырялся. Могу сделать кастомные поля для записи, например. Самое жесткое, что я делал это кастомные записи (полдня гуглил). Хочу просто брать заказы, чтобы вешать верстку на вп и прикручивать вукомерс. Это половина заказов на фрилансе. И потрачу на изучение этого где-то полгода не больше.
1101 1951211
>>1950939
У тебя кусок шаблона в контроллер уехал.

А вы говорите, надо сначала базу, не надо MVC.
1102 1951244
как сделать ссылку,чтобы произошел переход из папки на верх дериктории в другой файл?
1103 1951249
>>1951097
Строчка из автолоадера:
require __DIR__ . '/../vendor/autoload.php';
Всё работает (шиндоус)
1104 1951361
Вроде нормальное решение? https://ideone.com/JXml2B
1105 1951421
>>1951149
А потом спрашивают почему сайты такое глючное лагающее говно
1106 1951465
>>1951421
А ему и отвечают: "Плати больше, будет меньше багов"
Снимок экрана 2021-02-25 172443.jpg122 Кб, 1310x590
1107 1951503
в лучших традициях Темы Л
1108 1951513
>>1951361

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

>>1951244

Можно попробовать <a href="../file.php">. Вот урок про относительные URL: https://github.com/codedokode/pasta/blob/master/network/urls.md

>>1951097

Должно работать. Еще можно попробовать dirname(__DIR__), чтобы подняться на один уровень выше.
1109 1951537
>>1951065

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

>>1951043

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

Можно попробовать сделать так. Опиши кратко алгоритм и по нему пиши код, вынося шаги алгоритма в функции. У тебя алгоритм будет:

- узнать имя пользователя
- N раз подряд:
- сгенерировать выражение
- узнать ответ на выражение
- проверить ответ
- попрощаться с пользователем

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

Также, не очень понятно, почему greetUser и question это разные функции. Они ведь только выводят подсказку и ждут ввода ответа?

Неймспейс лучше было назвать не General, а по имени программы. Последний if ($i ==General\COUNT_ROUNDS) не имеет смысла.

Могу посоветовать тебе больше решать задач, где требуется разбивать код на функции. Если ты дошел до ООП, то у нас есть задачки, где это требуется: >>1936147 >>1939079

Если ты не дошел до ООП, то можешь решить такую задачку: напиши функцию, которая принимает число от 0 до 999 999 999 и возвращает его прописью, например "десять тысяч (10 000) рублей". Тут понадобится разбивать код на функции, чтобы не получилась лапша.
1110 1951552
>>1950939

Замечания.

Параметры соединения с БД не надо копипастить в каждый файл, лучше вынести их в конфиг. HTML-код надо вынести в шаблон, как описано тут https://github.com/codedokode/pasta/blob/master/php/templates.md

Данные при выводе в HTML надо экранировать для предотвращения XSS.

Удаление делается не GET-, а POST-запросом (отправка формы кнопкой, например). GET запрос не должен менять состояние сервера и что-то на нем удалять.

>>1950889

Лучше всего так:

$array = some_function();
1111 1951565
>>1950939

Вообще, у нас в шапке есть задача про список студентов ( https://github.com/codedokode/pasta/blob/master/student-list.md ). Она очень похожа на то, что ты делаешь, но к ней идет много полезных комментариев, как это лучше делать. Советую ее почитать.

>>1950804

Код очень корявый, но сайд-эффектов тут нет. Переменная $item создается при выполнении цикла и так как ее никто не удаляет, то она остается доступной. Но писать так не стоит.

Строчка $item['field']; получает значение элемента и ничего с ним не делает, просто отбрасывает его. Она вообще никаких эффектов не делает, ее можно убрать и ничего не изменится.

>>1950784

Тебе надо перенести foreach в HTML-файл.
1112 1951575
>>1951552

>Данные при выводе в HTML надо экранировать для предотвращения XSS.



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

>Тебе надо перенести foreach в HTML-файл.


сделал ранее на замечание анона выше
1113 1951583
>>1950710

Можно так, но вместо этого:

[^a-zA-Z0-9]

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

>>1950633

Это неправильный код. Если тебе хочется обратиться к переменной по имени, составленному из другой переменной (${"var".$i}), то тебе нужна не переменная, а массив: $var[$i].

>>1950555

Если эксель-файл формируется не дольше нескольких секунд, то зачем его сохранять на диск? Отдавай его в ответ на запрос, не сохраняя на диск. То есть пользователь жмет "скачать", отправляется запрос и в ответ на него генерируется и отдается файл.
1114 1951590
>>1950412

Можно сделать массив с описанием сотрудников, такого вида:

$people = [
// имя, должность, ранг, босс, количество
["Иван Петров", "Менеджер", 1, false ,5],
["Иван Петров", "Менеджер", 2, false , 3],
....
]

Далее на основе массива создать объекты-сотрудники.

>>1950510

> каждый сервис уникален для отдельного контроллера?



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

А контроллеры создаются по страницам/разделам сайта. Их количество и названия не обязаны совпадать с сервисами.

> А потом от них наследуешь сервис для конкретного контроллера?


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

> и не брать в расчет пимпл, который есть сревис локатор -


pimple это DI container. Не надо его использовать как Service Locator.
1115 1951603
>>1949925

А тебе не подойдет архитектура MVC, описанная тут: https://github.com/codedokode/pasta/blob/master/arch/mvc.md ?

>>1949089

У него там есть тонкий момент. По умолчанию квантификаторы вроде плюса жадные - они стремятся захватить максимально возможное число символов (но чтобы при этом регулярка совпадала со строкой). А там в решении используется нежадный квантификатор +?, который стремится захватить минимальное число символов. Потому выражение .+? не совпадет с буквой a. За одним исключением: так как даже нежадный плюс требует минимум одно совпадение, то в строке "aaa" совпадение все же будет.

Получается, у автора ошибка: https://ideone.com/Ai5K7G
l1-bonus-survivor.jpeg364 Кб, 800x908
1116 1951606
Дайте подсказку на решение
1117 1951608
>>1948493

Если ты используешь шаблонизатор вроде twig, то там есть макросы, у которых могут быть параметры. Если не используешь ... можно написать такую функцию в отдельном шаблоне:

<?php

function alert(...) {
?>
тут HTML-код
<?php
}

Корявенько, потому лучше использовать шаблонизатор с макросами.
1118 1951611
>>1948879

А в адресной строке браузера идет что-то вроде http://localhost:8000/file.php или file:///c:/file.php ? Если второе, то ты не запускаешь PHP код, а просто открыл исходник браузером. Адрес должен начинаться с http. Файл должен иметь расширение .php
1119 1951614
>>1951606

Можно создать массив с номерами от 1 до N. Затем проходиться по нему и удалять из него элементы, пока не останется нужное количество.
1120 1951616
почему,если извл только отдну запись из бд,то fetchAll and fetch ведут себя по разному?и приводят к ошибкам
1121 1951640
<?php
$x=1;
while($x<=49){
echo "<div>".$x."</div>";
$x++;
}
?>
как мне сделать 5 блоков в ширину и 6блоков в высоту?
или это не рабаотает так?
1122 1951667
>>1951421
Все по-разному делают, на самом деле. Можно сделать на Вордпрессе и Элементоре и будет тормозное говно, но быстро и дёшево. А можно взять чистый фреймворк и пилить на нём целый месяц - будет ответ за 10-100 мс от сервера, везде асинхронность и сопли девственниц, и цена как за хату в хрущёвке.
1123 1951673
>>1951640

>как мне сделать 5 блоков в ширину и 6блоков в высоту?


Я бы сделал просто - вывалил 30 блоков в хтмл, а потом через стили\жс ограничил ширину в 5 блоков, и всё бы само встало как надо.
Но тебе лучше делать через 2 вложенных цикла for.
1124 1951675
>>1951673
я забил уже,читаю grid
я на верном пути?
1125 1951679
>>1951675
Слишком быстро забил.
1126 1951692
>>1951673
я не знаю жс.
а на гриде я уже сделал
1127 1951697
такой вопрос
вот я что то ввел и я хочу чтобы в колонке рядом за пару секунд в появилось то что я написал.
это решается на жс,так?
1128 1951712
>>1951614
Тоже так думал, но как реализовать хз
1129 1951786
>>1951590

>pimple это DI container. Не надо его использовать как Service Locator.



На сколько помню пимпл в принципе в контроллере слим передается как свойство this. В себе он в замыкании которое мы добавляем в контейнер вызывает класс ( не помню как он разрешает зависимости этого класса ) , создает экземпляр класса и сохраняет его.

А вообще всей этой петрушки с инверсией управления и низкой связностью не до конца и не понял пока что.
1130 1951816
>>1951786
В контроллеры - пофиг, можно и целиком передавать. А вот внутренние зависимости лучше руками конфигурить.
16122877404970.png480 Кб, 772x798
1131 1951907
>>1951606
>>1951614
>>1951712
https://ideone.com/lDV275
Почти три часа решал, а все из-за того, что при присвоении переменной массива временной переменной, ключ(индекс) последний оставался тем же значением, что и до удаления элемента. Поэтому иф во вложенном цикле никогда не работал и из-за некста индекс улетал за пределы массива. Поэтому ласт ветвление я добавил в самом конце. Хз, мб из-за того шо рубит так плохо думалось, но почему-то никак не мог найти эту деталь.
Сори за говнокод посоны.
1132 1951908
>>1951907
как я понял, можно и без временной переменной сделать с помощью array_key_last, но похоже не везде работает эта функция
Screenshot.png27 Кб, 832x378
1133 1951963
Как сделать так чтоб echo последней строки выводило сумму сложения значений из двух массивов в объектах? А то оно уравнение выводит как есть.

echo "Среднее (({$procurementDepartment->countAll()[0]} + {$sellDepartment->countAll()[0]} + {$adDepartment->countAll()[0]} + {$logisticDepartment->countAll()[0]}) / 4)";
1134 1952024
>>1951963
Помогите, пожалуйста.
1135 1952025
>>1951963

>из двух массивов


Вернее 4, там 4 объекта с 1 массивом.
1136 1952039
>>1951963

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

Внутри строки в кавычках нельзя писать произвольные выражения и суммировать.
1137 1952324
Как сделать просмотр своих ответов и ошибок в задаче на тестхаб после прохождения теста вне рамок текущей сессии? Дело в том, что в актуальном тесте могут же удалить некоторые вопросы, добавить новые или поменять их порядок. У меня есть табличка test_results, где записан просто общий балл за пройденный тест. Я использую постгерс, может мне json-колонку answers и туда вообще все добавить - и тексты вопросов, и ответы пользователя?
1138 1952333
>>1952324

>табличка test_results, где записан просто общий балл за пройденный тест


Очевидно, что такой вариант не подходит для

>просмотр своих ответов и ошибок в задаче



Стоит хранить данные по ответам на тесты в более первозданном виде: юзер, на какой вопрос, как ответил, правильно/не правильно, и уже на основе этих данных получать данные об ошибках
1139 1952484
Курс Дмитрия Полоса по Вордпрессу - годнота или хуета ебаная?
мимо хочу стать верстаком под цмс вордпресс
1140 1952660
Пилю сейчас сортировку для таблицы из задачи про список студентов. Допустим, мы кликнули на заголовок какого-то столбца -> у нас по нему отсортировались данные (т.е. кликнули мы на него, произошла сортировка asc, соответственно линк изменился на desc). И такой вопрос, линк сортировки на противоположную должен меняться только для текущего (по которому кликнули) столбца или для всех остальных в том числе ?
1141 1952684
>>1952660
Только для текущего, конечно. Делать кнопки, которые сами по себе меняют поведение — плохая идея, имхо.
1142 1952699
>>1952684
Спасибо, Анон. Так и сделал изначально, потом решил чекнуть, так или не так. Погуглил, нашел примеры, так там у типов при клике на какой-либо столбец (н-р. asc сортировка) линк на desc меняется у всех, а не только у того, по которому кликнули. Вот и решил уточнить.
1143 1952709
>>1952699

>нашел примеры, так там у типов при клике на какой-либо столбец (н-р. asc сортировка) линк на desc меняется у всех, а не только у того, по которому кликнули


Похоже на баг
1144 1952719
>>1952333

>Стоит хранить данные по ответам на тесты в более первозданном виде: юзер, на какой вопрос, как ответил, правильно/не правильно, и уже на основе этих данных получать данные об ошибках


Так и думал делать, но что если автор теста изменит вопрос или удалит его, поменяет правильный ответ?
1145 1952730
гребаные блоки,как мне пичет от позиционирования!
1146 1952817
>>1952719
Создавай новый, а старый помечай как измененный или удаленный.
1147 1952831
Тред тонет.
У курсе?
button.jpg17 Кб, 625x114
1148 1952962
помогите сделать кнопу для скрипта,который будет выводить подробные сведения о записи
1149 1952991
>>1952817
А не замусорит ли это базу, если на каждое редактирование запятой в вопросе или ответе, создавать еще одну запись?
1150 1953031
>>1952991
Тебе пары килобайт жалко?
батон.jpg36 Кб, 709x249
1151 1953118
короче с кнопкой спустя кучи времени получилось.
но вот в чем прикол-если посмотреть исходник,там видны значения id,как если бы делал через get.
это же не безопасно?
1152 1954042
Господи, какой кусок говна мой код. Что php, что js на клиенте.
Смотрю и плачу блядь.
1153 1954105
>>1954042
Поздравляю - у тебя прогресс.
16042061732130.jpg103 Кб, 500x500
1154 1954269
Сделал задание "Опечаточники" на регулярки.
Обводит первую букву в квадратные скобки — https://ideone.com/wz2Aus

Заменяет английские буквы на русские — https://ideone.com/nplOGz

Не до конца сделал, как я понял. Но я не понял, как сделать так, чтобы код сумел понять, что это именно русское/английское слово. Потому что, например, регулярка подходящая под английское слово так же подойдет и под русское, а для русских слов надо писать отдельную программу, как и для английских. Получается, что регулярка найдет и в программе для изменения русских букв на английские английское слово, и в программе для изменения английских на русские. В итоге получится каша. Как сделать так, чтобы определить, что это именно русское слово, а не английское, и наоборот? Возможно, до меня что-то очень простое не доходит, а я и не вижу. Сори за говнокод.
1155 1954322
>>1954269

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


Можно пройтись пройтись слову, если в нем английских букв больше (или, например, есть буква, характерная только для английского, типа Q J W V F и подобные), то значит это инглиш.
1156 1954454
>>1954322
а франсе?
1157 1954650
>>1954322
Точняк. Второй вариант больше подходит. В первом же случае, слово, например, "соус" может целиком состоять из английских букв, но это же русское слово. Хотя и второй вариант не поможет с такими словами. Но все-таки это уже что-то, ведь и правда, в русском слове не будет таких букв. Спасибо.
1158 1954694
Сап, слонолюбы. Сразу говорю, что я свежее мясо, а по сему возможны глупые вопросы, так что если у вас на них аллергия, то не читайте дальше.

- Почему у пыхи самое няшное коммунити ( сужу по сосачу ). В других тредах все обкидывают друг друга говном на любой почве, аж глаз дергается.
- Почему некоторые рофлят над пыхой? Если язык спустя столько времени популярен и активно используется, разве это не говорит о том, что он по крайней мере хорош?
- Как я понимаю пыха - это easy to learn hard to master? Для меня при подобном занятии важно созерцание того, что я наклепал, хочется видеть какие-то результаты сразу, пусть и хуевые. В пыхе это возможно? Ну как бэ хочеца через какое-то время сделать свое поделие, кривое, косое, но я сделаль, а не дрочить теорию овер9000 лет, дабы увидеть первый рабочий проектик.

Заранеее спасибо за то, что прочитал мою простыню. <3
1159 1954696
>>1954694

> хочеца через какое-то время сделать свое поделие, кривое, косое, но я сделаль


Смотря что ты хочешь сделать. К ЯП это отношения не имеет.
1160 1954708
>>1954696

>Смотря что ты хочешь сделать. К ЯП это отношения не имеет.


Что угодно юзабельное и в теории нужное другим людям
1161 1954724
>>1954694
комунити в треде хорошее из-за ОПа, он приходит и отвечает на вопросы, чекает код и поправляет, где надо, хочется сказать ему спасибо
1162 1954727
>>1954694

> няшное коммунити


Не няшное,а такое же
1163 1954730
>>1954694

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


Это ты не был в телеграм чатах по пыхе. Вот где друг друга хуями обкладывают. Причем делают это 30+ васяны

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


Ну рофлят и рофлят. Работа на пыхе есть, вкат доступен.

>- Как я понимаю пыха - это easy to learn hard to master?


easy to learn относительно других бекенд языков
hard to master больше про архитектуру и ифраструктуру

>хочется видеть какие-то результаты сразу, пусть и хуевые. В пыхе это возможно?


Да, как и в любом интерпретируемом языке.

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


С этим проблем нет. Пыха в целом про хуяк-хуяк-в-продакшен
1164 1954752
https://ideone.com/FLycbZ — каждое предложение с заглавной буквы.

Не понимаю, как работает строка
$new_string .= ($key & 1) == 0?
mb_ucfirst(strtolower(trim($sentence))) :
$sentence.' ';

Как понять $key & 1? То есть побитовый оператор. Я посмотрел, там же получается нумерованный массив из элементов, которые являются предложениями. Но элемент с индексом 1 получает $sentence.' '; так ведь не должно работать, предложение с индексом 1 не получит заглавную букву. Но все работает, все предложения в тексте становятся с заглавной буквы. Не ПоНемАю!
1165 1954762
>>1954694

>у пыхи самое няшное коммунити


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

>Почему некоторые рофлят над пыхой?


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

>easy to learn hard to master?


Это любой современный ЯП вроде пхп, жс, пистона и тд.

>Для меня при подобном занятии важно созерцание того, что я наклепал


Бекенд про данные, а не созерцание. Хочешь сразу видеть результат - иди на фронтенд, а на беке принято передёргивать на структуры, архитектуру и абстракции.
1166 1954769
>>1954752

>Как понять $key & 1?


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

>mb_ucfirst(strtolower(trim($sentence))) :


Завернул аж в 3 функции, в одну строку - чтоб окончательно всех запутать. Говнокодер детектед.
1167 1954783
>>1954769

> Завернул аж в 3 функции, в одну строку


А как нужно?
1168 1954790
>>1954783
Надо не пытаться всунуть максимум функционала в одну строку, а писать понятно. Он же сам охуеет через месяц это читать и скажет >>1954042
Или хотя бы расставлять комментарии для такой каши.
1614607788433.png37 Кб, 762x569
1169 1954795
>>1954752
($X & $Z) возвращает те биты, которые включены (равны 1) одновременно у обоих переменных. Если общих битов нету, то возвращается 0.

1 в двоичном виде это 0001. То есть ($key & 1) возвращает 1, если у $key первый бит включен, или 0, если выключен. Примеры:
0 — 0000 | 0 & 1 = 0
1 — 0001 | 1 & 1 = 1
2 — 0010 | 2 & 1 = 0
3 — 0011 | 3 & 1 = 1
4 — 0100 | 4 & 1 = 0
5 — 0101 | 5 & 1 = 1
...
То есть, для каждого чётного числа, включая 0, возвращается 0, для нечётного — 1.
https://www.w3resource.com/php/operators/bitwise-operators.php
image.png85 Кб, 1179x401
1170 1954797
>>1954783
Как-то так.
1171 1954800
>>1954797
тогда я синьор лол-пишу максимально топорно
1172 1954810
>>1954800
А надо писать максимально очевидно. В идеале чтобы твой код даже бабасрака поняла.
1173 1954814
>>1954795
ну я понял, но не понял только, как он делает так, что каждое предложение с заглавной начинается, ведь по такому принципу не каждое предложение будет обрабатываться mb_ucfirst
1174 1954825
>>1954795

>То есть, для каждого чётного числа, включая 0, возвращается 0, для нечётного — 1.


>1 в двоичном виде это 0001. То есть ($key & 1) возвращает 1, если у $key первый бит включен, или 0, если выключен. >Примеры:


>0 — 0000 | 0 & 1 = 0


>1 — 0001 | 1 & 1 = 1


>2 — 0010 | 2 & 1 = 0


>3 — 0011 | 3 & 1 = 1


>4 — 0100 | 4 & 1 = 0


>5 — 0101 | 5 & 1 = 1


А нужно-то было всего лишь пройти циклом for по всем $sentences, проверяя кратность счётчика двойке в виде if($i % 2 == 0). Куда вы в биты-байты поехали?
1614608870672.png14 Кб, 688x195
1175 1954826
>>1954814
Функция до этого разбивает предложение так, что в нечётных ключах оказываются точки, а в чётных предложения.
1176 1954829
>>1954825
Хз, мб так быстрее получается? Вместо деления просто проверяется первый бит. Ну или тот чел пришёл из крестов, и там такие штуки часто используются.
1177 1954831
>>1954829

>так быстрее получается


Думаешь он там гугл пишет?
1178 1954836
>>1954826
ААААААА, теперь понял, спасибо. Час сидел и пялился в код, не мог увидеть этого. Это из-за PREG_SPLIT_DELIM_CAPTURE, да?
1179 1954838
>>1954810
То есть без ООП?
1180 1954839
1181 1954840
>>1954838
Без ООП может выйти такая лапша, что в голове не уложится
1182 1954841
>>1954838
ООП наоборот упрощает. С бабой сракой я образно выразился.
Джун синьорский код легко прочитает, а вот джунский код зачастую без бутылки не разберёшь.
1183 1954842
>>1954838
Если ООП не можешь, то рано тебе про качество кода думать - сперва базу выучи.
1184 1954843
>>1954842
седня попробую сделать к-л круд на ООП
1185 1954847
>>1954790
В чем охуевание? Три встроенные функции прекрасно читаются. Комментарий да, не помешал бы, но тут и по самим функциям можно понять что происходит, комментарии стоит писать когда там какие-то нетривиальные вещи делаются.

>>1954797
Твой пик несет нулевую полезную нагрузку, пример можно? Вот перепиши эту конкретную строку так чтобы она из джунской стала сеньорской.
1186 1954855
>>1954724
Скажем спасибо ОПу же! Я тоже подумал, что он няшный. Хотя здесь особо не бываю.

>>1954727
Может быть, дес. Но мне показалось няшным.

>>1954730

>Это ты не был в телеграм чатах по пыхе. Вот где друг друга хуями обкладывают. Причем делают это 30+ васяны


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

>Работа на пыхе есть,


Был удивлен тому, что даже в моей мухосране нужен джун на пыху.

>Да, как и в любом интерпретируемом языке.


Спасибо, дес. Учту.

>easy to learn относительно других бекенд языков


Помимо жабы что-то активно используется? А жаба разве сильно сложнее?

>С этим проблем нет. Пыха в целом про хуяк-хуяк-в-продакшен


Слава пыхобожеству.

>>1954762

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



А правда. что большинство пыхеров начинали с параш вроде битрикса и вордпресса?

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



Но такой стереотип же и может в негативную сторону работать, привлекая Васянов.

>Это любой современный ЯП вроде пхп, жс, пистона и тд.


Учту. Спасибо, дес.

>Бекенд про данные, а не созерцание. На беке принято передёргивать на структуры, архитектуру и абстракции.



И все же я попробую, вдруг зайдет же.

>иди на фронт



Туда каждый первый вкатывальщик вкатывается, это меня отпугивает.
1186 1954855
>>1954724
Скажем спасибо ОПу же! Я тоже подумал, что он няшный. Хотя здесь особо не бываю.

>>1954727
Может быть, дес. Но мне показалось няшным.

>>1954730

>Это ты не был в телеграм чатах по пыхе. Вот где друг друга хуями обкладывают. Причем делают это 30+ васяны


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

>Работа на пыхе есть,


Был удивлен тому, что даже в моей мухосране нужен джун на пыху.

>Да, как и в любом интерпретируемом языке.


Спасибо, дес. Учту.

>easy to learn относительно других бекенд языков


Помимо жабы что-то активно используется? А жаба разве сильно сложнее?

>С этим проблем нет. Пыха в целом про хуяк-хуяк-в-продакшен


Слава пыхобожеству.

>>1954762

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



А правда. что большинство пыхеров начинали с параш вроде битрикса и вордпресса?

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



Но такой стереотип же и может в негативную сторону работать, привлекая Васянов.

>Это любой современный ЯП вроде пхп, жс, пистона и тд.


Учту. Спасибо, дес.

>Бекенд про данные, а не созерцание. На беке принято передёргивать на структуры, архитектуру и абстракции.



И все же я попробую, вдруг зайдет же.

>иди на фронт



Туда каждый первый вкатывальщик вкатывается, это меня отпугивает.
1187 1954859
Господа, слонолюбы. У меня к вам нубовопрос.

Почему при $anonDice1 && $anonDice2 = mt_rand(1, 6) комплятор отправляет меня кушать хуйцы, а при

$anonDice1 = mt_rand(1, 6)
$anonDice2 = mt_rand(1, 6)


Всё заебись?
1188 1954862
>>1954855

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


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

>Помимо жабы что-то активно используется? А жаба разве сильно сложнее?


Что угодно тащят на бек: пхп, питон, руби, нода жс, жава, шарп, скала, го
За сложность джавы не скажу

>А правда. что большинство пыхеров начинали с параш вроде битрикса и вордпресса?


Пару раз трогал вп и битрикс и сразу же дропнул их, пересев на ларавел

>Но такой стереотип же и может в негативную сторону работать, привлекая Васянов.


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

>иди на фронт


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


Потому что там достаточно простой вкат и высокий спрос на спецов, т.к. фронт у всех один - жс (в основном реакт)
1189 1954883
внешний ключ должен быть связан только с первичным ключом?
1190 1954887
>>1954847

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


Я это уже сделал в общих чертах >>1954825
Если тебе прям подай полноценный рефракторинг, то жирно будет - сам думай.
1191 1954898
>>1954855

>А правда. что большинство пыхеров начинали с параш вроде битрикса и вордпресса?


Не - я сразу на фреймворки полез.
Имел дело с вордпрессом и не понравилось - после фреймворков и нормальных архитектур отдаёт протухшими помоями.
Вместо ВП использую October.

>может в негативную сторону работать, привлекая Васянов


Почему? Васянам наоборот надо чтобы ЧСВ, чтобы макакой не называли, чтобы ЯП на котором они пишут был уважаемый. А тут ПХП, лол. Пацаны во дворе же засмеют.

>Туда каждый первый вкатывальщик вкатывается, это меня отпугивает


Значит запрос есть, наверное.
1192 1954919
Хранить массив в БД изврат?
1193 1954922
>>1954919
текстом что-ли ? да , и зачем если есть json в БД
1194 1954927
>>1954922
я вообще выше спрашивал про последовательность чисел,но не слитных.чтобы потом была сверка.
первая мысль была про массив,но почитав-пишут что это изврат и надо либо жсон или сериализация
так жсон?
1195 1954948
>>1954855

>А жаба разве сильно сложнее?


Сам язык нет, почти тот же пхп, только коллекции и дженерики нужно подучить. А вот все остальное, это лютый трешпиздец, jdbc hibernate, spring и прочее, в это когда окунаешься вообще нихуя не понятно, простые вещи сложными путями делаются, если готов к трудностям первое время, то можно попробовать
1196 1954958
>>1954762

>у Битриксоидов вполне себе обычное,


Пробовал как-то спросить одну хуйню по каталогу и корзине, мне сказали что я долбоеб и не умею это говно в фантики от конфет заворачивать и продавать по цене шоколада. Короче наколхозил что-то в библиотеке BX для фронта, уже не помню что и оно вроде как заработало и запушил к ебеням. Сейчас к этому говну не притрагиваюсь, пусть другие развлекаются.
Снимок экрана (57).png134 Кб, 1366x768
1197 1954984
$ticketnumber=mt_rand(1000000000000, 9900000000000);
почему он генерирует один и тот же набор при новой записи?
Снимок экрана 2021-03-01 210731.jpg62 Кб, 1277x426
1198 1954991
1199 1955063
>>1954991
может мне сделать инкремент с 1000000000000?
1200 1955082
>>1954991
А ничего, что он генерит максимальное значение 32 разрядного инта (со знаком)?
1201 1955085
>>1954887

> полноценный рефракторинг жирно будет


Жирно сделать рефакторинг одной строки? Ну ок.
1202 1955107
>>1955085

>одной строки


>$new_string .= ($key & 1) == 0?


mb_ucfirst(strtolower(trim($sentence))) :
$sentence.' ';
Это не строка, а говно. Пиши на нормальном ЯВУ, а не на байтоёбской хуйне. Такое код-ревью нигде не пройдёт.
Свободен.
1203 1955163
>>1954984
Зачем генерить номер тикета пыхой? Используй автоинкремент в базе, если нужен тикет определенной длины просто добей нулями в начале.
1204 1955205
>>1955107
Если убрать байтоёбство, то получится
$new_string .= ($key % 2 == 0)
? mb_ucfirst(strtolower(trim($sentence)))
: $sentence.'';

То есть, строка с тремя функциями никуда не делась. А именно к ней у тебя и были претензии
1205 1955209
>>1955082
я не в курсе.
вы тут просветленные
1206 1955284
>>1954984
С pdo не работал напрямую, такой код разве не даст SQL инъекцию? Или там в pdo все фильтруется?
1207 1955306
>>1954984
я забыл добавить фильтр для чисел и только 7 значений
1208 1955311
Аноны, есть таблица с сортировкой и пагинация. Как правильно составить sql запрос, чтобы происходила сортировка только для текущих выводимых записей, т.е. если у нас LIMIT 5, 5 то сортировка должна работать только к этим записям, а не ко всем
Накидал что-то такое, хз правильно ли это (но вроде работает), но может можно как-то лучше сделать
SELECT * FROM (
SELECT columns FROM table ORDER BY column DESC LIMIT 5, 5
) as s ORDER BY columnt
1209 1955427
Есть ли смысл в 2021 изучать php или лучше Питон или лучше Node.js?
В моей мухосрани есть только вакансии по PHP, хотя в двух часах езды есть миллионник с вакансиями и по Питону и по JS. Если основной критерий простота трудоустройства, то лучше PHP, я правильно понимаю? Или начать изучать новомодные JS или Питон, с расчетом на большую стабильность и востребованность в будущем?
1210 1955429
>>1955427
Алсо насколько будет глупо и сложно начать например с PHP, а потом перейти например на JS или Питон? Какова вероятность что PHP устареет и будет заменен ими?
1211 1955430
>>1955429

>JS или Питон? Какова вероятность что PHP устареет и будет заменен ими?


Это пророчили php еще лет 10 назад. Как видишь, сейчас php так же прочно стоит на ногах и продолжает развиваться.
1212 1955438
>>1955430
Но если УЖЕ 10 ЛЕТ НАЗАД ему это пророчили, то что если вот вот еще чуть чуть и всё пиздец?
Вот эксперты программирования на ютюбе говорят, что в PHP 8 как-то все новомодные фичи криво прикрутили и вообще обосрались и это была отчаянная попытка что-то стапасти, и она провалилась.
1213 1955451
>>1955438

>Вот эксперты программирования на ютюбе


Эксперты программирования работают в топ проектах, фичи релизят, а не на ютубе вещают

Тебя никто идти в пхп не заставляет. Веришь в мантры про скорую смерть пыхи - иди учи что-нить новомодное. Не мешай людям вкатываться и работать
1214 1955463
>>1955427
Яб всё изучал. Начни с похапе, как более-менее освоишься - окунись в путон и ноду. Это все актуальные технологии, их знание лишним не будет.

> начать изучать новомодные JS


Опять же, это все веб, без JS ты в любом случае далеко не уедешь, так что нужно будет так же изучать. Как и HTML+CSS, хотябы базово.
1215 1955468
>>1955438
Пророчить могут что угодно, но задачи есть и их нужно решать сейчас. И не всегда новомодные технологии подходят для их решения. Ты удивишься, но множество сайтов до сих пор создаются на технологиях десятилетней давности, а то и старше. И все вполне себе работает.
1216 1955498
>>1955107
какое код ревью еще на сиэмэсках тебе? скажешь тоже, главное чтоб работало, красиво рассказать, завернуть и продать, всё
1217 1955499
>>1955427
>>1955429
на ноде.жс берут с опытом, вакансий без опыта почти нет, на путхоне во множестве вакансий для новичков есть требование вышки, в то время как на пхп почти нигде такого требования нет, соответственно, сначала залетаешь на пхп (но html, css, js, jquery, sql все равно надо), через год перекатываешься в пайтон или ноду.жс или в ror/go и тд
1218 1955502
>>1955499

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


Кто сейчас требует вышку на программерские должности, кроме всяких госконтор?
1219 1955505
>>1955499
Спасибо анон. Еще заметил такую странную херню, когда работодатель выставляет вакансию "Разрабочик PHP/бекэнд" и далее в требованиях к ней указывает "Знать Node.js, Python и т.д." Это работодатель долбоеб и не понимаешь что пишет или тебе действительно нужно владеть кучей разных взаимоисключающих технологий?
1220 1955509
>>1955505
Да, зачастую наниматель или HR просто не разбираются в теме и берет описание должности из интернета тупо копипастой. В идеале нужно общаться с человеком который непосредственно занят разработкой. Ну и иногда действительно бывают случаи что нужен человек-оркестр.
1221 1955518
>>1955509
На пыхе ты по дефолту человек-оркестр блджад
1222 1955526
>>1955502
Любая галера с айти отделом больше десятка человек. Все из-за наплыва нулевых голддигеров с курсов программирования.
1223 1955569
>>1955526
В чем проблема проверить человека на собеседовании? ВО для программиста это ничего не определяющий маркер. У нас же нет учебных заведений которые готовят именно программистов.
1224 1955597
>>1955569
А ты отсобесь каждого из 200 вкатунов, среди которых 190 выпускники говнокурсов
1225 1955642
>>1955597
Даешь удаленно задание, после выполнения предлагаешь созвониться и поговорить о том как ты его делал. Тот кто делал сам с удовольствием все расскажет. Тот кто нагуглил готовое сразу же сольется.

А 200 чел на вакансию это больше похоже на влажные мечты HR.

Ну, и наконец, как тебе тут поможет твой фильтр в виде ВО? Просто уменьшит количество соискателей? Так ты сам можешь отвечать например каждому пятому, это будет тоже самое.
1226 1955652
>>1955163
Так почему не работает ГСЧ и как сделать правильно объясните?
1227 1955660
>>1955642

>Даешь удаленно задание


Тут уже 90% отвалятся. Причем среди них будут как вкатуны, так и норм соискатели

>А 200 чел на вакансию это больше похоже на влажные мечты HR


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

>Ну, и наконец, как тебе тут поможет твой фильтр в виде ВО?


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

ps. Ты же в курсе что теоретически существует вероятность что генератор тебе два одинаковых значения выдаст?
1229 1955679
>>1955660

> Тут уже 90% отвалятся


Лол, а как, по твоему, нужно собеседовать? Телепатически или по звездам?

> чем объяснить повальное засильное всяких курсов?


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

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


Хуйня полная, связь между физматом и программированием это распространенный стереотип. Ладно, если там вакансия на что-то прикладное, но блядь в вебе то это всё зачем?
1230 1955689
>>1955679

>Лол, а как, по твоему, нужно собеседовать?


Честно, хз. Я бы наверно ничего умнее не придумал и взял бы существующие методы:
для кандидатов без опыта - обязательное тестовое (с докером, тестами, ридми и чтобы одной командой поднималось с тестовой бд)
для джунов (до 2 лет опыта) - ебля теорией на собесе и задачки с литкода + про работу рассказать
для мидлов+ - разговор за опыт и рабочие кейсы

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


Как минимум наличие желания ковыряться в какой-то сложной технической хуйне. Далеко не у всех это желание есть. Это и отличает разраба от макаки.
1231 1955711
почему 10млдр не хочет записываться в int(11)?
а 1 млдр может?
1232 1955718
>>1955711
можете не отвечать,это я не прочитал о максимальном значении лол
1233 1955726
А если сделать свой интернет-магазин, например, статей. Будет ли это считаться коммерческой разработкой?
1234 1955759
>>1955726
Если для резюме, то любой проект можно описать как коммерческую разработку, если скзаать, что делал знакомому/на фрилансе
1235 1955771
Каким образом будет правильно отправить AJAX реквест от имени юзера? Использую ларавел, аутентификацию реализовал с помощью Fortify, если что. Я так подозреваю, что нужно какой-то токен внедрять?
1236 1955777
>>1955771
Хм, или может вместо токена просто впихивать в реквест айди юзера и его хешированный пароль, вытянутый из базы? Нормально так будет, или нет?
1237 1955793
>>1955771

>нужно какой-то токен внедрять


Да.
1238 1955828
>>1955793
Окей, спасибо за ответ. Я так понимаю, этот токен необходимо просто генерировать при регистрации юзера, в джаваскрипт пробрасывать через скрытый input ( или может лучше через мета тег? ), а на бекенде просто находить юзера с таким токеном, верно?
1239 1955851
Есть в треде битриксобоги? Имеется напрочь ебанутый шаблон со всякими гугл и яндекс метриками прямо в коде. Как в такой ситуации подключить amp?
Нужно выдрочить все скрипты из шаблона в файлы и подключать их?
1240 1955896
>>1955828
Использовать один токен с самой регистрации несекурно. Если он уплывет, то всё. Генери при каждом логине, добавь им время протухания еще. Заодно почитай про oAuth, сегодня он повсюду.
1241 1956002
>>1955896
А что за Sanctum и Passport скажешь? Если я планирую в будущем внедрять аутентификацию через сторонние сервисы, то может лучше сразу через Passport это дело проделывать?
1242 1956231
Привет, хочу вкатиться в php.
Может кто подскажет, с помощью чего изучать этот ЯП?
Самому 25 лет, раньше верстал, с помощью гугла пилил формы обратной связи на php, слайдеры на js, но как таковые языки эти я не знаю, поэтому он будет у меня первым.
И отсюда вытекает следующие вопросы: не поздно ли в 25 вкатываться в пхп, чтобы в 25.5 или 26 пойти джуном и как вообще отразится на мне в будущем, если выберу этот ЯП как первым языком? Где-то читал, что пхп как первый яп - хуёвый тон. В дальшнейшем планирую работать в вебе, поэтому плюсы, джавы всякие отпадают.
1243 1956251
>>1956231

>джавы всякие отпадают


На джаве тоже бек пишут

>не поздно ли в 25 вкатываться в пхп


Не поздно. Самое время

>как вообще отразится на мне в будущем, если выберу этот ЯП как первым языком?


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

>с помощью чего изучать этот ЯП?


С прочтения шапки треда. Там достаточно материала, чтобы до джуна дойти
1244 1956365
>>1956231
С PHP гораздо легче вкатиться в вебдев, где помимо самого ЯП нужно разбираться в куче смежных областей (работа сервера, протоколов, БД, желательно фронтенд базово, методологии разработки, mvc, гит, различные пакетные менеджеры, тестирование). Имея эти знания в багаже (не теоретические, а уже практические) ты потом легко перепрыгнешь с PHP на любой другой ЯП.
1245 1956646
>>1956365
а слышал, что пхп уже опять умирает, 8 версия обратно в болото увела пыху.
допустим, если засяду учить пыху, какую версию учить?
1246 1956650
если нужно отфильтровать и проверить 10 импутов-это на писать кучу кода на каждый импут?
1247 1956662
>>1956646
Я тебе по секрету скажу - полным полно проектов которые до сих пор работают на 5 версии и на 7 просто не запустятся. Учить нужно не конкретную версию, а язык в целом. Когда прокачаешься - уже будешь заморачиваться с новомодными фишками свежих версий.
1248 1956669
>>1956646

>8 версия обратно в болото увела пыху


Какие из изменений увели в болото?
Сейчас пыха взяла курс на более строгую типизацию, атрибуты завезли. Вот вот енумы завезут, заживем.
1249 1956672
>>1956662
Спасибо за совет.
>>1956669

>Какие из изменений увели в болото?


Не помню точно, я ж пока не шарю. Вроде что-то про JIT сказали и что в пыхе он как-то ваще не оч (Хауди посмотрел, извините, пожалуйста).
1250 1956706
>>1956672
В джит можно запихнуть папочку вендор, т.к. её содержимое меняется крайне редко. А в остальном да, джит перфоманса не добавил. Но там и без него в 7ке пыху неплохо оптимизировали. И узкое место тут как обычно бд и внешние сервисы, а не рантайм пыхи.
1251 1956727
>>1956706
Че то щас просмотрел вакансии php-разработчика: джуна, миддла и т.д. везде блять требуедсят js. Причём пишут так: "Обязательно отличные знания PHP/MySQL/HTML/CSS/JS".
Можете сказать, нахуя мне отличные знанич js, если я буду на пыхе писать?
Или хрки на сегодняшний день вообще ебанулись массово?
1252 1956730
>>1956727
Много вакансий на пыхе предполагают частичный фуллстек. Фронтенд на уровне - сверстать формочку и оживить на ванильном жс. Более сложная херь вроде реакта явно обозначается как фулстек вака.
Сейчас вот тоже немножко жс шатаю в соотношении 80 бека и 20 фронта.
1253 1956738
>>1956730
да я ни пыху, ни джс не знаю, просто хотел в бэк онли окунуться, т.к. фронт пиздец там. верстаю-то я нормально, флексбокс, бэм всякие понимаю, но короче заебала ебля эта с классами, семантикой и прочей поебистикой.
Хочу через какое-то время просто брать заказы по вп какому-нибудь и хотя бы 40к получать с фриланса. Хз, достижимо это за 4-6 месяцев изучения пыхи или нет
1254 1956803
https://ideone.com/7pZX1Y — сделал калькулятор по заданию из "Повторим?".

Не совсем так, еще надо докрутить ввод пользователем и проверку на число и все такое. Но меня интересует, в целом должно быть примерно так?
1255 1956837
Аноны, а как принято проверять права на какие то действия? Типа бест практикс?
Если дело на этапе контроллера - то тут понятно, нет прав - заворачиваем с уведомлением.
А если мне нужно в зависимости от прав какую либо кнопку сделать видимой / или не видимой?

В ларавел есть хелпер который прямо в разметке шаблона вызывается.
У меня слим4 + твиг и я не понял как делать такой хелпер.
Но мне даже скорее интересно как такое сделать без хелперов которые проверяются прямо в коде.
Переменную с логическим значением передавать? Но таких переменных может быть несколько. Можно конечно передать, в массиве что бы не хламить.
Но как то не особо красиво что ли.
1256 1957224
Аноны, такая странная трабла - в базе хранится имя отчетсво человека полностью. В виде строки.
Мне нужно сделать из этого инициалы , такое: "Иван Иванович" в "И.И."
Собственно проблем нет никаких. Трабла в том что в браузере если фио полностью отрисовывается - то все норм.
А если созданные мною инициалы отрисовать - почему то черный ромб с вопросом внутри.
Че это за херня?
1257 1957241
>>1957224
п.с.
дело прояснилось - короче доступ к символу в строке в которую я из базы достаю, допустим 'Вася', как к массиву в таком виде:
$name = 'Вася';
echo $name[0]
не работает потому что в базе у меня строки хранятся занимая место - два байта на одну букву. Поэтому я букву получить могу только допустим с помощью substr();
А я чет затупил в этом вопросе.
Пхп всегда, если рассматривать строку как массив, на одно значение массива из строки берет не более одного байта?
1258 1957244
>>1957241
mb_substr не пробовал?
1259 1957247
>>1957241

Ты правильно нашел проблему. $name[0] берет не первый символ, а первый байт символа и потому его использовать нельзя. Надо использовать mb_substr. Подробнее в отдельном уроке https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md
1260 1957252
>>1956837

Можно сделать объект ПроверяльщикПрав и передавать в twig его. А там делать вызовы вроде if ($accessChecker->can(AccessChecker::EDIT_ARTICLE)) { ... }.

Можно сделать как в симфони. Там есть twig-хелпер {% if is_granted('ACCESS_EDIT_ARTICLE') %}.

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

if ($security->isGranted(SomeClass::SOME_ACTION, $object))
1261 1957257
>>1954984

В мануале по mt_rand упоминается функция mt_getrandmax(). Она возвращает максимальное число, которое можно передавать в mt_rand. Попробуй выполнить код var_dump(mt_getrandmax()); У меня он возвращает 2 миллиарда.

А ты передаешь 1 триллион. От этого mt_rand ломается. Как я понял, он работает только с числами от 0 до 2 млрд. Используй 2 вызова mt_rand, если тебе нужно сгенерировать длинное число.
1262 1957265
>>1957257
Это же вроде как в настройках PHP указывается. Я проверял его числа в песочнице - там рандом нормально работает.

6051441335772
6139515971580
1001079545172
4806508211446
1196189095429
2364670928361
9178557967093
7900054432436
3104628173548
4715106407596
1263 1957270
>>1955205

Вообще, эта идея полагаться на то, что точки будут всегда в четных или нечетных элементах, выглядит довольно хлипко. Я бы лучше сделал проверку через preg_match('/^[.?!]+$/') - может, это чуть помедленнее, но зато читабельнее.
1264 1957286
>>1954859

Потому что в PHP нельзя написать "присвоить a и b случайные значения". Можно присвоить 2 переменным одинаковое значение, написав так:

$a = $b = 1;

Это работает, потому что оператор = выполняется справа налево и возвращает присвоеннное значение дальше. То есть в записи выше сначала выполнится выражение $b = 1, оно вернет 1 и получится выражение $a = 1, которое и выполнится.

Чтобы присвоить разные значения, надо писать так:

$a = 1;
$b = 2;

У тебя же выражение выполняется так:

$anonDice1 && ($anonDice2 = mt_rand(1, 6))

Сначала выполняется присваивание $anonDice2 случайного числа (допустим, это 5), это число передается дальше и получается выражение:

$anonDice1 && 5

Это выражение не получится вычислить, так как переменной $anonDice1 не существует. Отсюда ошибка.

То есть интерпретатор PHP не способен понимать произвольные команды, команды должны делаться по жестко заданным правилам. Люди также делают другую ошибку: когда хотят написать условие "a и b равны 1" они пишут

// неправильно
if ($a && $b == 1)

А надо писать "a равно 1 и b равно 1":

// правильно
if ($a == 1 && $b == 1)
1264 1957286
>>1954859

Потому что в PHP нельзя написать "присвоить a и b случайные значения". Можно присвоить 2 переменным одинаковое значение, написав так:

$a = $b = 1;

Это работает, потому что оператор = выполняется справа налево и возвращает присвоеннное значение дальше. То есть в записи выше сначала выполнится выражение $b = 1, оно вернет 1 и получится выражение $a = 1, которое и выполнится.

Чтобы присвоить разные значения, надо писать так:

$a = 1;
$b = 2;

У тебя же выражение выполняется так:

$anonDice1 && ($anonDice2 = mt_rand(1, 6))

Сначала выполняется присваивание $anonDice2 случайного числа (допустим, это 5), это число передается дальше и получается выражение:

$anonDice1 && 5

Это выражение не получится вычислить, так как переменной $anonDice1 не существует. Отсюда ошибка.

То есть интерпретатор PHP не способен понимать произвольные команды, команды должны делаться по жестко заданным правилам. Люди также делают другую ошибку: когда хотят написать условие "a и b равны 1" они пишут

// неправильно
if ($a && $b == 1)

А надо писать "a равно 1 и b равно 1":

// правильно
if ($a == 1 && $b == 1)
1265 1957297
>>1954883

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

>>1954919

Зависит от ситуации. Вообще, принципы нормализации требуют атомарности ячеек, то есть в 1 ячейке хранится одно значение, а не список. Но в реальности иногда удобнее сохранить массив. Можно хранить значения через запятую, некоторые СУБД вроде Постгрес поддерживают хранение массивов, и можно туда засунуть JSON.

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

>>1955284

Он подставляет значения не напрямую ("INSERT .. $x"), а через плейсхолдер ("INSERT :x"). Значения автоматически экранируются и заключаются в кавычки и инъекции не будет.
1266 1957301
>>1957297

> с уникальными значениями.


ты имеешь ввиду ключ unique key?
1267 1957311
>>1955652

Ты передаешь в mt_rand слишком большие числа. Он на такое не рассчитан.

>>1955689

> разговор за опыт и рабочие кейсы


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

>>1955711

Цифры в скобках - это не ограничение на длину числа (где такое написано?), а рекомендация, сколько места оставлять при выводе таблицы на экран.
1268 1957317
>>1957311

>Ты передаешь в mt_rand слишком большие числа


я уже понял
я переделал вообще на авто инримент с длиной 10
1269 1957331
>>1956650

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

>>1957265

Ты выполни код var_dump(mt_getrandmax()); у себя. Может, в песочнице 64-битная версия PHP, а у тебя например 32-битная или еще какие-то отличия есть.

>>1957301

Я имею в виду, что они должны быть уникальными, и хорошо если это дополняется уникальным ключом.
1270 1957333
>>1957331
я как то пробывал ссылаться на логин в осн таблице,не завелось.
только id примари кей
1271 1957342
>>1957331

>Если же ты по каким-то странным причинам пишешь формы руками,


таким макаром,вообще можно сильно не замарачиваться.как оно работает
1272 1957458
>>1956803

$numArr - плохое название. Тогда уж надо писать $numbers, но там ведь не только числа. Лучше назвать $parts, $tokens.

Плохо, что повторяются эти строки много раз:

unset($numArr[$i + 1]);
unset($numArr[$i - 1]);
$numArr = array_values($numArr);
$i = 0;

Лучше бы без копипасты, например, можно сделать функцию выполнитьОперацию(операция, арг1, арг2) и вызвать её (перенести switch в эту функцию, убрав его из цикла).

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

Сама идея вычисления с приоритетами может и неплохая, но не будет работать при наличии скобок. Если хочется вычислять любое выражение с приоритетами и скобками, то есть 2 подхода:

1) с помощью готового алгоритма преобразовать в обратную польскую нотацию и вычислить её
2) распарсить рекурсивным спуском выражение на AST - Abstract Syntax Tree - дерево узлов (узел - это например: узел числа или узел операции, причем узел операции может содержать в аргументах другие узлы). Затем вычислить значение в дереве. Узлы обычно реализуют с использованием ООП.

Оба этих подхода для начинающего довольно сложны (но интересны). Потому в задаче разрешается игнорировать приоритеты операций.
1273 1957459
>>1957342

Если хочется именно заморочиться, то можно написать свою библиотеку для форм. Делаем объект, представляющий один элемент формы, делаем такие элементы вкладываемыми друг в друга (чтобы можно было собрать из них форму). Делаем объекты, представляющие ограничения и условия проверки. Очень полезно для саморазвития, хотя и будет сложно поначалу.
валидатор.jpg83 Кб, 783x662
1274 1957508
>>1957459
оцени ущербность валидатора
1614877743528.png395 Кб, 814x343
1275 1957524
>>1957508
Нихуя се кодстайл.
1276 1957525
>>1957524
ну я же говорил))
1277 1957528
>>1957508
У тебя какой-то пиздец с отступами, ты хоть плагин какой-нибудь поставь, который будет автоматом все расставлять, если самому лень

> Недостаточной длины логин или пароль!


Зачем выдавать ошибки на языке Йоды?
1278 1957543
>>1957528
посоветуй плагин
1279 1957555
>>1957543
PhpStorm. Не забудь купить подписку, все же JetBrains нехило инвестирует в развитие PHP, оплачивая работу Никичу.
мимо-Рома Пронский
1280 1957558
а if клепать внутри методов класса норм?
1281 1957583
>>1957459
создавать на каждое поле формы класс с методами проверки?
1282 1957732
>>1957543
Привыкай поактивнее пользоваться гуглом.
https://packagecontrol.io/packages/CodeFormatter
1283 1958100
>>1957543

Гугление выдает такие плагины для VS Code:

https://marketplace.visualstudio.com/items?itemName=kokororin.vscode-phpfmt
https://marketplace.visualstudio.com/items?itemName=Sophisticode.php-formatter

Обрати внимание, что им может потребоваться настройка (например: указать путь к PHP в конфиге) и придется немного помучаться и почитать мануалы.

>>1957508

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

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

Также, у тебя в коде есть недостатки:

- неправильно делается экранирование данных. htmlspecialchars надо вызывать при выводе данных в шаблоне, а не там, где ты их вызываешь.
- при ошибке надо показывать форму с введенными в нее данными, а ты это не делаешь и заставляешь человека заново заполнять форму.
- надо использовать mb_strlen, а не strlen. strlen не умеет считать длину текста с русскими буквами.

Могу посоветовать урок про работу с формами: https://github.com/codedokode/pasta/blob/master/forms.md
1284 1958122
>>1957583

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

$form = new Form;
$form->addField('name', [
new TextLength(20),
new Regexp('/^[a-z]+$/')
]);
...

$form->handleRequest($_POST);
if ($form->isValid()) {
echo "Все верно";
} else {
print_r($form->getErrors());
}

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

Вот, как сделано в Симфони (отсюда: https://symfony.com/doc/current/components/form.html ):

$form = $formFactory->createBuilder()
->add('task', TextType::class, [
'constraints' => new NotBlank(),
])
->add('dueDate', DateType::class, [
'constraints' => [
new NotBlank(),
new Type(\DateTime::class),
]
])
->getForm();

Здесь есть классы, обозначающие тип поля (TextType, DateTYpe) и классы, задающие ограничения (NotBlank, Type).

В Симфони много готовых типов полей с разными опциями, и много классов-ограничений, потому тебе часто хватает их возможностей.
1284 1958122
>>1957583

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

$form = new Form;
$form->addField('name', [
new TextLength(20),
new Regexp('/^[a-z]+$/')
]);
...

$form->handleRequest($_POST);
if ($form->isValid()) {
echo "Все верно";
} else {
print_r($form->getErrors());
}

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

Вот, как сделано в Симфони (отсюда: https://symfony.com/doc/current/components/form.html ):

$form = $formFactory->createBuilder()
->add('task', TextType::class, [
'constraints' => new NotBlank(),
])
->add('dueDate', DateType::class, [
'constraints' => [
new NotBlank(),
new Type(\DateTime::class),
]
])
->getForm();

Здесь есть классы, обозначающие тип поля (TextType, DateTYpe) и классы, задающие ограничения (NotBlank, Type).

В Симфони много готовых типов полей с разными опциями, и много классов-ограничений, потому тебе часто хватает их возможностей.
Снимок экрана 2021-03-05 142715.jpg48 Кб, 515x572
1285 1958132
>>1958122
а я вчера такое накодил неработающее г-но
1286 1958141
>>1958100
насчет экранирования согласе
2е я не умею в жс
3е-русский не нужен
1287 1958148
>>1958132
Зачем в return у функции создавать переменную?
Почему нельзя просто написать return strlen($this->$login);
1288 1958161
>>1957558

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

>>1955311

Так и надо делать.
1289 1958170
>>1954269

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


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

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



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

- разбиваем текст на слова
- для каждого слова определяем по первой букве язык
- ищем посторонние буквы в слове

Или так:

- находим слова из смеси алфавитов
- в каждом таком слове определяем язык
- находим посторонние буквы

> https://ideone.com/wz2Aus


Регулярку можно было написать проще, в таком стиле:

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

Такая регулярка захватит все слово, в котором встречаются буквы разных алфавитов.

> https://ideone.com/nplOGz


Замену проще сделать без привлечения регулярок, с помощью массива соответствий и функции strtr().
1289 1958170
>>1954269

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


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

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



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

- разбиваем текст на слова
- для каждого слова определяем по первой букве язык
- ищем посторонние буквы в слове

Или так:

- находим слова из смеси алфавитов
- в каждом таком слове определяем язык
- находим посторонние буквы

> https://ideone.com/wz2Aus


Регулярку можно было написать проще, в таком стиле:

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

Такая регулярка захватит все слово, в котором встречаются буквы разных алфавитов.

> https://ideone.com/nplOGz


Замену проще сделать без привлечения регулярок, с помощью массива соответствий и функции strtr().
1290 1958184
>>1953118

Не вижу никакой опасности. А вот выводить HTML через echo неудобно, лучше использовать шаблон.

>>1952324

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

- запретить менять тест после появления ответов. Вместо удаления делать soft delete (скрытие из списков, при этом тест остается в базе).
- сделать версионность тестов, чтобы при редактировании создавалась бы новая версия теста (а старая оставалась неизменной). Тогда ответы могут ссылаться на нужную версию теста.
- сделать вопросы неизменными и версионируемыми, соответственно на них можно будет ссылаться из ответов
1291 1958188
>>1958148
это мелоч
логика кода в целом ущербна
1292 1958198
>>1951907

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

Можно было поступить еще так:

- сделать массив, где ключи идут по порядку, а значения - это номера девочек (идут вначале от 1 до N)
- завести переменную-указатель, присвоить ей 0
- увеличить переменную на число слогов (с проверкой на выход за границы массива)
- удалить элемент, на который она указывает, с помощью array_splice()
- и так далее.

>>1951786

Главная идея DI в том, что объект не ищет сам зависимости, и не пытается их откуда-то взять, а ему просто передают их через конструктор (или как-то еще) при создании. И поиск зависимостей теперь это не ответственность объекта, а ответственность того, кто его создает.
1293 1958199
>>1958132
У тебя присвоение вместо сравнения
Ну и методы какие-то бессмысленные. Либо делай более общими, либо удаляй - тупо лишняя абстракция.
Ну и название check ни о чем не говорит, что она делает, какой тип вернет.
Еще косяк: ты создаешь форму, но не передаешь туда логин, хотя внутри методов проверяется логин этой формы, т.е. он у тебя пустой будет.

Крч перепиши это говно. Проще с нуля сделать, чем тут что-то править.
1294 1958203
>>1951616

Не должны. Различие только в том, что fetch возвращает массив полей, а fetchAll() - массив записей, где каждая запись это массив полей.
1295 1958204
>>1958199
я сомневаюсь,что смогу это переписать в ООП стиле,тк херово понимаю это вреале,а не на учебных примерах про машины
1296 1958220
>>1958132

Это не совсем ООП. В ООП объект - это объединение данных (полей вроде $login) c методами (функциями) для работы с ними. Соответственно, в ООП ты не вызываешь вручную check_length, check_empty и не передаешь туда данные, а ты создаешь объект и вызываешь $form->validate() и он сам все проверяет и возвращает все ошибки (при этом validate может конечно вызвать check_empty, но эту функцию надо сделать private, чтобы снаружи ее вызвать было нельзя). Ты же код, который должен быть внутри объекта, пишешь снаружи его.

Если тебе сложно писать ООП код, начни хотя бы с разбиения на функции. Сделай отдельно функцию для чтения данных из $_POST, а отдельно функцию для валидации данных, отдельно функцию записи данных в БД.

Также, вместо strlen надо использовать mb_strlen. Незачем использовать в наши дни кодировку ASCII вместо UTF-8.

И еще, у нас в шапке есть задача про студентов, к ней идет куча полезных советов по архитектуре. Стоит их почитать.
1297 1958238
>>1958204

А ты не хочешь порешать нашу задачу про ООП? У нас в шапке есть ссылка на учебник, там есть глава про ООП и задача про ООО Вектор. Можешь попробовать ее решить.

Также, есть задача про ООП-Гостиницу тут >>1939079

Есть задача про ООП-скидки: https://www.cyberforum.ru/php-oop/thread1459985.html

Попробуй их порешать. Или, если тебе не хочется уходить далеко от форм, попробуй спроектировать набор классов для работы с формами. Начни с краткого перечисления требований (какие возможности будут у твоей библиотеки), затем спроектируй классы, как они связаны и что представляют, и затем можешь писать код. Я выше давал примеры, как можно реализовать проверку форм с помощью ООП. В идеале ты должен получить набор кирпичиков, из которых можно собрать любую форму.
1298 1958244
>>1958204

То есть, я предлагаю не делать класс конкретно под твою форму, а сделать более универсальное решение - набор классов, из которых можно собрать любую форму.
1299 1958260
>>1958220

>Если тебе сложно писать ООП код, начни хотя бы с разбиения на функции. Сделай отдельно функцию для чтения данных из $_POST, а отдельно функцию для валидации данных, отдельно функцию записи данных в БД.


каждая функ на один файл,а потом в главном файле все это подкл через реквер?
1300 1958287
Аношки, этот тред закончился. Переходите в новый тред >>1958281 (OP)

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

>>1958260

Можно пока что писать в одном файле, если функции небольшие. В отдельные файлы обычно выносится то, что можно подключать из нескольких мест, чтобы не копипастить.
1301 1959961
>>1917817

>в ларе можно свои классы писать


А это разве делается не через механизм создания собственных сервис-провайдеров и фасадов?
1302 1961203
Что лучше mariadb или mysql? Вы сами какую юзаете?
image.png75 Кб, 1434x924
Высрал код 1303 1962253
Здраствуйте аноны в общем я хотел написать на laravel с 0 знаниями форму где динамически добавляются новые строки в таблице по нажатии кнопки. Добавление и удаление я сделал, но получилось крайне хуево, можете дать совет. Как обойтись без смешивания js, html, php
1304 1962289
>>1962253
Прочитай, что такое шаблонизатор blade. Его использует лара. Пишешь в контроллере
return view('index', compact('paginator', 'categoryList'));
и тебе во вью с именем index.blade.php передаются две переменные из контроллера: $paginator и $categoryList. Ну или какие захочешь. А во вью уже вся разметка.

Что касается жабаскрипта, то его пишут в resources/js/xxxxx.js
Подключаешь его в resources/js/app.js и перед выкладкой конпелируешь командой npm run dev (ну или npm run watch, так удобнее). Как это всё работает - читай про auth
Или, если читать не хочешь то земля тебе пухом, выполни предварительно
composer require laravel/ui
php artisan ui:auth
php artisan ui vue --auth
1305 2017455
>>1937972
так то нет , хороший мид ми может пилить сносный мид код , по той простой причине что 7 летний опыт похапе внезапно не так и релевантный в том же go пайтон и тд, очевидно что базовые вещи структуры for if навернуть можно быстро , но теже паттеры которые хорошо ложатся на похапе могут быть совершенно не нужны в том же пйтоне
Тред утонул или удален.
Это копия, сохраненная 9 мая 2021 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски