«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP#118 Аноним 2020/06/23 15:42:39  №1731888 1
php-noob-1.png (33, 500x500)
500x500
cat-cafe-osaka.jpg (155, 1024x683)
683x1024
cat-sad.jpg (173, 1024x768)
768x1024
welcome-to-php.png (188, 853x480)
480x853
Здесь мы изучаем язык PHP (а также JS/CSS/HTML/SQL) и учимся делать сайты. Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

Предыдущий тред был тут: >>1656450 (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? — Да, однозначно. Посмотри любую вакансию.
Оформление кода Аноним 2020/06/23 15:44:57  №1731891 2
grammar.png (56, 500x644)
644x500
Код должен выглядеть аккуратно и оформляться, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на 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/
Аноним 2020/06/23 15:46:40  №1731895 3
В прошлом треде я постарался ответить на все вопросы, но если вдруг кого-то пропустил, то напомните о себе тут.
Ответы: >>1731998
Аноним 2020/06/23 16:45:14  №1731998 4
>>1731895
да, хорошо, помоги с битриксом?
копипаста с того треда
двач, не обоссывай а лучше подскажи. как реализовать на сайте мультирегиональность? типо чтобы когда я захожу на abu.mysite/ меня рероутило например на abu.mysite/moscow и где будет соответственно шаблон с шапкой " Привет, анон из Москвы " и соответственно метатегами. ну и дальше чтобы вложенность была в стиле abu.mysite/moscow/catalog/dragon_dildo
Ответы: >>1732016 >>1753532
Аноним 2020/06/23 16:54:25  №1732016 5
>>1731998

Увы, не разбираюсь в Битриксе. Могу только посоветовать поискать решение в мануале или интернете. Поиск по "битрикс мультирегиональность" дает какие-то ответы.
Ответы: >>1732028
Аноним 2020/06/23 17:09:11  №1732028 6
>>1732016
>Увы, не разбираюсь в Битриксе
вот и я так же, а на галере запрягли делать этот кал
>Поиск по "битрикс мультирегиональность" дает какие-то ответы.
какие? купить платный модуль или же там где одна вода налита без конкретики?
Ответы: >>1738605
Аноним 2020/06/23 19:09:03  №1732143 7
demo.png (69, 771x619)
619x771
Сделал небольшое расширение Firefox (но может и под Хромом заработает, стандарт web-extensions общий) для экспериментов с более удачным отображением тредов - Раскатыватель. Он группирует диалоги в тредах вместе, что упрощает просмотр больших тредов: https://github.com/codedokode/thread-unroll

Перед установкой расширений, особенно немодердированных, как это, советую изучить исходный код и убедиться в отсутствии вредоносных функций.
Ответы: >>1753539
Аноним 2020/06/24 07:42:00  №1732384 8
Вопрос из предыдущего треда: зачем добавили атрибуты в пхп8 ?
Я например не пользую симфони и доктрину не люблю, какое для меня практическое применение атрибутов?
Ответы: >>1732400 >>1732430 >>1733192
Аноним 2020/06/24 08:17:59  №1732400 9
>>1732384
Чем смотреть на доктрину посмотри лучше на другие языки (на вскидку джава, шарп, питон), где аналогичное применяется и пиздец как распространено. Так и найдешь примеры оторванные от доктрины.
Аноним 2020/06/24 09:19:29  №1732430 10
>>1732384
Вот тебе самый очевидный пример:

<<Assert\BiggerThen(33)>>
<<Assert\LesserThen(35)>>
private $number;

<<Assert\ShorterThen(10)>>
private $string;

$bar = new Bar(34, 'test');

$errros = $validator->validate($bar);

Во первых условия валидации хранятся в самом классе.
Во вторых проверка осуществляется вне класса.
В третьих свойства приватные, не надо геттеров городить никаких для валидации.
Ответы: >>1732630 >>1733300
Аноним 2020/06/24 11:29:29  №1732568 11
>>1711315 →
Ну вот, что и требовалось доказать. Я как обычно оказался прав.
https://github.com/laravel/ideas/issues/32

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

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

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

Желания пробовать Eloquent: API Resources нет, потому что, внезапно, это хуйня основана на самих моделях, которые, как я уже выяснил, полное говно и не выполняют те задачи, которые мне от них нужны.
Ответы: >>1732583 >>1733136 >>1733188
Аноним 2020/06/24 11:47:46  №1732583 12
>>1732568
Хуйней ты занимаешься. Нахуя тебе вообще JSON? У тебя апи?
Ответы: >>1732610
Аноним 2020/06/24 12:19:32  №1732610 13
>>1732583
Говорил уже, чтобы у меня был объект, точно соответствующий жсон-ответу контроллера.

То есть, необходимо полное преобразование этого объекта в жсон И ОБРАТНО.
В том числе для вложенных моделей, для коллекций.
Ответы: >>1732612 >>1732757
Аноним 2020/06/24 12:24:05  №1732612 14
>>1732610
По прежнему не понимаю что ты пытаешься сделать. Отдавать и получать json это типичная задача в php разработке сделано миллион раз, миллионом людей. Ты выдумываешь себе проблемы на ровном месте.
Ответы: >>1732678
Аноним 2020/06/24 12:58:56  №1732630 15
>>1732430
Свойства приватные а проверка вне класса выходит он вытащит приватные свойства для проверки? Звучит не весело. А то что сущность не знаю что тут имеется ввиду дто или модель будет иметь еще и валидирующу нагрузку звучит еще хуже.
Аноним 2020/06/24 13:57:11  №1732678 16
>>1732612
Миллионы мух не могут жрать говно?
Ответы: >>1732822
Аноним 2020/06/24 14:55:28  №1732757 17
Ответы: >>1732875 >>1733671
Аноним 2020/06/24 15:14:55  №1732787 18
ну что,готовы к первой альфе 8ки?
Аноним 2020/06/24 15:51:35  №1732822 19
>>1732678
Мне кажется тут сейчас одна муха. Кто это думаю поймешь.

мимо другой анон
Ответы: >>1732872
Аноним 2020/06/24 16:38:42  №1732872 20
>>1732822
Хотел бы я в это верить, но к сожалению концентрация дауничей в профессии с каждым годом только возрастает.
Точнее растет моя компетенция.
Аноним 2020/06/24 16:40:37  №1732875 21
>>1732757
Ну вот ровно так у меня и сделано в нескольких проектах.
Простые объекты + их сериализация.

Контроллеры высирают не абы что, а только dtoObject->toJson().
Соответственно на другой стороне DtoObject::fromJson().
Ответы: >>1732938
Аноним 2020/06/24 17:25:54  №1732938 22
Аноним 2020/06/24 21:37:12  №1733136 23
>>1732568
Пишешь за два часа сервис, который обновляет нужные свойства и отношения у объекта, в чем пробелема? Ты за 20 дней додумался только ишью поискать на гитхабе вместо того чтобы решить свою задачу по сути за один вечер
Ответы: >>1733332
Аноним 2020/06/24 22:25:45  №1733188 24
>>1732568

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

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

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

Функции выглядят примерно так:

function transformRoom(Room $r)
{
return [
'number' => $r->getNumber(),
'isVacant' => $this->someService->isRoomVacant($r);
];
}

Ответы: >>1733334
Аноним 2020/06/24 22:30:02  №1733192 25
>>1732384

Если ты не используешь эти библиотеки, то скорее всего никак они тебе не пригодятся. Они нужны для добавления информации к классам и методам.
Аноним 2020/06/24 22:30:11  №1733193 26
Почему этот код выводит $name вместо имен?

$person = ["Эдисон", "Ванкель", "Крэппер"];

foreach ($person as $name) {
echo 'Привет {$name}';
}
Ответы: >>1733206 >>1733207 >>1735767
Аноним 2020/06/24 23:01:51  №1733206 27
>>1733193
Гугли "конкатенация".
Ответы: >>1733573
Аноним 2020/06/24 23:03:27  №1733207 28
>>1733193
Кавычки другие возьми
Ответы: >>1733572
Аноним 2020/06/24 23:54:10  №1733221 29
Сложно ли перекатываться на другой язык, когда уже ознакомлен со всякими принципами программирования и собственно бекенда? Пока что еще вкатываюсь в пхп, но пока что уж очень смущает что средняя зарплата пхпшника с опытом - 30 тысяч рублей, при том что каждой фронтенд макаке без опыта сходу чуть не 100к предлагают. НодЖеЭсеры совсем миллиарды получают.
Ответы: >>1733256 >>1733638 >>1733716
Аноним 2020/06/25 01:15:57  №1733256 30
>>1733221
А с какими принципами ты ознакомлен? Что может знать php программист о структурах данных, например? Если он в принципе может работать только с хэш таблицами.
Ответы: >>1733797
Аноним 2020/06/25 05:57:26  №1733300 31
>>1732430
И если у меня для одного типа $string должен быть короче десяти а для другого нет потому что это Bar с разными правами в системе. В итоге хрень
Ответы: >>1733318
Аноним 2020/06/25 06:17:43  №1733312 32
MariaDB как mysql коннектится?
Аноним 2020/06/25 06:21:49  №1733318 33
>>1733300
Хрень у тебя в башке.

<<Assert\BiggerThen(33, 'Тип хуип')>>
<<Assert\BiggerThen(11, 'Тип казантип')>>

Если у тебя так туго с фантазией может вообще не стоит программированием заниматься?
Ответы: >>1733321 >>1733853
Аноним 2020/06/25 06:26:59  №1733321 34
>>1733318
у них насчет такого синтаксиса еще идут споры
Ответы: >>1733323
Аноним 2020/06/25 06:34:49  №1733323 35
>>1733321
О каком синтаксисе? Какие споры? Где идут?
https://wiki.php.net/rfc/attributes_v2
Вот rfc там результат голосования 51:1 за принятие в ядро, 41:12 за внешний вид.
Аноним 2020/06/25 06:59:48  №1733332 36
>>1733136
>Ты за 20 дней додумался только
Видишь ли, думать вообще приходится в 20 раз больше, чем делать, иначе будешь делать говно
Аноним 2020/06/25 07:04:08  №1733334 37
>>1733188
>Промежуточные объекты, по моему мнению, не нужны, так как их единственное назначение - превратиться в JSON
Нет, далеко не только.

Например, все те же мои предыдущие проекты построены вокруг этих DTO-объектов.
Потому что эти объекты - это И ЕСТЬ ДАННЫЕ приложения. Это отдельный важный слой.

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

Модели же неизбежно тянут за собой целую кучу левого кала, работают через жопу, если не высраны напрямую из базы.
ORM просто не предназначена для работы в таком качестве.
Ответы: >>1733351 >>1733805
Аноним 2020/06/25 07:38:23  №1733351 38
>>1733334
Пиздец, это все звучит как шизофазия.

>Какой-то модуль ожидает на вход, например, объект Room. Ему до пизды где он хранится
И что это блядь означает? Если функция принимает объект Room то причем здесь вообще хранение. Объект Room и так создается снаружи твоего модуля, причем тут блядь база?

>Модели же неизбежно тянут за собой целую кучу левого кала
Это относится только к ActiveRecord, который по определению делает все и сразу. Ну возьми доктрину, будет чистая модель.
Ответы: >>1733391
Аноним 2020/06/25 08:25:58  №1733386 39
>>1731888 (OP)
Хочу установить Laravel на Manjaro. Проблема в том, что у меня не все необходимые модули установлены, например нет bcmath и некоторых других. Я хз где их брать и как устанавливать, с экосистемой php почти незнаком. Вообще, в описании пакета php для manjaro написано, что модуль bcmath и другие включены, но в выводе php -m его нет. Как быть?
Ответы: >>1733394
Аноним 2020/06/25 08:30:39  №1733391 40
>>1733351
Какая нахуй чистая модель? Чистая "модель" - это data value object с полями и геттерами, и больше вообще нихуя.

Опять же, я это моделью не называю, скорее Data Entity.

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

>Если функция принимает объект Room то причем здесь вообще хранение.
А объект Room унаследован от ActiveRecord говно-класса фреймворка?
Тогда хранение тут очень причем. Более того, из-за тянущегося за ним говна код, получивший этот объект, может даже писать через него в базу.

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

Сами данные - чисто DTO-объект.
Низкоуровневая реализация хранения - СУБД.
Более высокоуровневый доступ к хранению - репозиторий с функциями вида "updateParentOwners()".

Я все это не от пизды говорю, в больших приложениях действительно удобнее, чтобы все это было разделено.
Ответы: >>1733400 >>1733682
Аноним 2020/06/25 08:31:57  №1733394 41
>>1733386
Научись уже использовать докер
Ответы: >>1733402
Аноним 2020/06/25 08:37:20  №1733400 42
1398457346272.jpg (25, 550x550)
550x550
>>1733391
Ах, ну да, и еще способ сериализации - тоже вещь отдельная и желательно тоже не должна быть привязана ко всему остальному.
То бишь, DTO не должен знать о том, как он сериализуется.
Аноним 2020/06/25 08:38:14  №1733402 43
>>1733394
Я могу запустить laravel в докере, но не понимаю как вообще устроен процесс разработки на локали в докере. В основном все руководства о том как запускать уже готовое. Что и где почитать о ворк флоу в докере?
Ответы: >>1733505
Аноним 2020/06/25 09:56:49  №1733505 44
>>1733402
>В основном все руководства о том как запускать уже готовое
Ты походу как-то не туда гуглил.

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

Еще есть docker-compose, он помогает организовать несколько докер-сервисов и связать их вместе.

Нет никакой разницы, на "локали" ты это делаешь, или нет.
Происходящее снаружи контейнеров приложение докера не ебет вообще, оно даже не знает ничего о хост-системе.
Ответы: >>1733507 >>1733512
Аноним 2020/06/25 09:57:51  №1733507 45
>>1733505
Ну и обычно тебе дохуя настраивать не нужно, потому что ты за основу берешь один из образов, где уже почти все, что тебе нужно, настроено.
Например, тот же образ php, поэтому тебе не надо вручную устанавливать, компилировать и настраивать пых.
Ответы: >>1733512
Аноним 2020/06/25 10:02:18  №1733512 46
>>1733505
>>1733507
Код где писать, не в контейнере же? Как то же надо пробрасывать код из хоста в контейнер, вот это вот всё.
Ответы: >>1733639
Аноним 2020/06/25 11:12:39  №1733572 47
>>1733207
Да точно, совсем забыл что одинарные не видят переменные
Аноним 2020/06/25 11:12:58  №1733573 48
>>1733206
И причем здесь конкатенация
Аноним 2020/06/25 12:36:28  №1733638 49
>>1733221
>средняя зарплата пхпшника с опытом - 30 тысяч рублей
Где ты такие зарплаты нашел?
Аноним 2020/06/25 12:38:49  №1733639 50
>>1733512
Пиздуй уже читать учиться
Ответы: >>1733672
Аноним 2020/06/25 13:27:28  №1733671 51
>>1732757
Блять, Symfony Serializer пытается хранить таймзону DateTime как смещение часов, вида "+03:00".

Это полный пиздец, как можно было так обосраться?

Сука, ну почему кругом одни некомпетентные долбоебы, даже разработчики core-библиотек?

Нельзя сука хранить таймзону в виде смещения блять.
Потому есть такая хуйня, как летнее/зимнее время, а еще государство несколько раз вводит его и отменяет.
Специально для этого во всех нормальных местах таймзона хранится в виде "Регион/Город", например, "Europe/Moscow".
Таким образом, софт-обработчик времени знает всю историю изменений летнего/зимнего времени и смены часовых поясов в этом регионе.

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

В то же время умный софт будет знать всю эту историю и сможет вычислить реальное количество прошедших секунд с любой маня-даты.
Аноним 2020/06/25 13:27:40  №1733672 52
>>1733639
Так учиться или читать, или учиться читать? Ты если ответ на мой вопрос не знаешь, то и не надо отвечать. Про докер я и сам знаю, но вопрос был не об этом. Не удивлюсь если ты вообще windows используешь и пытаешься меня учить как использовать линукс.
Ответы: >>1733695
Аноним 2020/06/25 13:36:18  №1733682 53
>>1733391
Такое ощущение, что ты нахватался терминов, но абсолютно не понимаешь что они означают. Что такое модель, что такое value object, что такое entity, active record и data mapper.

Тебе уже сто раз говорили, что то что ты пытаешься сделать это типичная задача в пхп разработке. Ты похоже просто не воспринимаешь текст. Если тебе действительно интересно что не так я готов тебе объяснить на словах https://дискорд.gg/3aVySY6
Поверь, я знаю о чем говорю. Писать больше смысла не вижу, долго, да ты и не читаешь нихуя.
Ответы: >>1733693
Аноним 2020/06/25 13:47:36  №1733693 54
>>1733682
>Что такое модель
Я называю моделью чисто экземпляр класса модели фреймворка. Вот любая дрысня, что наследуется от класса вроде "Model" фреймворка - это модель. Любого фреймворка, Laravel, Yii, Symphony.
Я употреблял слово "модель", чтобы показать, насколько эти дефолтные классы фреймворка далеки от DTO.
>что такое value object
Простой объект, содержащий только данные и, опционально, геттеры/сеттеры, и больше ничего. Никаких методов обработки данных.
>что такое entity
Могу утверждать, что понятия entity/DTO/value object равнозначны.
Можно сказать, что data transfer object должен сам уметь конвертиться в приемлемый для передачи вид, но это все вилами по воде и нигде общепринято не утверждено.
Короче, простой объект, только содержащий данные, ничего сам с ними не делающий.

>active record
Паттерн, согласно которому создание экземпляра класса равнозначно созданию/получению строки из БД, его изменение - изменению строки.
>data mapper.
Я этот термин вообще не употреблял.
Ответы: >>1733697
Аноним 2020/06/25 13:48:28  №1733695 55
>>1733672
Возможно, тебе следует активировать нужные модули в php.ini
Ответы: >>1733704
Аноним 2020/06/25 13:50:39  №1733697 56
>>1733693
Половина тобой написанного чушь. Я просто устал ебашить простыни по пол страницы.
Ответы: >>1733705
Аноним 2020/06/25 13:58:28  №1733704 57
>>1733695
В смысле? php -m дает такой вывод

[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
hash
json
libxml
mbstring
mysqlnd
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

Модули входят в пакет php? Думаю что не все, особенно на линуксах где есть pacman, в них принято все в отдельные пакеты запаковывать. Но пакет bcmath в репах я не нашел. Некоторые другие есть, но не те что нужны для laravel.
Ответы: >>1733710
Аноним 2020/06/25 13:58:56  №1733705 58
>>1733697
Что конкретно я не так сказал?
Твои выпуки типа "Поверь, я знаю о чем говорю" и "Половина тобой написанного чушь" можешь оставить при себе, потому что там не содержится никакой конкретной информации.
Ответы: >>1733709
Аноним 2020/06/25 14:01:03  №1733709 59
>>1733705
Мне лень писать, это хорошо если в один пост влезет, а ты все равно не читаешь нихуя. Если тебе действительно интересно я тебе за десять минут объясню в чем ты ошибаешься https://дискорд.gg/3aVySY6
Ответы: >>1733712
Аноним 2020/06/25 14:01:42  №1733710 60
>>1733704
Возможно, php -m выдает только те модули, что были скомпилированы вместе с пхп, а не установлены отдельно.
Ты в пхп.ини смотрел? Раскомментировано возле нужных модулей?
Ответы: >>1733720
Аноним 2020/06/25 14:03:06  №1733712 61
>>1733709
Рассказывай здесь, нахуй мне всралось ходить по твоим говноссылкам
Ответы: >>1733718
Аноним 2020/06/25 14:10:34  №1733716 62
>>1733221
>средняя зарплата пхпшника с опытом - 30 тысяч рублей
На удаленке дают 80-150к мидлу (3 года опыта)
В дс немного больше
Аноним 2020/06/25 14:11:29  №1733718 63
>>1733712
Ты не знаешь что такое дискорд? Зайдешь в канал, послушаешь и выйдешь, делов на десять секунд.
Ответы: >>1733724
Аноним 2020/06/25 14:15:22  №1733720 64
>>1733710
>Возможно, php -m выдает только те модули, что были скомпилированы вместе с пхп
Похоже что так

>Ты в пхп.ини смотрел? Раскомментировано возле нужных модулей?
Нет, не раскоментировано. Если раскоментирую, то что дальше делать?

Спасибо за подсказку.
Аноним 2020/06/25 14:16:21  №1733724 65
>>1733718
Там 2 чела утром было. Тут народу больше. Так что пиши здесь.
Ответы: >>1733727
Аноним 2020/06/25 14:18:15  №1733727 66
>>1733724
И? Причем тут количество? Ты понимаешь что я на этот пост потрачу минут сорок. Не нравится дискорд, давай что тебе нравится слак, зум, тимспик.
Ответы: >>1733737
Аноним 2020/06/25 14:22:29  №1733730 67
мультирегиональность кун снова в треде
анонсы, подскажите мне как реализовать такой момент. допустим вот мой сайт пашет только на 5 городов. я определяю что юзер например зашел с волоколамска. но моего сайта для его города нет, ближайший к нему это москвабад. как мне это обработать чтобы срероутить на московский сайт?
Ответы: >>1733734
Аноним 2020/06/25 14:25:58  №1733734 68
>>1733730
Если в россии, то ищи по фиасу.
Ответы: >>1733824
Аноним 2020/06/25 14:30:13  №1733737 69
>>1733727
>Ты понимаешь что я на этот пост потрачу минут сорок.
Вот и кидай его сюда. Больше людей прочитает. Ради одного поста никто в дискорд не пойдет.
Ответы: >>1733739
Аноним 2020/06/25 14:32:55  №1733739 70
>>1733737
Ой да иди в пизду, я помочь тебе хотел. Сиди дрочи свои data value entity, потом все равно выбросишь код нахуй.
Ответы: >>1733837
Аноним 2020/06/25 15:22:44  №1733797 71
>>1733256

Как ты можешь обобщать всех php программистов? Очевидно, никак, просто хочется что-то ляпнуть про php, а аргументов нет. Держи статью, болезный: https://habr.com/ru/post/315152/
Ответы: >>1733830
Аноним 2020/06/25 15:25:52  №1733805 72
>>1733334

Ты просто плохо разбираешься в ORM. Доктрина как раз делает то, что тебе нужно. Ты просто, видимо, пользовался только Active Record, а с Data Mapper не знаком.

А вот промежуточные объекты между моделью и JSON, на мой взгляд, не нужны.
Аноним 2020/06/25 15:37:50  №1733820 73
ОП проверь пожалуйста задачку про сдачу банкомат, не решаемую через жадный алгоритм, взятая из твоих уроков. Первая задача http://phpbook.ga/l1/mou-ikkai.html , также прикрепляю картинку . Пол года назад ты давал советы по решению и оптимизации. Так что, следуя всем твоим советам, прежде, чем приступать к решению этой задачи сделал рекурсивную генерацию комбинацию из n чисел принимающие значения от 1 до k https://ideone.com/6t9Tsn . А далее решал уже саму задачу, через много попыток и вариантов решений, вот мой конечный вариант задачи https://ideone.com/KB7yZi .
Ответы: >>1733825
Аноним 2020/06/25 15:39:07  №1733824 74
>>1733734
а у них есть свои api ? чтобы я мог послать адрес откуда зашел и он мне вывел ближайшие города ко мне?))
Аноним 2020/06/25 15:39:31  №1733825 75
Снимокс.PNG (93, 843x798)
798x843
Аноним 2020/06/25 15:45:45  №1733830 76
>>1733797
И нахрен ты высрал рандомную статью? Я задал два конкретных вопроса, от ответа на которые зависит будет ли тебе легко сменить язык. Тебе есть что на них ответить?
Ответы: >>1734047
Аноним 2020/06/25 15:56:01  №1733837 77
>>1733739
Запиши и скинь mp3 сюда. Ты понимаешь, что ты просишь регистрироваться в каком-то левом парашном сервисе?
Ответы: >>1733843
Аноним 2020/06/25 16:03:20  №1733843 78
>>1733837
Ты блядь издеваешься? Какой сервис для тебя не "левый" и не "порашный"? Ты с работодателем на карантине через что общаешься?
Ответы: >>1733845 >>1733859
Аноним 2020/06/25 16:05:55  №1733845 79
>>1733843
Просто берешь и кидаешь сюда прямую ссылку на mp3 без своих маня-сервисов.
>Ты с работодателем на карантине через что общаешься?
Телеграм (и то зарегался именно для этой цели).
Ответы: >>1733847 >>1733849
Аноним 2020/06/25 16:07:06  №1733847 80
>>1733845
Ну ты слишком параноик даже для бекендщика.
мимо
Аноним 2020/06/25 16:09:29  №1733849 81
>>1733845
>маня-сервисов
Еще раз, какой сервис голосового общения не "маня"? Мне там зарегаться десять секунд.
Ответы: >>1733850
Аноним 2020/06/25 16:10:52  №1733850 82
>>1733849
Любой сервис "маня". Про файлообменники не слыхал?
Ответы: >>1733851
Аноним 2020/06/25 16:11:54  №1733851 83
Аноним 2020/06/25 16:14:12  №1733853 84
>>1733318
Как ты тип из того же объекта вытащишь?
Ответы: >>1733857
Аноним 2020/06/25 16:18:03  №1733857 85
>>1733853
Это правила валидации. Ты их задаешь до выполнения программы. Например тип "А" не должен быть длиннее 10, а тип "Б" не должен быть длиннее 15. Валидатор работает через рефлексию, и в нем ты можешь узнать тип объекта.
Аноним 2020/06/25 16:19:27  №1733859 86
>>1733843
Ты че не понял? Никто ради тебя не будет лезть в группы. У меня есть и дискорд и телега, и в слаке я зареган, но мне нахой не нужно идти к тебе в группу, у меня и без того есть несколько десятков групп, где сотни и тысячи человек сидят. Или кидай сюда или досвидос.
Ответы: >>1733862
Аноним 2020/06/25 16:22:51  №1733862 87
>>1733859
Ну тогда бери свой дискорд, клади в свою телегу и катись к хуям. Пиздец, человеку предложили постратить свое время чтобы помочь, а он какие-то ебанутые требования выдвигает. Какие-то мп3, какие-то файлообменники, что несет вообще охуеть.
Ответы: >>1733867 >>1734316
Аноним 2020/06/25 16:29:25  №1733867 88
>>1733862
Ты походу думаешь, что обладаешь сокровенными знаниями? Какие есть основания доверять тебе? Я не знаю твой опыт. Если выбирать где спросить совета, то я выберу зайти в телеграм канал, где много опытных людей и там спросить.
Ответы: >>1733869
Аноним 2020/06/25 16:31:49  №1733869 89
>>1733867
Так а нахуй ты сюда тогда приперся? В телеграмме тебе в двух словах все объяснят.
Ответы: >>1733871 >>1733874
Аноним 2020/06/25 16:33:53  №1733871 90
>>1733869
С месяц назад в телеге в пхп конфе на недельку забанили чувака, который считал, что у dto должно быть поведение. В больших конфах срачи всегда так заканчиваются. Такое себе.
мимо
Ответы: >>1733872
Аноним 2020/06/25 16:35:50  №1733872 91
>>1733871
А то я не знаю. Этого додика и так уже походу пару раз банили. Он же поехавший.
Ответы: >>1734318
Аноним 2020/06/25 16:36:20  №1733874 92
>>1733869
Аналогичный вопрос могу задать. Я здесь потому что могу. Про модель ты не со мной спорил.
Ответы: >>1733877
Аноним 2020/06/25 16:37:47  №1733877 93
>>1733874
>Если выбирать где спросить совета, то я выберу зайти в телеграм канал, где много опытных людей и там спросить.
Спрашивает на дваче.
Ответы: >>1733881 >>1733883
Аноним 2020/06/25 16:43:39  №1733881 94
>>1733877
Ты тупой? Я тебе сказал, что про модели я не участвовал в разговоре вообще. Хотел зайти в дискорд, которй ты написал, думал там движуха, а там полторы калеки. Мне было интересно что ты там высрешь, поэтому сейчас я написал тебе, что пиши здесь, никто в твои группы пустые не пойдет. Understand?
Ответы: >>1733884
Аноним 2020/06/25 16:45:02  №1733883 95
Аноним 2020/06/25 16:47:09  №1733884 96
>>1733881
Ну конечно она пустая, она блядь для одного разговора сделана.
Аноним 2020/06/25 16:47:31  №1733885 97
Ответы: >>1733895
Аноним 2020/06/25 16:56:18  №1733895 98
>>1733885
там перл 7 анонсировали
Аноним 2020/06/25 17:18:46  №1733915 99
Аноны , где почитать про микросервисы доступным языком?
Умею пхп и ноду, на ларавел запилил не сложный магазин. Как мне к ПХПларе привязать ноду как сервис, чисто ради опыта?
Хочу немного разобраться в вопросе, где можно почитать? Да и ноду попрактиковать нужно, уже месяц не прикасался.
Ответы: >>1733916 >>1733921
Аноним 2020/06/25 17:21:35  №1733916 100
Ответы: >>1733917
Аноним 2020/06/25 17:26:10  №1733917 101
>>1733916
Я его английский не вкуриваю через слово. Мой англ и так дрянь, а тут пиздец.
Аноним 2020/06/25 17:33:11  №1733921 102
Ответы: >>1733935
Аноним 2020/06/25 17:39:10  №1733923 103
там альфа версия 8ки вышла
Аноним 2020/06/25 17:49:36  №1733935 104
>>1733921
Пробовал, уже читаю.
Решил попробовать вынести сервис почты из лары в ноду, ради эксперимента.
Технически - не ебу пока что как это реализовать.
Ответы: >>1733936 >>1733955
Аноним 2020/06/25 17:50:53  №1733936 105
>>1733935
Пишешь сервис на ноде.
Определяешь способ взаимодействия (транспорт) между сервисами.
С помощью второго отправляешь лергаешь микросервис отправки почты из своего монолита.
Все.
Ответы: >>1733940
Аноним 2020/06/25 17:54:57  №1733940 106
>>1733936
В качестве транспорта сокеты?
Ответы: >>1733946 >>1733980
Аноним 2020/06/25 17:59:11  №1733946 107
>>1733940
Что хочешь. Сокеты тоже могут быть.
Ответы: >>1733947 >>1733952
Аноним 2020/06/25 18:00:10  №1733947 108
>>1733946
кстати,насколько рабочие сокеты и вебсокеты в пхп?
Ответы: >>1733948 >>1733958
Аноним 2020/06/25 18:01:29  №1733948 109
>>1733947
Сокеты - хз что ты имеешь ввиду. Unix-сокеты? Заебись рабочие.
Вебсокеты надо немного приготовить, а так терпимо.

Если что, транспортом может быть даже бд, если тебе реалтайм не сильно важен. Так что тут вариантов уйма.
Ответы: >>1733981
Аноним 2020/06/25 18:06:02  №1733952 110
>>1733946
Я о микросервисах читаю буквально минут тридцать. В общем случае можно сказать что микросервисы - это фактически несколько самостоятельных вэб сервисов/серверов которые выполняют свои отдельные задачи?
Можно ли считать микросервисной архитекурой то что я на ноде подниму почтовый сервис, а когда мне нужно будет отравлять почту из приложения на ларавел, допустим json ,то данные я отправлю на вэб-сервер на ноде, и нода уже будет отправлять письма?
Ответы: >>1733954
Аноним 2020/06/25 18:06:40  №1733954 111
Ответы: >>1733960
Аноним 2020/06/25 18:07:05  №1733955 112
>>1733935
>Технически - не ебу пока что как это реализовать.
Я не спец, но как понимаю это должны быть разные приложения, в разных процессах, и они должны общаться по какому то протоколу через какой то транспорт. Например rest api, одно приложение хоть фронтенд на JS хоть бекенд на чем то, дергает ручки другого приложения через http.
Ответы: >>1733960
Аноним 2020/06/25 18:09:49  №1733958 113
>>1733947
На пхп по сокетам не интересовался, но полагаю создается tcp-сокет, присваевается некий id. И скрипт пхп по этому id обращается к сокету "выделенному" операционкой. Но это я примерно так почувствовал.
Ответы: >>1733961 >>1733962
Аноним 2020/06/25 18:11:50  №1733960 114
>>1733954
>>1733955
Спасибо, в общем понятно. Буду велосипедить немного ,а после что нибудь почитаю из литературы.
Аноним 2020/06/25 18:12:23  №1733961 115
>>1733958
Вебсервром, а не операционкой. Энжинксом например. У соединения будет чтото вроде долгого keep-alive. Вот этот канал и не будет умирать, а так это надстройка над хттп протоколом.
Аноним 2020/06/25 18:12:24  №1733962 116
>>1733958
все пишут что сокеты на пхп-это лютые костыли
Ответы: >>1733969
Аноним 2020/06/25 18:15:26  №1733969 117
>>1733962
Правильнее сказать, что костыли это демоны на пхп (и это тоже уже давно не правда).
Ответы: >>1733984
Аноним 2020/06/25 18:22:26  №1733980 118
>>1733940
>В качестве транспорта сокеты?
Сокеты это не транспорт, а интерфейс. Транспорт в данном случае TCP. Самое сексуальное решение это заюзать MQTT, но хз как с этим в PHP.
Аноним 2020/06/25 18:22:46  №1733981 119
>>1733948
>Вебсокеты надо немного приготовить, а так терпимо.
проще ноду поставить
Ответы: >>1733983
Аноним 2020/06/25 18:23:47  №1733983 120
>>1733981
Да как хочешь, сути то не изменит.
Аноним 2020/06/25 18:26:19  №1733984 121
>>1733969
>и это тоже уже давно не правда
Да да. Пиздеж бессовестный (нет)
https://bugs.php.net/bug.php?id=76982
This bug is pretty serious when integrating the symfony dependency injection container in reactphp, phppm or swoole applications.
Ответы: >>1733986 >>1734059
Аноним 2020/06/25 18:27:23  №1733986 122
>>1733984
Я не работаю на симфони, хз чем ответить.
Ответы: >>1733994
Аноним 2020/06/25 18:31:39  №1733994 123
>>1733986
Симфони это просто пример. Вот еще последствия этого бага:
https://bugs.php.net/bug.php?id=74938
memory leak with eval closure on php7

https://bugs.php.net/bug.php?id=79626
arrow function and anonymous functions should be garbage collect ,but it seems be the full life cycle

Эти баги означают что твой демон в определенный момент может потечь по памяти, причем внутри виртуальной php машины, а не в твоем коде. Так что демоны на пхп по прежнему геморная хуйня.
Ответы: >>1733996 >>1734019 >>1734052
Аноним 2020/06/25 18:33:55  №1733996 124
>>1733994
Может ты и прав, сужу по своим демонам только, они не текут. Но они у меня простые. Возможность есть раз такая - то ладно, значит пыха не подходящий инструмент для написания демонов, соглашусь.
Ответы: >>1733997
Аноним 2020/06/25 18:35:54  №1733997 125
>>1733996
У меня кореш неделю ебался, думал доктрина память хавает.
Аноним 2020/06/25 19:47:15  №1734019 126
>>1733994
Ничего не понял. От чего память течет? Как я понял течет куча?
Ответы: >>1734027
Аноним 2020/06/25 20:06:57  №1734027 127
>>1734019
Как поймешь запили пулл реквест с фиксом, а то эта залупа с 2018 года висит не закрытая.
Ответы: >>1734035
Аноним 2020/06/25 20:15:25  №1734035 128
>>1734027
Не вариант вручную ссылки чистить?
Ответы: >>1734039
Аноним 2020/06/25 20:22:45  №1734039 129
>>1734035
Ну вот используешь ты у себя в демоне ORM. Демон забил всю память и встал колом. Где течет хз. В твоем коде или в ОРМ хз. Что чистить хз. Можно конечно отслеживать и, например, при использовании гигабайта памяти демон перезапускать. Именно это я и назвал "геморная хуйня".
Ответы: >>1734048 >>1734053 >>1734056
Аноним 2020/06/25 20:24:49  №1734041 130
Аноны помогите, какой-то хуй повадился заливать на клиентскую хостинговую площадку php шеллы и различную малварь, я периодически все вычищаю и контролирую его по логам, но окончательно забороть никак не могу. Проблема в том что на площадке несколько сайтов, причем на разных CMS. Я никак не могу понять через какую дыру он заливает свои файлы. Судя по логам они просто изниоткуда возникают.
Аноним 2020/06/25 20:33:26  №1734047 131
>>1733830
У тебя детектор сломался, друже. Я не говорю что уже со всем ознакомлен, а написал о том, что пока еще вкатываюсь. Пыха мне нравится по дизайну и всему прочему, и пока ни на что другое я ее менять не хочу, но не исключаю того, что возможно когда-то придется. Я наверное ебанутый сюда вкатываться в 2020, но так уж сложилось. Надеюсь что когда-то старые пхпшники поумирают, а новых не будет потому что пхп учить не модно. Вот тогда я и выйду на сцену, и буду диктовать свои правила, лол.
Ответы: >>1734061
Аноним 2020/06/25 20:34:27  №1734048 132
>>1734039
Идеальных инструментов под все задачи нет. Нода тоже течет и не только нода.
Аноним 2020/06/25 20:38:01  №1734052 133
>>1733994

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

Этот "баг" очень трудно получить на практике. Вкратце он сводится к тому, что память, выделенная под исполняемый код, не высвобождается. Но только я не припомню, чтобы нормальной практикой было делать eval (eval is evil) или реквайрить один и тот же файл миллион раз. И, кстати, уверен ли ты, что в ноде, Руби или Питоне нет аналогичного бага?

Эти "баги" писать демоны никак не мешают.
Ответы: >>1734059
Аноним 2020/06/25 20:40:05  №1734053 134
>>1734039

Ты сейчас описал жизнь типичного программиста на JS, Питоне или Руби, где утечки памяти настолько обычное дело (из-за того, что там не очищаются переменные после обработки запроса, в отличие от PHP, и это вызывает утечки), что никто их даже не ищет, а просто делают перезапуск демона по таймеру.
Ответы: >>1734060
Аноним 2020/06/25 20:42:14  №1734056 135
>>1734039

Для поиска, что именно течет, нужно использовать memory profiler, для Си такие есть, а вот есть ли они для JS/Python/Ruby - не знаю.
Аноним 2020/06/25 20:42:43  №1734059 136
>>1734052
И чем ты читал, жопой?
eval это следствие основного бага, про который я писал в предыдущем посте >>1733984 https://bugs.php.net/bug.php?id=76982
В баге с eval написано duplicate, жопочтец.
Ответы: >>1734062
Аноним 2020/06/25 20:43:14  №1734060 137
>>1734053
Я предпочитаю не перезапускать по таймеру, а просто запускать по таймеру через cron.
Аноним 2020/06/25 20:45:45  №1734061 138
>>1734047
>Надеюсь что когда-то старые пхпшники поумирают
Эй, я жить хочу.
Ответы: >>1734070
Аноним 2020/06/25 20:48:53  №1734062 139
>>1734059

В каком реалистичном сценарии требуется миллион раз реквайрить один и тот же PHP-файл? Если используется автозагрузчик, то файлы реквайрятся только один раз.
Ответы: >>1734063
Аноним 2020/06/25 20:54:14  №1734063 140
>>1734062
Хватит читать жопой.
This bug is pretty serious when integrating the symfony dependency injection container in reactphp, phppm or swoole applications.
И как минимум что-то вызывает этот баг в доктрине.
Да и в целом ты не можешь знать наверняка если используешь сторонние библиотеки.
Ответы: >>1734077 >>1734079
Аноним 2020/06/25 21:01:15  №1734070 141
>>1734061
Да живи, я не спешу. Все там будем.
Аноним 2020/06/25 21:29:42  №1734077 142
>>1734063

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

> PhpFilesAdapter uses exactly this technique to load files from the cache

Если проблема в этом, надо просто поменять адаптер.

Это скорее баг в Симфони, чем в PHP, так как Симфони оптимизирована для "умирающего" режима работы. Демоны он писать не мешает.

Про твой случай с доктриной ничего не понятно из описания.
Ответы: >>1734087
Аноним 2020/06/25 21:31:32  №1734079 143
>>1734063

Вот в каждом треде находится какой-то поехавший, который выкопает малозначительный баг, проявляющийся в редких случаях, и трясет им тут, утверждая, что якобы на PHP нельзя писать демоны (неправда, можно). И, кстати, ты уверен, что в Руби/Питоне/JS аналогичного бага с инклюдом файла миллион раз нет (по-честному миллион раз, а не через аналог require_once) ?
Ответы: >>1734090
Аноним 2020/06/25 21:49:51  №1734087 144
>>1734077
А если ты сам для себя адаптер пишешь тебе тоже багтрекер чекать нужно? Ты понимаешь что это не продакшен реди хуйня?
Когда ты бложек свой пишешь это не важно, а когда из-за такой хуйни продажи останавливаются это пиздец. В симфони написали адаптер, а в ларавеле не написали, а в доктрине вообще не в курсе что какой-то там адаптер течет. Кто будет с горящей жопой бегать и выяснять это?
Пиздец манямир.
Ответы: >>1734094 >>1734097
Аноним 2020/06/25 21:55:51  №1734090 145
>>1734079
А если есть язык еще похуже, то его недостатки тоже стоит в пхп добавить?
Любой более менее опытный программист на пхп знает что за пхпшными демонами нужно постоянно следить, что это ненадежная залупа, что гораздо проще запускать скрипт по расписанию.
Ответы: >>1734107
Аноним 2020/06/25 21:57:28  №1734094 146
>>1734087

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

Наконец, утечки памяти точно так же есть в приложениях на JS и прочих скриптовых языках. Но ты их не замечаешь, потому что тебе хочется что-нибудь ляпнуть про PHP.
Ответы: >>1734100
Аноним 2020/06/25 22:01:39  №1734097 147
>>1734087

Вот смотри, Питон, Руби или JS в сто раз менее "продакшен-реди". Ведь там даже нет тайп-хинтов и можно передать что угодно куда угодно. Это же дно. Я сам писал когда-то большое приложение на JS и ловил ситуацию, когда из-за опечатки в имени свойства из него читался null, и выскакивал совсем в другом месте программы, и надо было искать, откуда он возник. То еще удовольствие. В PHP в аналогичном случае было бы сообщение об ошибке.

На JS/Питоне/Руби я бы вообще не взялся писать что-то сложное по этой причине. Они больше подходят для маленьких скриптов в Jupyter Notebook (хорошая штука, кстати).

Ты, по видимому, ничего большого не писал и просто не знаешь проблем, и выдумываешь чушь про какой-то минорный баг, который вдруг обрушит продажи.
Ответы: >>1734106 >>1734321
Аноним 2020/06/25 22:09:25  №1734100 148
>>1734094
Бля, ну протестировал ты свой демон, а он течет. И не стал его использовать в продакшене. Что я и делаю.
Ответы: >>1734109
Аноним 2020/06/25 22:14:39  №1734106 149
>>1734097
>Вот смотри питон руби Js очень плохие
>поэтому баги в пхп не баги
Слышал что-нибудь про логику?
Ответы: >>1734114 >>1734115
Аноним 2020/06/25 22:15:09  №1734107 150
>>1734090
Правильно он тебе говорит. Везде течет. Даже сам линукс течет представь себе.
Аноним 2020/06/25 22:16:03  №1734109 151
>>1734100
>Бля, ну протестировал ты свой демон, а он течет. И не стал его использовать в продакшене.
Нормально пиши - не будет течь.
Ответы: >>1734111
Аноним 2020/06/25 22:21:05  №1734111 152
>>1734109
>Нормально пиши - не будет течь.
Хватит тролить тупостью. Утечки о которых идет речь происходят внутри пхп, а не из-за неправильности кода.
Ответы: >>1734116
Аноним 2020/06/25 22:21:40  №1734114 153
>>1734106
Ты похоже не слышал. Нужно правильно инструментом пользоваться. Тогда ничего течь не будет. Программист на то и инженер, чтобы использовать правильно инструмент и решать задачи, а не жаловаться что инструмент плохой.
Аноним 2020/06/25 22:23:35  №1734115 154
>>1734106

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

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

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

Так понятнее?
Ответы: >>1734119
Аноним 2020/06/25 22:25:35  №1734116 155
>>1734111
>Утечки о которых идет речь происходят внутри пхп, а не из-за неправильности кода.
Чтобы такое утверждать, разберись сначала из-за чего утечки.
Ответы: >>1734119
Аноним 2020/06/25 22:32:59  №1734119 156
>>1734115
Перечисли побольше хуевых языков и этот баг пропадет из багтрекера.

>>1734116
А че так мелко? Давай сразу "Чтобы такое утверждать напиши свой язык без утечек".
Аноним 2020/06/26 02:43:28  №1734200 157
Вопрос по php+sql. Сам придумал себе задачку и сам же ломаю голову как ее решить.
Скажем есть такая таблица https://pastebin.com/SFgRNMeu
1 | red | 3 | 43
2 | blue | 3 | 12
3 | green | 2 | 5
4 | red | 1 | 20
5 | red | 3 | 17
6 | green | 3 | 13
7 | green | 2 | 21
8 | blue | 1 | 2
9 | blue | 3 | 19
10 | red | 1 | 7
Задача: Как оформить sql запрос в php, чтобы посчитать сколько всего красных кубиков в каждой коробке?
Ответы: >>1734218 >>1734220
Аноним 2020/06/26 04:02:13  №1734218 158
Аноним 2020/06/26 04:16:44  №1734220 159
>>1734200

Ну типа select count(id) from table where box = 1 and cube='red';
Ответы: >>1737536
Аноним 2020/06/26 04:18:09  №1734221 160
А, в каждой... Тогда

Ну типа select box, count(id) from table where and cube='red' group by box;
Аноним 2020/06/26 07:09:16  №1734316 161
>>1733862
Пиздец нахуй, как зумер беспомощный, без зонда в жопе даже mp3 записать не может.
Ответы: >>1734332
Аноним 2020/06/26 07:10:39  №1734318 162
>>1733872
>высказал мнение, которое не разделяет толпа даунов-хомячков в обрыганском чатике
>додик
Все, что нужно знать про эти раковники. Собственно, поэтому я в них вообще никогда и не сидел
Ответы: >>1734476
Аноним 2020/06/26 07:16:29  №1734321 163
>>1734097
>Питон
>Ведь там даже нет тайп-хинтов
Самое смешное, что есть, но всем на них похуй, петухон-сообщество официально жрет дерьмо годами и не использует их.
Просто погляди на исходники популярных петухон-проектов. Такого кала даже на JS нет, не то что на пхп.
Комменты писать у петухонцев видимо не принято, вот в первый раз такое вижу, честно, чтобы прям для какого-то япа закономерно все игнорировали комментарии. Обычно это просто у новичков неопытных, но на питоне реально тенденция такая блять - не писать ебаные комменты, будто все и так должно быть понятно, что, откуда и куда пересылается по функциям (типы у параметров, ясен хуй, не указаны).
Просто какое-то раковое комьюнити.
Ответы: >>1734494
Аноним 2020/06/26 07:39:06  №1734332 164
Ответы: >>1734342
Аноним 2020/06/26 08:02:14  №1734342 165
Аноним 2020/06/26 10:33:29  №1734431 166
Для меня до сих пор страшная загадка, почему люди так бугуртят от динамической типизации.
Ответы: >>1734504 >>1734613 >>1735064
Аноним 2020/06/26 11:19:44  №1734476 167
>>1734318
>высказал мнение, которое не разделяет толпа даунов-хомячков в обрыганском чатике
Он высказал хуйню и не хотел никого слушать, продолжая бить себя пяткой в грудь. Таких дартаньянов банят заслуженно.
Аноним 2020/06/26 11:34:26  №1734494 168
>>1734321
>>Ведь там даже нет тайп-хинтов

>Самое смешное, что есть, но всем на них похуй

Тому що на них похуй интерпретатору.

>Просто погляди на исходники популярных петухон-проектов. Такого кала даже на JS нет, не то что на пхп.

Все так, динамикопараша во все щели, у JS хотя бы TS есть.
Аноним 2020/06/26 11:44:40  №1734504 169
>>1734431
Когда делаешь что-то сложнее хэллоу ворда динамика уступает статике
Ответы: >>1734516
Аноним 2020/06/26 12:01:46  №1734516 170
>>1734504
В этом плане у пыхи есть все шансы усидеть на двух стульях - динамика + ситуативная статика. Главное - грамотно развивать это направление в будущих версиях.
Ответы: >>1734518 >>1735065
Аноним 2020/06/26 12:02:59  №1734518 171
>>1734516
Скорее ситуативная динамика, потому что она очень редко пригождается, почти весь код пишешь так, будто у тебя только статика.
Аноним 2020/06/26 12:24:40  №1734537 172
Ответы: >>1737562 >>1742741 >>1743018
Аноним 2020/06/26 13:43:26  №1734613 173
>>1734431
Потому что хуй его знает, что ожидает чей-то метод. В итоге работа по проверке типов ложится не на компилятор, а на разраба.
Аноним 2020/06/27 07:07:02  №1735064 174
>>1734431
Потому что языки с динамической типизацией придумали ебанаты, которые никогда не прогали ничего крупнее лаба1.

Когда до долбоебов уже дойдет, что чем строже типизация - тем больше ошибок отлавливается автоматически, еще до выполнения?
Аноним 2020/06/27 07:13:52  №1735065 175
>>1734516
Динамический стул нахуй не нужен. Все его преимущества можно легко добавить в статический язык.

Например, взять ту же Java. У меня ни разу блять, за время использования, не было проблем с преобразованием типов, до того это гибко там происходит.
То есть, по факту, в яве преобразование типов происходит очевиднее и проще, чем в том же пыхе, хотя это СТАТИЧЕСКИ ТИПИЗИРОВАННЫЙ язык.
Например, в яве можно на лету преобразовать объект в подходящий тип:
Mother object = (Mother) getDaughter();
В пыхе так можно? только для скаляров Динамическая типизация, мам, ко-ко-ко, в смысле нельзя? Но... динамическая... типизация...
(Спасибо хоть за ко- и контравариантность в 7.4).
Ответы: >>1735067 >>1735380
Аноним 2020/06/27 07:21:03  №1735067 176
>>1735065
>Mother object = (Mother) getDaughter();
Дык а что мешает это щас в пыху добавить, скажем в версии 8.1? Это же никак не противоречит его динамичности.
Ответы: >>1735073
Аноним 2020/06/27 07:37:11  №1735073 177
>>1735067
>Дык а что мешает это щас в пыху добавить
Да хуй их там знает.
В пыху дохуя чего уже очень давно предлагали добавить и даже код для этого написали, вроде дженериков.
Но хуй там плавал.
Аноним 2020/06/27 08:00:52  №1735081 178
Аноны, помогите советом.

Вкатун,20 лет, ДС-404 чуть меньше лимона жителей.
Пришел в компанию на позицию джуна-разработчика 1С-Битрикс(Да, знаю, кал и тд, но у меня в зажопинске других вариантов почти и нет).

Вот только сейчас уже почти месяц я даже не трогал php, я только и делаю что верстаю адаптивные странички на бутстрапе.
Вроде как у меня стажировка и мне даже заплатят(фикс 35к), но я же должен работать с битриксом, а мне дают только верстку. Лид говорит что все успею, не переживай все так начинали. Че делать? Ждать пока дадут команду учить битрикс? Или дропать эту компанию? Не так я представлял жизнь php джуна...
Аноним 2020/06/27 08:03:21  №1735083 179
>>1735081
Дополню, взяли меня, полностью понимая что я вообще ноль и из умений моих это список студентов и файлообменник из оппоста.
Ответы: >>1735091
Аноним 2020/06/27 08:28:00  №1735091 180
>>1735081
>>1735083
Вообще, норм, спасибо и на том, что взяли.
Так-то из тебя растят классическую боевую фулкек-макаку, чтобы мог уверенно клепать формочки и верстки и жс не пугался.
Без фронта сейчас никуда, ты обучаешься, а тебе еще и платят за это, скажи спасибо.
Аноним 2020/06/27 09:47:06  №1735127 181
>>1735081

Что ты такой суетной? Тебе 20, месяц формочки клепаешь, времени море. Напротив, расслабься, получай удовольствие от работы и жизни.
Аноним 2020/06/27 11:15:46  №1735182 182
>>1735081
Ну поверстаешь, это все веб макаки проходят, и фронты, и беки.
Мб потом передумаешь пачкаться об битрикс, возьмешь реакт и пойдешь на 100к удаленку.
Ответы: >>1735210
Аноним 2020/06/27 12:13:19  №1735210 183
>>1735182
А на вью на 100к мона?
Ответы: >>1735238 >>1735254
Аноним 2020/06/27 12:47:36  №1735238 184
>>1735210
Мона. С битрикса только надо съебывать как можно быстрее.
Ответы: >>1735257
Аноним 2020/06/27 13:20:12  №1735254 185
>>1735210
Можно и на вью. У нас чел недавно с годом опыта вуе на 100к+ вкатился
Аноним 2020/06/27 13:21:34  №1735257 186
>>1735238
Этого поддвачну. Битрикс - болото, из которого сухим не вылезти.
Опыт работы на битриксе применим только к битриксу даже не к пыхе. При смене стека будешь всё изучать заново
Ответы: >>1735410
Аноним 2020/06/27 16:16:41  №1735380 187
>>1735065

Ты, по моему, что-то путаешь. В Яве строка

Mother object = (Mother) getDaughter();

Ничего не преобразует, а лишь проверяет в рантайме, что getDaughter вернет объект класса Mother или наследника. В PHP это не требуется делать, потому там синтаксиса для этого и нет, в PHP достаточно просто написать:

$object = getDaughter();
Ответы: >>1736636
Аноним 2020/06/27 17:09:46  №1735410 188
>>1735257
Неужели битрикс это настолько плохо?
Просто у меня в дс всего 7 вакансий джуна или околоджуна. 5 из них это битрикс, одна вью и одна ларавел.
В битрикс-конторах мне хоть тестовые давали и на собесы звали, а вью и лара просто отказ вы нам не подходите. Вот я и решил набрать год опыта в битриксе, а потом уже идти в другое место.
Аноним 2020/06/27 17:13:52  №1735412 189
>>1735410
Не вью а Yii уже в глаза ебусь в ночи
Аноним 2020/06/27 18:56:06  №1735504 190
>>1735410
>у меня в дс всего 7 вакансий
ДС - значение знаешь?
Аноним 2020/06/27 19:02:00  №1735513 191
>>1735410
Это говно сделанное макаками из 1с, никогда по своей воле не стоит иметь дел с такими странными вещами.
Аноним 2020/06/27 19:02:27  №1735514 192
>>1735410
>Неужели битрикс это настолько плохо?
Да, настолько плохо. Плохо по зп, плохо по скилам, плохо по востребованности.
>Просто у меня в дс всего 7 вакансий джуна или околоджуна. 5 из них это битрикс, одна вью и одна ларавел.
Пробуй те две с уи и ларавелем.
И кто-то запрещает тебе стучаться на мидловые ваки?
Просишь тестовое - делаешь - идешь на собеседование.
>В битрикс-конторах мне хоть тестовые давали и на собесы звали
Ну конечно они любому лошку рады. Хорошие разработчики в т.ч. джуны просто не пойдут к ним
>Вот я и решил набрать год опыта в битриксе, а потом уже идти в другое место.
Не, такое с битриксом не работает. Ты сможешь максимум из битрикс джуна стать битрикс мидлом. Но в php ты всё еще будешь на уровне ниже джуна.

Вот почитай выжимку: https://habr.com/ru/post/282333/
Думаю, многие вопросы отпадут.
Ответы: >>1735518 >>1735576
Аноним 2020/06/27 19:13:09  №1735518 193
>>1735514
>Не, такое с битриксом не работает. Ты сможешь максимум из битрикс джуна стать битрикс мидлом. Но в php ты всё еще будешь на уровне ниже джуна.

У меня такая хуйня с вордпрессом. Сеньор вордпресс, пхп ниже джуна. Сейчас начал наверстывать, получается достаточно легко, благодаря большому бекграунду ковыряния говен, но много времени проебано зря на сайтиках для ашотов.
Ответы: >>1735519
Аноним 2020/06/27 19:16:20  №1735519 194
>>1735518
>У меня такая хуйня с вордпрессом
Как и с любой cms или екомерс движком. Практики прямиком из нулевых дошедшие до наших дней
Аноним 2020/06/27 20:00:39  №1735547 195
Что скажете про шаред хостинг от reg.ru? Че то условия меня напрягают. Более 150к файлов - блокировка, более 4 Гб размер базы - блокировка, максимальное кол-во fastcgi процессов - 4, максимальное кол-во процессов - 18, максимальное кол-во открытых файлов (хз что это значит) - 512. Это норм? Нужно быстро решать брать или нет, потому что через 1 час у меня спишут деньги, которые дам давно лежат и не используются.
Ответы: >>1735558
Аноним 2020/06/27 20:14:22  №1735558 196
>>1735547
Я для ашота сайтов много лет юзаю. На одном хосте по 25 вордпресс говен лежит. Для чего-то иного использовать бы не стал.
Ответы: >>1735560
Аноним 2020/06/27 20:25:06  №1735560 197
>>1735558
>На одном хосте по 25 вордпресс говен лежит.
Как если только 4 fastcgi процесса?
Ответы: >>1735763
Аноним 2020/06/27 20:31:06  №1735562 198
Что скажете?
Ответы: >>1736972
Аноним 2020/06/27 20:56:46  №1735576 199
>>1735514
Ух ща простыня будет, которую никто не прочитает, пост про битрикс стригерил флешбеки.
Было дело мне менеджер подсунул помимо прочего поддержку магазина на престе (не последней версии, 6 чтоли), проебался я с ней полгода, но и за это время успел оценить прекрасную квалификацию обезьян под цмски.
Сама преста нихуя не идеальная, вообще говно как и положено продуктам с таким жизненным путем, однако чисто на голую с ней еще можно было бы работать. Даже обновить до гораздо более современных в плане кода версий.
Но не тут то было. До меня эту срань поддерживала какая-то вебстудия в течение года, и первое что я увидел - это полностью переломанное мелкими правками ядро. Потому что так сделать быстрее.
Первое что пришлось сделать - подрубить гит и послать сеошников нахуй и пожелать им смерти. До этого работали прямо по фтп, причем давая доступ к коду даже сеошникам, которые с одном специальном костыле через регулярки последним делом в каждом запросе разъебывали как им надо всю сгенеренную верстку (в том числе с помощью охуенных сео модулей, которых они туда поставили вообще все, до которых смогли дотянуться, но так и не смогли понять как это настраивается).
Продолжил сразу же git diff тулом, которым прошелся по всему ядру из гита и сравнил его с ядром этой убитой версии. За кучу бессонных ночей выкорчевал это все в расширения, тем самым очистив ядро и выделив всю хуйню, что говноеды наделали за это время. Чуть ли не половину пришлось выдирать через рефлексию, т.к. законных способов модификации такого в самом ядре вообще не было.
Подтянул композер и его автолоадер, сделав, конечно, альтернативным, потому что родной автолоадер из нулевых убивать себе дороже - там хуета по типу того, что в этой статье с битриксом. Подтянул всякие миграции (автосгенерил начальную со всей продовой базы, дальнейшие соответственно нормально писал. Прежде они по анти юбест практисам правили все руками в продовой базе прямо. Алсо, стейдж тоже поднял, как и возможность вообще локально это дерьмо развернуть.) Орму несложную, все такое. Кое что расширил (роутинг например), чтобы проще было модулями расширять, а это требовалось в основном как раз. Кое что порефакторил в процессе, обновил пхп с 5.хуй какой-то версии до 7.1 (кажется, выше не вышло), точечно поправив где пизда была. Исправил старые ошибки, которые там годами висят, закрыл старые уязвимости (хотя это скорее для галочки, потому что как позже оказалось сверхразумов не защитить от уязвимостей - они сеошников на прямую в базу пускают). Всякую админскую хуету поделал, реплики там, хттпс автообновляемый и бесплатный, мусор (а они и его на серв ставили) поудалял, переключил с nginx + apach на nginx. Кеш завел для себя. В общем весь новый функционал писался в гораздо более человеческом виде, чем на родную, а уж тем более на уебанную сео-конторой версию престы. Новенькое превратилось более менее в непотную рутину.
Но желание обновиться таки было (и у заказчика особенно), а для этого самое главное не ядро вылечить, а 150 модулей (их реально столько было). Каждый из них с собственным кодом от очередного васяна. Были и оформленные хорошо, вроде модулей от яндекса, но и в них успели насрать. Отключил почти 70% из них. Оказалось просто ставили, а зачем - хуй их знает. Управленцы, сэр, видят цель не видят препятствий блядь, ставят все подряд в надежде что проканает. Надо понимать, что каждый модуль в сущности засорял систему, да и отследить флоу всей параши, которая по событиям (хукам) таким образом дергается - хуета хует. Ну и вполне реальный кейз того, что модуль может при установке сделать - насрать своими файлами вне своей директории хотя бы. там это в порядке вещей. Да и в целом чуть ли не каждый модуль это php + js + css + html в одном файле через это с глобальным стейтом и ну его нахер, таких слов нет, чтобы это описать. Проще просто удалять один за другим и смотреть че отваливается. Осталось терпимое количество модулей. Каждый из них надо было так же обновить и убедиться, что эта сука будет работать. И вот тут - фиаско. Обновить большую их часть до актуальной версии престы попросту невозможно. Часть из них подверглась таким же правкам сеоблядей, как и ядро, при этом часть платных модулей (а то и бесплатных) в изначальном виде уже вообще не достать, чтобы понять где тут в куче говна свинье еще и наблевали. Через код намертво стал заколачивать обновления модулей. Полностью запретил их установку так же через код, сказал ставить через меня (а хуле, они ведь каждый день по несколько штук ставят, похую им, что это прод). Захардкодил блеклист (вернее вайтлист) модулей, даже оповещать об этом заказчиков не стал, пусть просто думают что нет модулей.
Остроты добавляли страницы. Это такие куски говна в каждой, наверно, цмске, которые редактируются из админки и кладутся прямо в базу, потом дергаятся, эвалятся и че там они еще делают, хуй знает. Суть в том, что там работала вся та же ссанина, что и просто из кода. Хочешь - дергай глобал стейт, хочешь - модули, хочешь - дергай хуки, хочешь жс с запросами. Да все что хочешь вообще. Надо ли говорить, что с этим уже никакая иде не помогает, а при этом срут туда регулярно и очень объемно. И вот все перечисленное там было. Накрячил систему, при которой они срались в файлы, вместо базы, а в бд только путь. Но на нее так при мне полностью и не перешли.
Таким образом каким-то хуем нарисовалась более-менее чистая сборка престы, но без ебли в гланды обновить все равно нельзя. Обновлять стал вручную аккуратно пофайлово нахуй. Процесс долгий, но реально. Сам установщик престы применять - эт опиздец. Шанс что он просто похерит половину нужного. Гонял на стейдже, перетер нахер все и скораптил базу в хуй, при этом отвалившись с какой-то ошибкой. На все действо, конечно же, часа 4 ушло, эта хуйня не быстрая.
Так и не обновил до конца, вот такой вот я лошок, отдал следующему недачнику, а подсказывать че оно как отказался, пусть страдает, заслужил за то, что взялся за эту хуйню.
Работать стало канеш быстрее, новый функционал писать стало почти приемлимо, старый править - зависит только от модуля, где правки нужно вносить.
Нахер эти цмс, просто нахер. Судя по статье битрикс примерно такой же мусор и ковыряют его часто люди уровня "наш программист в сео-конторе", а значит еще хуже становится.
Единстыенный плюс - после этого неявно обфусцированного кода с чем угодно можно разобраться, но скилл так себе, потому что разбираться с чем угодно - это участь галерного раба.
Ответы: >>1735587 >>1735594
Аноним 2020/06/27 21:21:45  №1735586 200
Посоветуйте дешевый виртуальный сервер. Самый дешевый шаред хостинг у reg.ru 260 рублей, а у hostinger.ru вообще 450. Совсем йобнулись.
Ответы: >>1735590
Аноним 2020/06/27 21:22:24  №1735587 201
>>1735576
>ща простыня будет, которую никто не прочитает
Конечно не прочитает, потому что надо делить текст на небольшие абзацы с отступами.
Аноним 2020/06/27 21:31:46  №1735590 202
Ответы: >>1735596
Аноним 2020/06/27 21:34:46  №1735594 203
>>1735576
Можно было за то же время переписать на лару
Аноним 2020/06/27 21:38:58  №1735596 204
>>1735590
>scaleway
Мне нахой не надо клауд-хуяуд. Просто виртуальный сервер (vps/vds), и чтобы была фикс оплата, чтоб при превышении чего то мне потом счет не пришел на штуку баксов.
Ответы: >>1735629
Аноним 2020/06/27 21:50:15  №1735600 205
Есть разница на каком гипервизоре сервер? Варианты: XEN, KVM, OpenVZ.
Ответы: >>1735625 >>1735628 >>1735630
Аноним 2020/06/27 22:55:45  №1735625 206
>>1735600

OpenVZ считает потребление памяти так, что оно становится раза в 2 выше, чем на Xen или реальной машине.
Ответы: >>1735709
Аноним 2020/06/27 23:04:41  №1735628 207
>>1735600
oVirt или proxmox ve шо то, шо это квм. Квм стильно, модно, молодёжно. Хен не нужен опенвз аналогично.
Ответы: >>1735709
Аноним 2020/06/27 23:05:24  №1735629 208
>>1735596
Ты видимо не очень умный. У них среди прочих услуг есть впс за 3 евро
Ответы: >>1735709
Аноним 2020/06/27 23:06:18  №1735630 209
>>1735600
С openvz забудь о докере и возможно даже о свопе, запустишь composer install придет злой OОM Killer и убьет его
Ответы: >>1735709
Аноним 2020/06/28 05:38:55  №1735702 210
Сделал testhub на ларе. Теперь не могу решиться что делать дальше, пилить на ларе(по докам ещё не все усвоил) или пробовать симфони. Как бы вы поступили ?)
Аноним 2020/06/28 06:26:25  №1735709 211
Аноним 2020/06/28 08:54:47  №1735763 212
>>1735560
>Как если только 4 fastcgi процесса?
обычные сайты на Wordpress все обычно работают в режиме mod_php, а не fastcgi.
Ответы: >>1735849
Аноним 2020/06/28 09:07:56  №1735767 213
>>1733193
Я вот только одного понять не могу. Нахуя, вы, блядь, дебилы сука ебаные - пишете в фориче вместо $value/$elem - какую-то хуйню? Зачем блять всё усложнять и писать на месте элементов какую-то хуйню, если всем и так понятно, что это элементы массива?

Ебучие олухи, горит с этой хуйни.

В фориче ключи прописываются или $key, или $index. Значения: $value/$elem. ВСЁ!

Макаки - такие макаки. Надеюсь, ты возьмёшь это себе на заметку.
Аноним 2020/06/28 09:35:48  №1735789 214
>>1735410
Бля, ну не тупи. И не слушай местных ебанатов, тут половина вкатывальщики сразу в калифорнийский стартап, а вторая половина лабу 1 осиливает. Кого ты нахуй слушаешь? Тут почти нет никого к чьему мнению можно прислушаться. Тебе 20 лет всего, это хуйня. Первая работа это не только стек маня технологий, это опыт от общение с коллегами, руковдством, опыт о том как ведется даже этот мелкий бизнес. Карьера и вообще выбор жизненного пути не строится блядь выбором языка - это просто детская максималисткая чушь.
Ничто тебе не мешает работая с 1с надрочить лару, например. И когда ты придешь в другую контору и скажешь я вот только освоил лару - но до этого год работал в бизнесе на 1с - то ты явно будешь в позици более выигрышной, чем джун, который нихуя нигде не работал, и со своей тудухой на ларе приперся.
Так что мой совет - работай спокойно, смотри как делается это бизнес, и паралельно изучай большой фреймворк.
Замыкаться на 1с тупо, но обрати внимание, даже тут в треде люди даже на пхп не замыкаются, кто то на питооне, кто то на ноде, кто то на реакте пилит чето.
Ответы: >>1735904
Аноним 2020/06/28 10:41:51  №1735849 215
>>1735763
>обычные сайты на Wordpress все обычно работают в режиме mod_php, а не fastcgi.
Пусть так, но там не больше 18 любых процессов.
Ответы: >>1735927
Аноним 2020/06/28 11:26:04  №1735899 216
>>1735767
Про семантику ты не слышал видимо.
Аноним 2020/06/28 11:30:52  №1735904 217
>>1735789
>тут половина вкатывальщики сразу в калифорнийский стартап
Чини детектор
>Тебе 20 лет всего, это хуйня
Это не повод гробить их в цмс могиле
>Карьера и вообще выбор жизненного пути не строится блядь выбором языка - это просто детская максималисткая чушь
Подумаешь, проебешь года 3-4 на битрикс, можно же потом переучиться. А хули тут так сложно эти ваше фреймворки? Какой DI? В смысле каждый класс в отдельном файле? Какой psr? Не, ну нахуй, буду дальше сидеть на битриксе. Он уже знаком, платят стабильно 30 тысяч.
>Ничто тебе не мешает работая с 1с надрочить лару
Кроме отсутствия времени и сил, а так же высыхания мозгов от ебли с битриксом и хуевого комьюнити.
Аноним 2020/06/28 11:44:52  №1735927 218
>>1735849
это никак не мешает. Процесс apache там создаётся при загрузке страницы сайта и сразу по окончании завершается.
Аноним 2020/06/28 14:17:46  №1736027 219
>>1735767
Прям представляю $value->getTitle()
Аноним 2020/06/28 14:38:39  №1736046 220
>>1735767
foreach($persons as $person) {$person->getName()}, или все-таки лучше $value/$elem?
Аноним 2020/06/28 14:40:09  №1736052 221
Ответы: >>1736069
Аноним 2020/06/28 14:59:28  №1736069 222
>>1736052
А открыть доку к апи телеграма не судьба?
Ответы: >>1736289
Аноним 2020/06/28 18:33:31  №1736289 223
Аноним 2020/06/29 07:16:08  №1736634 224
>>1735410
Это хуже, чем не знаю что. Наверное даже Wordpress лучше. Я знаю истории людей, которые начинали работать с битрикса, а потом через 2 года завязывали с программированием насовсем и уходили в другие профессии.
Не слушай тех, кто говорит, что ничто тебе не будет мешать параллельно учить другой фреймворк. Этому будет мешать твоя работа - 8-10 часов в день ты будешь тратить на ковыряние в битриксо-навозе вместо приобретения реально нужных скиллов. Если хочешь двигаться в рамках PHP-экосистемы, то разбираться надо с Laravel (50-70% рынка) или Symfony (20-30%). Про Yii2 забудь, это мертвый фреймворк, на нем все еще много проектов, но это легаси и в основном только СНГ/Китай.
Ответы: >>1770932
Аноним 2020/06/29 07:18:11  №1736636 225
>>1735380
+1

Приведение к типу Mother тут костыль, чтобы вписаться в тип object. Так как в пыхе переменная может принимать любой тип, то это все не нужно. Если же нужно проверить, что объект имеет определенный тип или подтип, то используешь стандартный instanceof.
Ответы: >>1736696
Аноним 2020/06/29 09:23:44  №1736696 226
>>1736636
>Если же нужно проверить, что объект имеет определенный тип или подтип, то используешь стандартный instanceof
И это программисты? Говно какое-то, пидоры, блядь. Дали им ковариантность - типизируй! Типизируй методы, блядь! Не хотят, хотят жрать говно. Что такое? Это ООП?! Это SOLID?! Суки… Мудачьё — говнокодеры. Лычки нацепили, говно жрут.
Ответы: >>1736997
Аноним 2020/06/29 12:58:03  №1736930 227
images.jpg (3, 242x209)
209x242
ууцуц.png (6, 1257x210)
210x1257
Как надо по-хорошему сделать вот эту ебалу с циклами? А то совсем срань же, да? Там так-то беда в архитектуре, но мне только вилку дали.
Ответы: >>1736971 >>1737590
Аноним 2020/06/29 13:33:00  №1736971 228
>>1736930
Код отформатируй для начала. От этого пиздеца глаза вытекают
Аноним 2020/06/29 13:33:38  №1736972 229
>>1735562
Блять, я на обе их вакансии пиздец как подхожу и мешок вордпрессов есть, и в Нидерланды хочу. Но я только на ашотов работал, сыкотно что-то писать, они скажут, давайте по скайпу-хуяйпу, а у меня и микрофона нет.
Ответы: >>1737008 >>1737095
Аноним 2020/06/29 14:13:33  №1736997 230
>>1736696
>макак узнал новые баззворды и всем ими тычит
Аноним 2020/06/29 14:26:01  №1737008 231
15844642001840.png (340, 680x680)
680x680
Аноним 2020/06/29 15:50:05  №1737095 232
>>1736972
Волков бояться — в лес не ходить.
Аноним 2020/06/29 16:09:39  №1737118 233
Помогите плиз с docrine, в проекте версия 2.4 и dql функция DATE_SUB не понимает юниты SECOND или MINUTE, а мне нужно выбрать события из базы по времени с точностью до минуты. MYSQL запрос: "where TIMESTAMPDIFF(second, now(), e.start) < n.time_before_event".
Как можно это сделать, не обновляя doctrine в проекте?
Ответы: >>1738141 >>1738262
Аноним 2020/06/29 18:02:55  №1737218 234
Аноны, такой вопрос - когда на ноде делаю сервис на ларавел - этот сервис правильно разместить в отдельной папке в каталоге проекта ларавел?
Ответы: >>1737268
Аноним 2020/06/29 18:09:47  №1737226 235
Анчоусы, чем у Вас заполнен гит? Достаточно ли задач из шапки?
Ответы: >>1737269
Аноним 2020/06/29 18:42:51  №1737268 236
>>1737218
Сам-то как думаешь?
Ответы: >>1737326
Аноним 2020/06/29 18:44:00  №1737269 237
>>1737226
Пара тестовых крудов django, yii2, laravel, апишка на симфе+докер+тесты+свагер
Аноним 2020/06/29 19:42:55  №1737326 238
>>1737268
А хз. По идее все должно быть в рамках каталога одного проекта.
Но там как то нужно будет с маршрутизацией нгникса зарешать.
Хотя в рамках моей задачи http запросы будут падать на ларавел, а на ноду уже по api передаваться.
Но как это делается правильно в рамках одного сервера? Или таки нет "рамок одного сервера".
Ответы: >>1737353
Аноним 2020/06/29 20:12:22  №1737353 239
>>1737326
У тебя два обособленных приложения. Зачем их кидать в одну папку? Пили в разных репозиториях как микросервисы
Ответы: >>1737369
Аноним 2020/06/29 20:38:03  №1737369 240
>>1737353
Так, стопе. У яндекса и гугла монорепозитории. Если делаешь микросервисы, то обязательно нужно монорепу.
Ответы: >>1737443
https://github.com/kydva/HotelOOP Аноним 2020/06/29 22:47:39  №1737441 241
>>1722087 →

> Это ведь так должна выглядеть композиция
По идее, да.

У тебя неудачно сделано то, что информация о бронях хранится в 3 копиях. Это сильно усложняет работу с кодом, так как любое изменение надо делать 3 раза, очень легко где-то ошибиться, и в итоге получить расхождение в данных. Данные о бронях стоит хранить в одном месте, это может быть, например Hotel или BookingService. При этом при желании можно прокидывать ссылку на них в Room, чтобы он мог знать о том, когда он забронирован, хотя по моему, проще без этого. Дублирование данных надо избегать.

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

> пишем пользовательскую функцию сравнения по уникальному номеру для array_udiff

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

> return ($freeRooms[0]->getCapacity() >= count($guests))

Здесь будет ошибка, если массив $freeRooms пуст.

> //Если в этот раз не вышло разместить никого, пытаемся сначала разместить на одного гостя меньше

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

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

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

- урок про то, что такое и как писать автотесты: https://gist.github.com/codedokode/a455bde7d0748c0a351a

Если хочется посмотреть на реальные автотесты, то могу посоветовать компонент Symfony HttpFoundation: https://github.com/symfony/http-foundation . Он содержит классы, соответствующие HTTP-запросам и ответам (протокол HTTP используется в работе сайтов: браузер при открытии страницы посылает на сервер запрос, и получает ответ. Данная библиотека ничего никуда не отправляет, но сождержит классы, хранящие информацию о запросах и ответах). И там же в папочке Tests есть тесты для этих классов.

Если хочется разобраться в ООП поглубже, то могу предложить сделать классы для представления математических выражений вроде 2x + 3y + 7 (там получится дерево из объектов Сумма, Произведение, Переменная, Константа), а затем реализовать упрощение выражений, например 2x + y + 3x -> 5x + y. Задача выглядит простой по описанию, но позволит изучить деревья, AST, паттерн Visitor, трансформацию деревьев выражений.

Если ни тесты, ни выражения делать не хочется, можно браться за задачу про список студентов.
Ответы: >>1738567 >>1743018
Аноним 2020/06/29 22:49:41  №1737443 242
>>1737369
В чем преимущества монореп?
Ответы: >>1737468
Аноним 2020/06/29 23:47:56  №1737468 243
>>1737443
А в чем преимущества микросервисов?
Ответы: >>1738298
Аноним 2020/06/30 05:11:44  №1737536 244
>>1734220
Нифига не в сасываю. А что я должен записать в переменную, чтобы вывести в эхо? Не могу же я в эхо вывести count. Он просто возьмет значение из ближайшей строки. Вывожу естессна циклом while
Ответы: >>1737543
Аноним 2020/06/30 05:43:42  №1737543 245
Ответы: >>1737626
Аноним 2020/06/30 06:25:54  №1737562 246
Аноним 2020/06/30 07:08:27  №1737590 247
>>1736930
отфарматируй код скинул бы как белый человек не скриншотом - сделал бы за тебя
и юзай просто $data_trouble[] . он тебе сам должен в массив добавить под нужным ключем, без счетчиков всяких
Ответы: >>1738077
Аноним 2020/06/30 07:48:57  №1737626 248
>>1737543
Начни с самого начала https://phpdelusions.net/pdo , тут можешь прочитать зачем https://phpdelusions.net/pdo/mysqli_comparison.

Второе прочитай хотя бы самый минимальный гайд по SQL https://proglib.io/p/sql-for-20-minutes .

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

Теперь по твоей таблице и запросам. Ты умудрился настолько всрато все описать, что никто в треде нихуя не понял что ты хочешь сделать. Почитай что такое реляционная база и нормальная форма.
Я разбил твои данные на несколько таблиц с понятными названиями и прокомментировал происходящее https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ab4186232023ed8447004ad5d5c1d0b6
Ответы: >>1737632
Аноним 2020/06/30 07:58:31  №1737632 249
>>1737626
Спасибо мил человек, тонны нефти тебе..
Аноним 2020/06/30 09:51:16  №1737749 250
Сап, двуч, поясните как в php работают структуры данных? Вот например если я захочу создать константный массив чаров в C++, я знаю что он займет 128 ячеек в памяти. Если я создам динамический, он будет реалочиться. Если мапу, то там будет хэш таблица.

А как в пхп эта хуйня работает? Там шо массив, шо хэш мапа. Как это в памяти хранится? Или когда как массив, когда как мапа, как повезет?
Ответы: >>1737778 >>1740404
Аноним 2020/06/30 10:25:20  №1737778 251
>>1737749
В пхп все хэш мапа. Даже все что в SPL идет как структуры данных внутри все равно работает как стандартный массив (хэш мапа). Есть вроде какие-то либы для самого пхп, но на них всем похуй.
Тут все думают не как деревья обходить, а как бы запросы в базу в цикле не нахуярить.
Ответы: >>1737815
Аноним 2020/06/30 11:07:19  №1737815 252
>>1737778

Ну то есть похапэ не позволяет работать с типами данных напрямую, и за этим надо в пуйтун?
Ответы: >>1737822
Аноним 2020/06/30 11:17:53  №1737822 253
>>1737815
Так с какими типами данных напрямую? С пхпшным array - позволяет, делай что хочешь. Ну разделения на dictionary/list и прочее нет, конечно. Надо свое - пиши свое, есть еще всякие интерфейсы типа ArrayAccess, Traversable и т.д.
Ответы: >>1738614
Аноним 2020/06/30 12:53:16  №1737932 254
знаю что в конторе есть таски на нормальных фреймворках. намекнул и сказал очень жирно тим лиду что буду изучать щас ларку как проклятый чтобы мне давали нормальные таски с проектами
на что мне ответили: Постарайся больше времени обучению битрикса посвятить ларавел пока как побочка
так вот, как скоро стоит валить с этой галеры? после того как напишу своой первый блог на ларке?
Аноним 2020/06/30 13:42:31  №1738011 255
>>1737932

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

Сделал это месяц назад, сижу пержу на ларе
Ответы: >>1738135
Аноним 2020/06/30 14:05:46  №1738077 256
>>1737590
Отформатировать это вот так?

$data_trouble = [];
foreach($dat_nick as $prod) {
foreach($productss as $product) {
if ($product['p_name'] === $prod['name']) {
$data_trouble[] = ['name' => $product['p_name'], 'type' => $prod['type'], 'nick' => $prod['nick'], 'price' => $product['p_old_price']];
}
}
}

Вообще, я не о том же, вся конструкция смотрится уродски как-то, ощущение, что можно как-то сильно лучше написать.
Ответы: >>1738090 >>1738130 >>1738262
Аноним 2020/06/30 14:09:36  №1738090 257
Аноним 2020/06/30 14:28:12  №1738130 258
Аноним 2020/06/30 14:30:30  №1738135 259
>>1738011
Часов 6 это с попыткой применения того что читаешь, или просто читаешь и читаешь?
Ответы: >>1738715 >>1738716
Аноним 2020/06/30 14:33:05  №1738141 260
>>1737118
Добавил свою DQL User Defined Function, которая реализует мускульную TIMESTAMPDIFF
Аноним 2020/06/30 16:23:17  №1738262 261
Аноним 2020/06/30 16:45:19  №1738298 262
Аноним 2020/06/30 16:49:53  №1738300 263
>>1737932
>Постарайся больше времени обучению битрикса посвятить ларавел пока как побочка
Тебя явно хотят держать за дурачка.
Учи лару, забей на битрикс.
Как появится шанс - сваливай на лару в офис/удаленку. Там и ап по зп придет и работа не такая уебищная
Аноним 2020/06/30 16:53:10  №1738304 264
>>1737932
Хватит простого круда (орм, миграции, блейд, валидация, роутинг, события, di поковыряй).
В идеале если ты прочтешь офф доку лары английскую, а не русскую и применишь каждый из пунктов у себя в проекте, сможешь пройти собес на мидловую ваку
Ответы: >>1738508
Аноним 2020/06/30 20:27:47  №1738505 265
анончики, изучаю потихоньку ларку и возникли такие вопросы: для чего нужны фабрика и сидер для модели? объясните как то более менее понятно чтоли
Ответы: >>1738508 >>1738611
Аноним 2020/06/30 20:33:17  №1738508 266
>>1738304
>английскую, а не русскую
только ее и читаю пока. более актуальная
и заранее скажу что это >>1738505 и это >>1737932 - один и тот же кун

Аноним 2020/06/30 20:50:02  №1738514 267
Господа, объясните.
Есть API лара.Учебные цели все крайне примитивно.
ресурс-контроллер и роут в api.php -
Route::apiResource('test-api', 'API\ApiController');

Есть отдельный сервис на ноде.
Из ноды отправляю GET запрос на API лары. JSON лара получает, отправляет обратно ответ успешно.
Трабла в том что это все долго. Секунд 10 запрос-ответ.
Сижу дома, поэтому все барахло на винде.
Но web-роуты на ларе работают быстро.
Куда можно посмотреть?

Ответы: >>1738584
Аноним 2020/06/30 23:05:53  №1738567 268
image.png (28, 418x447)
447x418
>>1737441
Спасибо что ответил. Не хотел второй раз дергать, тем более что последним временем побольше угорел по линуксу, базам данных и html/css/js, почти за пхп забыв. Хотя вчера вот завершил раздупление над материалом из этой https://github.com/codedokode/pasta/blob/master/soft/web-server.md и сопутствующих страниц о http, шаблонизации и прочем, по идее сегодня должен был бы начинать над списком студентов работать, но я все еще играюсь с базами данных на sql-ex.
Рецензию понял- принял. Хотя нет, кое-что таки не понял:
>Это сильно усложняет работу с кодом, так как любое изменение надо делать 3 раза, очень легко где-то ошибиться, и в итоге получить расхождение в данных.
Это всё же само собой проделывается в функции register() класса Hotel. Хотя это, конечно, не отменяет того, что можно было сделать получше. Алсо, иногда появляется желание инкапсулировать скрыть некоторые методы от всех классов кроме какого-то одного, для использования которым они и созданы. Например, в этом случае совсем нежелательно чтобы функции регистрации гостя или комнаты были доступны отдельно от общей функции регистрации. В векторе вроде тоже были схожие ситуации. Значит ли такое желание то, что я делаю что-то не так? Ведь насколько я понимаю, такой возможности не существует помимо как в наследовании, а значит быть ее и не должно.
>Тут по-моему ошибка: мы удаляем одного гостя из массива и ему ничего не будет предложено.
Значение переменной $notHostedGuests ведь не меняется в этом случае. Функция сначала попытается подобрать комнату для меньшего количества гостей, после чего отнимет из $notHostedGuests это количество при успехе, и уже будет пытаться найти комнату для оставшегося количества гостей посредством вырезания в новый массив количества гостей из $guests, равного $notHostedGuests. По факту функция раз за разом размещает тех самых гостей в другие комнаты, но это значения не имеет, так как в возвращаемом функцией массиве не указано каких конкретно гостей куда поселить, указано лишь количество для комнаты. За то каких гостей куда селить отвечает другая функция - registerInBestRooms и так далее. Так или иначе, это всё равно лишь полурабочий жадный алгоритм.
На счет автотестов - планирую их изучать попозже, это всё же не самая главная вещь, но знаю что необходимая. Начну наверное со студентов, хотя твоя задачка меня заинтересовала, но не совсем понял ее. Насчет упрощения выражений понятно, а что ты имеешь в виду под представлением выражения? Типо на вход какому-то менеджеру через функцию попадает строка вида "2x + 3y + 7", а он раскладывает ее на что-то вроде пикрил? Как должна представляться древовидность? С помощью аггрегации, в свойстве объекта должен быть массив с вложенными в него объектами или как?
Ответы: >>1740405
Аноним 2020/06/30 23:36:16  №1738579 269
Можете посоветовать материалы чтобы решить хоть одну задачу с Оп-поста?
Ответы: >>1738607 >>1740404
Аноним 2020/06/30 23:43:12  №1738584 270
>>1738514
Профилируй, что еще сказать.
В целом странно, почему общение по хттп на локалке занимает 10 секунд. Мб это не проблемы транспорта, а какой-то из сервисов долго отвечает?
Ответы: >>1738653
Аноним 2020/07/01 01:03:41  №1738605 271
>>1732028
Битрикс - насквозь коммерческая цмс и все плюшки там надо покупать. Я бы порекомендовал объяснить своему пм, что разработка модуля с нуля зайсет много времени и принесет мало денег.
В твоем случае кто-то захотел кастомную разработку под кривую и дорогую цмс по цене дошика, а менеджер-дурак согласился.
Аноним 2020/07/01 01:13:21  №1738607 272
>>1738579
В оппосте всё есть - читай внимательней.
Ответы: >>1738916
Аноним 2020/07/01 01:24:33  №1738611 273
>>1738505
Фабрика делает модели. Столько сколько тебе нужно. Обычно их используют для набивания бд рыбой так как пилить приложуху когда видно что выводится гораздо сподручнее, чем представлять себе это.
Сидеры есть сидеры - делают посев данных в бд. Там можно вызывать фабрики. А можно не вызывать и писать руками.
Аноним 2020/07/01 01:44:55  №1738614 274
>>1737822
У пыха есть описания структур, только они в базовую поставку не входят и их надо отдельно выкачивать либой из гитхаба, вроде бы.
Где-то в доках эта инфа есть.
Аноним 2020/07/01 03:15:50  №1738628 275
>>1735767
Самое простое и наиболее полезное действие в проганьи - называть переменные по их содержимому. А не по дефолту, дебил.
Аноним 2020/07/01 05:48:34  №1738653 276
>>1738584
Даже не 10 а все 30. Это что то где то виснет
Ответы: >>1738766
Аноним 2020/07/01 08:04:53  №1738715 277
>>1738135

Ну я таким образом фреймворки/языки по доке учу:

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

2. Пишу todo list, поглядывая в доку.
Ответы: >>1738716
Аноним 2020/07/01 08:05:55  №1738716 278
>>1738715
>>1738135

6 часов прочитать всё и попробовать покомпилить, поэксперементить в test прожехте.
Аноним 2020/07/01 08:59:08  №1738766 279
>>1738653
Лол, разобрался. Я какую то хуиту написал в заголовке 'Content-Length' , и браузер тупо ждал данных нужной длины. Курьез однако.
Ответы: >>1738866
Аноним 2020/07/01 09:31:19  №1738798 280
Имеет ли сейчас смысл юзать hhvm или kphp, или новый php по скорости уделывает эти поделия?
Ответы: >>1738805
Аноним 2020/07/01 09:33:44  №1738805 281
>>1738798

kphp муторный, но хороший. hhvm - тупое говно тупого говна.
Аноним 2020/07/01 10:20:46  №1738866 282
>>1738766
Зачем ты вообще контент ленгт трогал? Он же автоматом проставляется
Ответы: >>1738880
Аноним 2020/07/01 10:40:45  №1738880 283
>>1738866
В голой ноде без фреймворков вообще нихуя не проставляется. Запросы на лару я с ноды отправляю.
Ответы: >>1739289
Аноним 2020/07/01 11:23:46  №1738916 284
>>1738607
Ничего там толком нет, только основы
Ответы: >>1739290
Аноним 2020/07/01 12:26:59  №1738983 285
Поясните, как в ларке сделать paginate уже после where. Например

if($huina) {
$user = User::where();
} else {
$user = User::where();
}
$user = User::orderBy('id', 'desc')->paginate(10);


Чтобы не писать это в if else
Ответы: >>1739152
Аноним 2020/07/01 14:27:58  №1739152 286
>>1738983

$user = User::where(function($query) use($huinia) {
if($huinia)
$query->where();
else
$query->where();

})->orderBy('id', 'desc')->paginate(10);

Проще всего так
Аноним 2020/07/01 16:05:52  №1739289 287
>>1738880
Т.е. не судьба взять http клиент? Надо самому велосипедить?
Ответы: >>1739651
Аноним 2020/07/01 16:06:17  №1739290 288
>>1738916
Тебе нужно мастер класс от Васяна как делать круд?
Ответы: >>1739368 >>1739607
Аноним 2020/07/01 17:26:12  №1739368 289
>>1739290
Ему нужно выкатиться из треда и пойти на завод. Персонаж ни вопрос нормально задать не способен, ни внимательно оппост прочитать, а ждет, что ему тут сопли вытирать начнут.
Как он работать то будет? Ни документацию прочитать внимательно не сможет, ни ошибку в коде найти, ни коллеге вопрос внятно задать.

На завод.
Ответы: >>1739375
Аноним 2020/07/01 17:35:14  №1739375 290
>>1739368
Пойдет на курсы по битриксу и станет сертифицированным специалистом по нажиманию кнопку Установить
Ответы: >>1739385
Аноним 2020/07/01 17:46:35  №1739385 291
>>1739375
Там ебли тож порядочно бывает говорят.
Аноним 2020/07/01 23:38:28  №1739607 292
>>1739290
Мне нужна волшебная книжка чтобы я её прочитал и повысил свой скилл до уровня решить задачу с банкоматом
Ответы: >>1739673
Аноним 2020/07/02 00:39:15  №1739613 293
Скрипт работает очень долго, выдает ошибку, чтоб пофиксить это, разделяю код на этапы:
Вызываю script.php аяксом, в конце скрипта пишу:
header('Location: http://site/script.php?id='.$id);
чтоб он сам себя вызвал с новым параметром get.

Для сервера это новый процесс? Нормальное вообще решение?

Пока не могу проверить на реальных данных, чтоб ошибку вызвать, поэтому решил спросить.
Ответы: >>1740404
Аноним 2020/07/02 05:47:41  №1739651 294
>>1739289
Ну я же в учебных целях делаю. Велосипедю как могу.
Аноним 2020/07/02 06:50:10  №1739673 295
>>1739607
Школьный учебник математики.
Ну и php.net чтобы оформить это в php код
Аноним 2020/07/02 09:29:21  №1739772 296
Пыха всё такое же говно, но Наск выглядит интересно
Кто-нибудь пробовал?
Ответы: >>1740012
Аноним 2020/07/02 14:13:55  №1740012 297
Аноним 2020/07/02 15:38:48  №1740086 298
А мне кажется удобным использовать в названиях аттрибутов нижние подчеркивания. Становится ясно, что это аттрибут, а не вызов функции геттера.

$class->attribute_name
$class->attributeName
Ответы: >>1740160
Аноним 2020/07/02 16:33:38  №1740090 299
>>1731888 (OP)
>>1731888 (OP)
Здравствуй ОП , можешь пожалуйста глянуть задачку про алфавит по кругу https://ideone.com/hP3vI5 . В моей получившейся окружности , только первая строчка выглядит непропорциональной , но вроде я все сделал правильно
Ответы: >>1740402
Аноним 2020/07/02 17:50:47  №1740139 300
>>1731888 (OP)
Ребят, такой вопрос, почему многие PHP разрабы используют array() вместо []? Я вообще не могу понять...
Ответы: >>1740143 >>1740299
Аноним 2020/07/02 17:56:48  №1740143 301
>>1740139
Потому что у этого треда шапка протухла лет на пять. Уже восьмая версия на носу, а долбоебы до сих пор типы в функциях не пишут.
Ответы: >>1740147
Аноним 2020/07/02 18:05:07  №1740147 302
>>1740143
То есть это тупо запах старых версий, не более?
Ответы: >>1740158
Аноним 2020/07/02 18:18:17  №1740158 303
>>1740147
Короткий синтакс массивов появился в php 5.4.0, дата релиза 1 марта 2012 года.

Запашок, ебать.
Ответы: >>1740164
Аноним 2020/07/02 18:19:18  №1740160 304
>>1740086
Вызов метода всегда на () заканчивается. Это и без подчеркиваний видно. А вот придерживаться стоит общего ПСР, какой бы он не был. Со временем глаз привыкает к нему и легко читается. Собсно, для того и придумали.
Ответы: >>1744665
Аноним 2020/07/02 18:23:35  №1740164 305
>>1740158
Кому-то через array() просто лучше видно, чем через две закорючки. Люди разные.
Ответы: >>1740173 >>1740182 >>1740303
Аноним 2020/07/02 18:29:41  №1740173 306
Аноним 2020/07/02 18:35:10  №1740182 307
>>1740164
Кому? Это просто пиздежь. Нет в природе проекта написанного на пхп 7+, где используется устаревший синтаксис.

Давай ссылку на гитхаб, любая либа, любой фреймвок. Найди проект 2015+ года на пхп 7+ версии, который в основе использует array().
Ответы: >>1740357
Аноним 2020/07/02 18:37:30  №1740187 308
когда запилять нормальную документацию и сайт?
а то несет 00ми годами
Ответы: >>1740402
Аноним 2020/07/02 18:40:57  №1740195 309
>>1737932 - кун снова на связи
анонсы вот делаю блог. и через ресурс контроллер работаю со статьями. делал все сразу на индекс странице, если что
и вот пока что такие роутинге как на пике. пытаюсь сейчас сделать удаление. делаю по быстрому старту от оф доки ларки.
во вьюхе вот такая хуйня юзается https://ideone.com/zau9RB
в самом контроллере вот это https://ideone.com/Uq9T1R
но проблема в том что при клике на кнопку он меня редиректит на blog.local/228 например и выдает 404. че за хуйня и как это фиксить то?
пока что осилил только создание новой статьи в блоге, все норм вышло, теперь вот пробую удалить
Ответы: >>1741335
Аноним 2020/07/02 20:50:33  №1740299 310
>>1740139
Потому что учатся по устаревшим лет на 10 русским гайдам.
не могут осилить phptherightway
Аноним 2020/07/02 20:52:07  №1740303 311
Аноним 2020/07/02 20:55:19  №1740308 312
>>1731888 (OP)
>>1733218 →
Спасибо за проверку задачи про сдачу и банкомат. Я учёл ошибки, которые были сказаны, и сделал уже оптимизацию. Вот мой конечный вариант, посмотри пожалуйста https://ideone.com/eZJpDe .
Ответы: >>1740402
Аноним 2020/07/02 21:50:47  №1740357 313
>>1740182
Очередной борщехлеб с манямиром, в котором всё, что не по фреймворкам, то неправильно.
Щас, блядь, побежал тебе гитхаб шерстить чтобы доказать очередному крокодилу какую-то тупую хуйню на которую он агрится в силу непрошедшего подросткового максимализма.

Это просто алиас и всё.
Ответы: >>1740428 >>1740542
268-313 Аноним 2020/07/02 22:58:27  №1740402 314
>>1740308

Тут можно попробовать сделать еще оптимизации и отказаться от массива в $numberOfBills[$N]. Ты туда записываешь массив range($nextMaxLimit, 0), а можно было бы записывать сразу $nextMaxLimit, и цикл foreach заменить на for от этого значения до нуля. Это должно чуть ускорить программу, так как мы не тратим время на создание массива, поиск в нем макс. значения итд.

Так, в общем, решение верное.

>>1740187

У PHP вообще-то хорошая и подробная документация в сравнении с другими языками.

>>1740090

Плохо, что коэффициент 2.7 повторяется дважды. Надо было сделать константу: const X_SCALE = 2.7; и использовать её. Координаты стоит округлять.

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

Аноним 2020/07/02 22:59:21  №1740404 315
>>1739613

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

>>1738579

Да, учебник не полный, и в нем что-то отсутствует. Чтобы сделать задачу про студентов, надо самому изучить основы SQL (запросы CREATE TABLE, SELECT и INSERT) и HTML (желательно с bootstrap), и прочитать урок про запуск веб-сервера на PHP: https://github.com/codedokode/pasta/blob/master/soft/web-server.md

>>1737749

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

В новом PHP с помощью FFI можно будет создавать сишные структуры и массивы.
Аноним 2020/07/02 23:00:26  №1740405 316
>>1738567

>>Это сильно усложняет работу с кодом, так как любое изменение надо делать 3 раза,

> Это всё же само собой проделывается в функции register() класса Hotel

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

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

В PHP для этого ничего нет, в Си++ есть такое понятие, как "классы-друзья", которые могут лезть в защищенные поля друг друга. Но в общем в ООП такой подход не распространен. Возможно, стоит менять что-то в архитектуре. Вот, например, если не хранить в Госте список броней, то и метод register() в нем будет не нужен.

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

Да, верно.

> а что ты имеешь в виду под представлением выражения? Типо на вход какому-то менеджеру через функцию попадает строка вида "2x + 3y + 7", а он раскладывает ее на что-то вроде пикрил? К

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

$expr = new Sum(new Constant(10), new Variable('x')); // 10 + x

А потом, если будет желание, прикрутить парсер.

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

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

> Как должна представляться древовидность?

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

> С помощью аггрегации, в свойстве объекта должен быть массив с вложенными в него объектами или как?

Да, можно так.
Аноним 2020/07/03 03:42:18  №1740428 317
>>1740357
Беспруфное кукареканье.
Аноним 2020/07/03 05:46:10  №1740448 318
поставил xampp а запуск скриптов через консоль не работает,команды php нет
Ответы: >>1740810 >>1740900 >>1742575
Аноним 2020/07/03 08:23:15  №1740496 319
>У PHP вообще-то хорошая и подробная документация в сравнении с другими языками.
у питона доки оформлены лучше
Ответы: >>1740810
Аноним 2020/07/03 09:58:41  №1740542 320
>>1740357
Не просто алиас, а алиас позволяющий писать гораздо более читаемый код.
Аноним 2020/07/03 13:32:53  №1740810 321
>>1740496
удваиваю. особенно дока по джанге дает смачно на клык доке по ларке
>>1740448
ну ты бы хоть скинул что выдает то консоль а зачем вообще тебе запускать какие то скрипты через консоль?
Ответы: >>1740925
Аноним 2020/07/03 14:25:38  №1740900 322
>>1740448

Пишут, что в xampp есть кнопочка для открытия консоли, в которой правильно прописан PATH и команда php выполняется: https://stackoverflow.com/a/62500117
Аноним 2020/07/03 14:40:08  №1740925 323
>>1740810
>а зачем вообще тебе запускать какие то скрипты через консоль
ну написал рогу,запустил-получил результат.
я у кого то видел в треде,как он через консоль все делал
Ответы: >>1741336
Аноним 2020/07/03 22:25:20  №1741270 324
Шо я делаю не так? Предполагается взять текущую дату и время, затем создать файл с таким именем и содержимым "Hi"?

Вроде работает, но предупреждения-то почему выдаёт?

PHP Version => 7.3.11-0ubuntu0.19.10.6

Ответы: >>1741271
Аноним 2020/07/03 22:39:45  №1741271 325
>>1741270
Код-то покажи, ёпта.
Ответы: >>1741285
Аноним 2020/07/03 23:59:59  №1741285 326
Ответы: >>1741290
Аноним 2020/07/04 00:30:33  №1741290 327
>>1741285
И что это за хуйня? Лепишь голые буквы к точкам.
Ответы: >>1741291
Аноним 2020/07/04 01:00:46  №1741291 328
>>1741290
Бля, пасиб. Не включил с самого начала error_reporting и мне не ткнули когда впервые делал. Всё поправил, теперь работает отлично, благодарю!
Аноним 2020/07/04 02:19:52  №1741296 329
https://ideone.com/CiO62O

Так, у меня мозг сломался.

При первой прогонке первый for сработает, а второй нет ,ибо там условие, что j должна быть меньше i, флаг не объявлен и 2 выводится, тут вопросов нет.

Вопрос уже к тройке и остальным. Во время второго пробега второй цикл срабатывает, ибо теперь i = 3, а j всё ещё 2. Итак. проверяется наличие остатка от деления i на j, вв случае если он не равен нулю, то нихуя не происходит, флаг так и остаётся false... Ну или необъявленным, тут не важно. В результате чего 3 так же будет выведено.

А вот теперь интересна, так как теперь i = 4, а j = 3, то срабатывают оба цикла. Однако, 4 делится на 3 с остатком и опять не должно произойти ничего и четвёрка должна вывестись, но она не выводится. Значит j всё ещё равна 2. Типа, это особенность работы встроенного цикла и $j++? Сначала возвращает всё ту же двойку, а потом уже увеличивает? Я не понимаю.
Ответы: >>1741328
Аноним 2020/07/04 06:21:12  №1741328 330
>>1741296
При каждом проходе цикла всё его тело будет исполняться заного каждый раз вместе с объявлением внутреннего цикла и j = 2 присваиванием, из за этого у тебя и не выводится четвёрка.
Ответы: >>1741462
Аноним 2020/07/04 06:32:25  №1741335 331
пишет снова >>1740195 - кун
аноны, пытаюсь прикрутить валидацию вот таким способом https://ideone.com/elqRlY
и все вроде бы ок, если она не проходит то просто редиректит заново на форму создания статьи, но суть в том что без сообщений каких то. в старой доке была вещь что можно было поставить if ($validator->errors()) return with errors
а в новой такого чет не нашел да и гугл не дал ответов. как решать то такое?
Ответы: >>1741815
Аноним 2020/07/04 06:35:03  №1741336 332
>>1740925
так есть же онлайн интепритаторы. да, ббольшую прогу в них не напишешь, но тебе же ведь они и не нужны
Аноним 2020/07/04 09:48:33  №1741462 333
>>1741328
То есть всегда будет так, что i на единицу больше j? Тогда, каким образом хотя бы одно число не выводится?
Ответы: >>1741494
Аноним 2020/07/04 10:25:02  №1741494 334
>>1741462
Нет, при третьем запуске внешнего цикла когда i будет равен 4, запустится внутренний цикл где выполнится выражение i = 2, и из-за того что 4 % 2 == 0 у тебя по условию флагу присвоится true и внутренний цикл завершится из-за break на 9 строке.
Попробуй просто повыводить значения i и j в разных местах внутри циклов для понимания как они работают без условий если всё ещё не очень понятно, ну и не забывай обращаться к теории.
Ответы: >>1741497
Аноним 2020/07/04 10:30:28  №1741497 335
>>1741494
Да, в принципе, понял, спасибо. Просто я начинающий и никогда не сталкивался с такими вложенными циклами. Видел разве что вложенные foreach, но там вроде было понятно как всё работает.
Ответы: >>1741505
Аноним 2020/07/04 10:36:58  №1741505 336
>>1741497
ААААААААААА! Падажжи! $j при каждом проходе инициализируется как два? И в итоге пробегается по всякому.
Ответы: >>1741507
Аноним 2020/07/04 10:37:16  №1741507 337
>>1741505
Ну, при каждом новом проходе для $i.
Ответы: >>1741516
Аноним 2020/07/04 10:44:27  №1741516 338
>>1741507
А!!! Сука. Цикл идёт пока $j не нарвётся либо на само число $i, либо на число, на которое $i делится без остатка. В первом случае число признаётся простым, в ином не простым. Я правильно понял?
Ответы: >>1741522
Аноним 2020/07/04 10:47:11  №1741522 339
>>1741516
При этом каждый новый пробег цикла с j начинается с двойки.
Аноним 2020/07/04 10:48:54  №1741528 340
если мне надо сделать в IF множественные проверки на соответствие введеных данных,как это реализовать?
Ответы: >>1741642
Аноним 2020/07/04 11:43:54  №1741642 341
>>1741528
Используй готовый валидатор, можешь сам попробовать написать свой
Ответы: >>1741644
Аноним 2020/07/04 11:45:47  №1741644 342
>>1741642
я думаю там должны быть логические операторы.Верно?
Ответы: >>1741647
Аноним 2020/07/04 11:50:32  №1741647 343
>>1741644
Тебе нужно несколько условий срабатывания тела цикла или шо?


Другой анон
Ответы: >>1741654
Аноним 2020/07/04 11:54:59  №1741654 344
>>1741647
что бы в одном условие было несколько параметров на проверку
типа X<100 X>20 и чтобы было только интежер
Ответы: >>1741672
Аноним 2020/07/04 12:04:50  №1741672 345
>>1741654
https://ideone.com/ExhydZ

Надеюсь, я тебя правильно понял. Но это самая примитивная проверка (и не факт, что качественно сделанная). Можно ещё делать вложенные, дабы был разный результат на выводе в случае несоответствия одного из параметров.
Ответы: >>1741678
Аноним 2020/07/04 12:08:26  №1741678 346
>>1741672
все таки логические операторы...
Ответы: >>1741685 >>1741686
Аноним 2020/07/04 12:11:30  №1741685 347
>>1741678
Можешь делать вложенность.

if ($x > 10) {
if ($x < 100) {
if (is_int($x)) {
Ответы: >>1741688
Аноним 2020/07/04 12:11:48  №1741686 348
>>1741678
https://ideone.com/yw8i2A
Только никогда не нужно использовать конкретно or или and, всегда используй && и ||, в пыхе ебнутый приоритет у операторов
Ответы: >>1741687
Аноним 2020/07/04 12:12:57  №1741687 349
>>1741686
А, они же менее приоритетные, чем =, так шо функции будут работать как говно.
Аноним 2020/07/04 12:12:59  №1741688 350
>>1741685
ну не так локанично
Аноним 2020/07/04 12:18:02  №1741693 351
если в форму забить логин с буквами и цифрами,то пых будет считать его как строку?
Ответы: >>1741696
Аноним 2020/07/04 12:20:03  №1741696 352
>>1741693
В форме кроме строк ничего и не бывает, это тебе не жсон или хмл
Аноним 2020/07/04 12:34:03  №1741713 353
какая разница между при ведением типов и settype?
Ответы: >>1741721
Аноним 2020/07/04 12:43:41  №1741721 354
>>1741713
Погугли в чем разница между ссылкой и значением
Ответы: >>1741724
Аноним 2020/07/04 12:48:33  №1741724 355
>>1741721
>Если вы хотите, чтобы переменная принудительно вычислялась как определенный тип, смотрите раздел приведение типов. Если вы хотите изменить тип переменной, смотрите settype().
те в первом случае это разовая операция без изменения,а вторая насильно меняется и навсегда?
Аноним 2020/07/04 13:42:49  №1741815 356
>>1741335
ну что, никто не знает чтоли?
Ответы: >>1741976
Аноним 2020/07/04 16:04:04  №1741976 357
Ответы: >>1742055
Аноним 2020/07/04 17:52:45  №1742055 358
>>1741976
не совсем, но тоже было полезно. спасибо анон. с той проблемой уже разобрался
щас буду другие решать
Аноним 2020/07/04 19:24:55  №1742101 359
https://ideone.com/E9zYNH

Так, сам не допёр и нашёл в интернете. Функция вывода ряда Фибоначчи до определённого значения. Я сделал, чтобы выводилось только финальное, ибо изначально нужна функция поиска определённого числа. Так вот, это хуйня ебаная дохуя нагружает, то есть на 40-50 уже тяжко, какое-нибудь сотое вряд ли найдёт. Так вот, каким образом можно найти определённое число? У меня возникла идея создать массив и сделать функцию, которая берёт индекс и выдаёт его значение, но чот хуйня какая-то. Находил историю с матрицей, но я для этого туповат.
Ответы: >>1742180
Аноним 2020/07/04 22:27:19  №1742180 360
>>1742101
> хуйня ебаная дохуя нагружает
Это из-за рекурсии. Нужно вычисление фибоначи циклом сделать. Ну ил хвостовую рекурсию (что тоже самое). Или оставить простую рекурсию и как-то добавить мемоизацию. Если тебе нужно проверять является ли число фибоначи числом то там есть тесты которые позволяют не вычислять собственно сам ряд.
Аноним 2020/07/05 08:48:53  №1742354 361
Screenshot1.png (23, 580x465)
465x580
Задача про палиндром из туториала

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

все совсем плохо?

Ответы: >>1742386
Аноним 2020/07/05 09:26:22  №1742386 362
>>1742354
Символ строки souce с индексом index можно получить через $source[index]

Ну и подумай о том, как ты бы вручную проверил строку на палиндромность
Ответы: >>1742392
Аноним 2020/07/05 09:34:53  №1742392 363
Screenshot2.png (1, 273x77)
77x273
Screenshot3.png (0, 74x25)
25x74
>>1742386
>Символ строки souce с индексом index можно получить через $source[index]
Я вывел с помощью этого все символы строки, получился пикрелейтед.
ЧЯДНТ?
Ответы: >>1742436
Аноним 2020/07/05 10:38:28  №1742436 364
>>1742392
Дружище, не переживай, в пхп со строками не всё так гладко

>Символ строки souce с индексом index можно получить через $source[index]

Вот это вот не совсем правда, ты по индексу из строки получаешь не символ, а байт. Если у тебя многобайтовая строка, то ты получишь не букву, а часть буквы. Чтобы получить многобайтовый символ, попробуй mb_substr($string, $i, 1);
Ответы: >>1742449
Аноним 2020/07/05 10:44:28  №1742449 365
>>1742436
Так же предлагаю местным синьорам проверить на палиндром вот такую строку "А роза упала на лапу Азора"
Ответы: >>1742452 >>1742462
Аноним 2020/07/05 10:45:53  №1742452 366
t1.png (1, 222x84)
84x222
>>1742449
сук двач вырезал смайлики по бокам
Аноним 2020/07/05 10:56:28  №1742462 367
Screenshot4.png (2, 355x82)
82x355
Screenshot5.png (0, 170x34)
34x170
Screenshot6.png (2, 355x96)
96x355
Screenshot7.png (0, 165x29)
29x165
>>1742449
Это как раз текст из задачи в туториале, которую я пытаюсь решить.

Вот я вывел все символы через пробел из текста, дальше я как-то должен написать mb_substr чтобы символы пошли с конца и до половины и потом все это сравнивать в цикле. В доках написано что нужно использовать отрицательный параметр, но с -$i не получается.

Чувствую себя дауном, если честно
Ответы: >>1742474
Аноним 2020/07/05 11:15:11  №1742474 368
Ответы: >>1742480
Аноним 2020/07/05 11:18:20  №1742480 369
>>1742474
Если не понял то подумай почему ты последний символ начинаешь с -0 высчитывать а не с -1
Ответы: >>1742491
Аноним 2020/07/05 11:26:48  №1742487 370
все таки нагуглил,как запускать скрипты на винде
Аноним 2020/07/05 11:31:29  №1742491 371
Screenshot9.png (0, 160x34)
34x160
Screenshot10.png (13, 389x403)
403x389
>>1742480
То есть последний символ при использовании mb_substr отсчитывается с -1, но тогда отсчет от начала руинится потому что он начинается с нуля, что тогда делать? Или я опять не вдупляю?
Ответы: >>1742493 >>1742510
Аноним 2020/07/05 11:32:12  №1742493 372
пук.jpg (43, 1080x531)
531x1080
>>1742491
Ну и хочу добавить, что с циклами у меня не очень...
Аноним 2020/07/05 11:52:14  №1742510 373
fsm.jpg (20, 360x360)
360x360
Ответы: >>1742519
Аноним 2020/07/05 12:02:40  №1742519 374
Screenshot11.png (3, 385x125)
125x385
Screenshot12.png (0, 61x172)
172x61
>>1742510
Ну я вообще не знал, что так можно. Пробовал просто $i приравнивать нулю.
Ну и минус у тебя лишний, надо просто $i - 1. Спасибо за помощь c:
Аноним 2020/07/05 12:44:01  №1742545 375
Аноны, кто в Eloquent | ларавел шарит?
Хочу вот что - есть таблица Products, в контроллере создаю коллекцию так:
$collections = Product::get()
У каждого продукта есть свойства, и мне нужно получить определеныный продукт по свойству. обычным sql запросом это что то вроде:
select * from products join properties on products.id = properties.product_id where products.id = 1;
Как через фасад DB::table() с помощью построителя запросов и объединений понятно.
Как с помощью уже конкретной модели Product - менее понятно, я пока путаюсь в семантике, но вроде для отдельного отношения и его отношений можно выбрать нужные данные из связанных таблиц.
А можно ли как то вызывать построитель запросов для коллекции? Или никак?

Ответы: >>1742561
Аноним 2020/07/05 13:03:29  №1742561 376
Ответы: >>1742886
Аноним 2020/07/05 13:16:05  №1742575 377
>>1740448
Тебе надо добавить папку, в которой лежит php.exe в переменную path винды чтобы она его видела.
Или как я делаю - создать симлинк этого файла в папку винды.
Ответы: >>1742593
Аноним 2020/07/05 13:35:08  №1742593 378
>>1742575
я просто скачал файл пхп и прописал путь
Аноним 2020/07/05 13:48:50  №1742616 379
Screenshot13.png (32, 614x466)
466x614
Screenshot14.png (17, 573x441)
441x573
Screenshot15.png (3, 553x53)
53x553
Запрашиваю проверку на правильность
Ответы: >>1745132
Аноним 2020/07/05 15:38:22  №1742741 380
Ответы: >>1743018
Аноним 2020/07/05 18:31:15  №1742886 381
>>1742561
У продукта есть свойства - две таблицы, отношение многие-ко-многим. В промежуточной таблице id продукта и id свойства связываются.
Допустим у продукта1 есть свойство1, свойство2, свойство4 - записи об этом в промежуточной таблице.
так же в этой промежуточной таблице есть связи с между другими продуктами и свойствами. То есть продукт2 может иметь свойство2, свойство1 и т.д. Вроде понятно описал.
моя задача - по набору свойст однозначно идентифицировать продукт. Тоесть если свойства 1, 2, 4 - то идентифифицируется продукт1. Суть в том что при запросе с объединениями в когда ищем про свойствам продукта, в результирующие строки вылазят другие продукты, которые имеют допустим одной свойство 2.

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

Если вдруг нихуя не понял - можешь меня нахуй послать. Я заслужил.
Ответы: >>1742929
Аноним 2020/07/05 19:48:17  №1742929 382
Ответы: >>1742952
Аноним 2020/07/05 20:16:42  №1742952 383
>>1742929
Ок, спасибо, завтра потестирую.
Аноним 2020/07/05 22:44:34  №1743018 384
>>1734537
>>1742741

> public function addEmployees(AbstractEmployee $employee, int $count): void

Здесь, по моему, ошибка: мы не добавляем несколько независимых объектов, а добавляем ссылку на один и тот же объект несколько раз в массив. В итоге, если мы поменяем какое-то свойство одного работника (например: повысим ранг), оно поменяется и у его "копий". А это неправильно.

Вспомогательные классы (EmployeeUtil) обычно делают по паттерну utility class, то есть со статическими методами (это методы, которые можно вызывать без создания объекта, вроде SomeUtil::someMethod()).

В sortEmployeeByRank() можно использовать spaceship operator: <=>

cloneCompany немного странный метод, он никак не использует $this, а получает компанию через аргументы. Не логичнее ли было там написать return clone $this ?

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

> getEmployeesByProfession('Engineer');

Лучше использовать встроенную константу class и писать Engineer::class вместо 'Engineer' - это защищает от опечаток (а в IDE еще и работает с автодополнением).

Удобно было бы добавить в Департамент еще функцию getBoss(), чтобы не искать его циклом вручную.

В остальном сделано неплохо. Если хочешь поглубже ООП поизучать, можешь попробовать сделать задачу про ООП-гостиницу или задачу про упрощение математических выражений отсюда >>1737441
Аноним 2020/07/06 07:51:10  №1743055 385
аноны. подскажите как правильно узнать про роутинг на ебучем движке flextype cms если интересно для того чтобы построить правильно путь до контроллера который обрабатывает мне форму то ? уже сижу 2 часа мозги ебу что писать в атрибуте action у формы. сам контроллер то правильный и рабочий, но хуй знает какой путь до него указывать
Аноним 2020/07/06 12:51:24  №1743207 386
У меня вопрос про запись в файл fputcsv.

$save_file = fopen('file.csv',"a+");
while ($i<10) {
$line=arr[$i].arr[$i+1];
fputcsv($save_file, $line);
}

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

Я озадачился, т.к. задумался, не слишком ли замедляет работу скрипта вызов fputcsv в цикле? И можно ли как-то иначе?
Ответы: >>1743208 >>1743228
Аноним 2020/07/06 12:55:38  №1743208 387
>>1743207
Схуя ли замедляет? Быстро и эффективно по памяти - можно многогигабайтные датасеты молотить последовательно.
Аноним 2020/07/06 13:16:06  №1743228 388
>>1743207

Если ты пишешь в файл строку, надо использовать fwrite(). А в fputcsv надо вторым аргументом передавать массив, а не строку, эта функция для CSV файлов.

Если ты хочешь записать файл одним махом, используй file_put_contents.

Запись и чтение построчно имеет то преимущество, что не надо тратить память на хранение содержимого всего файла.
Аноним 2020/07/06 20:33:00  №1743476 389
Посоветуйте сервис с полной программой обучения. Чтобы там было не только про язык, но и про разработку сайтов, про гит, докер, и все остальное. Желательно интерактив, без вебинаров по 2+ часа.
Ответы: >>1743485 >>1744270
Аноним 2020/07/06 20:57:29  №1743485 390
>>1743476
Личный ментор за дораха.
Ответы: >>1743497
Аноним 2020/07/06 21:21:33  №1743494 391
Почему во всех книгах и курсах по PHP, работа с вебом начинается с форм или со встраивания php кода в html страницу? Раздражает такая тупость.
Ответы: >>1743496
Аноним 2020/07/06 21:22:56  №1743496 392
>>1743494
А с чего надо начинать.
Ответы: >>1743499
Аноним 2020/07/06 21:23:02  №1743497 393
>>1743485
Не подходит. Мне нужна готовая отработанная программа, а не план составленный ноунеймом на коленке.
Ответы: >>1743603
Аноним 2020/07/06 21:26:45  №1743499 394
>>1743496
С того как php обрабатывает запросы и как по нормально генерировать html.
Аноним 2020/07/07 00:17:19  №1743539 395
Почему в print($var++) переменная var изменяется, а при print($var+1) - нет ?
Ответы: >>1743541 >>1743574
Аноним 2020/07/07 00:21:20  №1743541 396
>>1743539
Аргументы вычисляются перед передачей в функцию. Первое вычисление изменяет переменную, второе нет.
Ответы: >>1743544 >>1743574
Аноним 2020/07/07 00:26:57  №1743544 397
Аноним 2020/07/07 04:46:35  №1743574 398
>>1743541
В функции сначала вычисляются аргументы, так правильней. Это энергичные или по другому строгие вычисления.

>>1743539
Потому что оператор ++ изменяет переменную, а var + 1 это просто сложение переменной с числом. Саму переменную сложение не меняет.
Аноним 2020/07/07 07:09:28  №1743603 399
>>1743497
Губу закатай тогда.
Ответы: >>1743635 >>1743635
Аноним 2020/07/07 07:50:49  №1743635 400
Аноним 2020/07/07 08:54:04  №1743696 401
Как делать запросы к сервисам, есть какие то функции для этого?
Ответы: >>1745132
Аноним 2020/07/07 11:58:16  №1743958 402
Как в web.config сделать редирект 301 с site1.ru/about/ на site2.ru/about? Я находил разные примеры, но ничего не подошло.
Аноним 2020/07/07 12:34:02  №1743980 403
анон, посередине страницы втыкаю header('Content-Type: image/jpeg');
и происходит ее краш, хотя мне надо чтобы он вывел картинку которую я обработал через класс Imagick.
как пофиксить то проблему?
Ответы: >>1744002
Аноним 2020/07/07 12:52:52  №1744002 404
>>1743980
Насколько я помню, никак. Хидер ставится только в начале ресурса. Ты хочешь чего-то странного. Попробуй загружать картинку отдельно.
Ответы: >>1744046
Аноним 2020/07/07 13:55:25  №1744046 405
>>1744002
ну вот я и обращаюсь в отдельный пхп файл. там букввально 5 строк кода.
первым идет header('Content-Type: image/jpeg');
и затем уже 5 строчек с логикой и выводом... но сука у меня почему то блять пустая черная страница нахуй, убираю хедер и непонятный набор символом и всякой хуиты
Ответы: >>1744090 >>1744201
Аноним 2020/07/07 14:29:07  №1744090 406
Ответы: >>1744137
Аноним 2020/07/07 15:47:56  №1744137 407
>>1744090
да с этим я уже разобрался. рендерю <a href=preview.php><img src=preview.php></a> где лежит код на рендер жпг из шаблона. хуй знает где об этом спрашивать. то ли в жс треде то ли здесь. как мне к этой хуйне прикрутить fancybox ? он массивом рендерит мне пикчи, и те что норм пикчи с ним нормально отрабатывается. а с этим проблемы - он просто в новой вкладке открывает.
Ответы: >>1744700
Аноним 2020/07/07 16:39:37  №1744201 408
>>1744046

Проверь, что до и после header не выводится абсолютно ничего, кроме данных картинки, в том числе там нет пробелов, переводов строк, символа BOM. Так как картинка это бинарные данные, то никаких лишних символов, даже пробелов, выводить нельзя.

"непонятный набор символов" - это как раз данные картинки, представленные в виде текста.
Ответы: >>1744700
Аноним 2020/07/07 17:24:27  №1744270 409
>>1743476
Хекслет. Но освоить всю программу будет сложно.
Ответы: >>1744369
Аноним 2020/07/07 18:30:41  №1744356 410
Аноны, чет наткнулся на код такого плана
class Bar{

public $elolquen_collection;

public function Foo(){

$this->elolquen_collection->each(function(item, index){
...
//вызывается $this внутри функции, которая внутри метода
$this->elolquen_collection->do_somth()
//разве $this доступен снаружи всех измерений в функциях определенных внутри методов?
...
})
}

}
Ответы: >>1744428
Аноним 2020/07/07 18:41:51  №1744369 411
>>1744270
>Хекслет
Это триггер для местных. Щас подрыв будет
Аноним 2020/07/07 19:41:10  №1744428 412
Ответы: >>1744433
Аноним 2020/07/07 19:47:22  №1744433 413
>>1744428
Бля, спасибо, я тупой. Знал и забыл.
Аноним 2020/07/07 21:15:42  №1744485 414
Аноны, а как можно сидеть 6-10 часов в день за обучением чего-либо? Читал тут сегодня, на 2 часа хватило. Мб тайм менеджмент какой-нибудь?
Ответы: >>1744531 >>1744664 >>1745596
Аноним 2020/07/07 22:23:20  №1744531 415
>>1744485
Тащемта никаких секретов тут нет, когда жрать нечего будет то будешь и по 15 часов сидеть.
Аноним 2020/07/08 05:25:44  №1744664 416
>>1744485
>>когда жрать нечего будет то будешь и по 15 часов сидеть
И нихуя это не даст. Можно за неделю и Кнута ебануть - только толку то?
Когда жрать нечего будет - нужно будет кабанчиком скакать по местам трудоустройства.
Аноним 2020/07/08 05:25:51  №1744665 417
>>1740160
А в базе колонки тоже columnName писать? Не знаю как в laravel просто. Может вы там пишете, что у класса ClassName аттрибут attributeName равен колонке attribute_name в таблице class_name?
Ответы: >>1745598
Аноним 2020/07/08 06:32:30  №1744700 418
>>1744201
я же говорю разобрался. но теперь другая проблема >>1744137
Аноним 2020/07/08 12:41:07  №1745092 419
Аноны, на ларе запилил магазин товары делятся на категории, с админкой (где можно добавлять категории, товары, свойства товаров), с корзиной в которую добавляются эти товары, с конечным расчетом результата и подтверждением заказа , при котором отправляется инфа заказчику на почту. Еще сделал подписку, если товара нет, но появится - покупателю придет уведомление на почту.
Еще какие то вещи туда вкорячил. И небольшой сервис на ноде впридачу через API примитивное работает.
Делал по гайду, но погрузился глубоко, кое что сам уже переписал/дописал. Отдельные моменты на фронте переписал на AJAX.
На джуна тяну? Думаю начать активно рассылать резюме в разные конторы, и продолжать пилить этот магаз, запиливая новые фичи.


Ответы: >>1745124 >>1745393
Аноним 2020/07/08 13:07:10  №1745124 420
>>1745092
>На джуна тяну?
Я два с половиной года уже ебашу бэкендики для мобильных приложух и до сих пор этот вопрос себе задаю.
Ответы: >>1745293
Аноним 2020/07/08 13:14:49  №1745132 421
>>1743696

Если ты про отправку HTTP-запросов к сторонним веб-серисам, то для этого есть несколько способов: начиная с функции file_get_contents и расширения curl, и заканчивая библиотеками вроде Guzzle.

>>1742616

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

Ответы: >>1745337
Аноним 2020/07/08 14:19:48  №1745210 422
>>1745190
>Выходит что нужно пристроить еще и какой-то ORM: DataMapper или ActiveRecord, верно?

Не нужно, сделай Gateway класс с sql запросами внутри, который возвращает какой-то объект

>Еще не совсем понимаю как в ActiveRecord и DataMapper для INSERT и UPDATE запросов используется один метод save(). С помощью обычной проверки, не повторяется ли какое-то уникальное поле?

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

>Алсо, чем обусловлено то, что в примерах свойства у сущностей публичные?

Через пдо можно автоматом гидрировать данные в указанный класс, вот только если у тебя в таком классе будет конструктор то гроб кладбище пидор
Аноним 2020/07/08 14:25:28  №1745216 423
>>1745190
Мб тебе поможет то, что TDG нехуй рассматривать вообще как паттерн, а как одну из вариаций репозитория.
Аноним 2020/07/08 15:03:18  №1745243 424
У человека с пикрилейтед все работает, у меня нет.
Could not normalize object of type "Моя сущность", no supporting normalizer found.
Я тоже прописал через аннотации группу.
Ок я пробую более ручным способом: инжектирую NormalizerInterface: та же самая ошибка.
В чем проблема?
И нахуя этот оверинжиниринг, если мне сериалайзер и нормалайзер придется самому писать все-равно?
Аноним 2020/07/08 15:21:24  №1745253 425
Как правильно читать документацию? От начала и до конца или по необходимости(когда уже пишешь на фреймворке или языке)? Есть предположение что можно пробежаться по возможностям и примерам кода (Не вчитываясь для чего это нужно, кроме заголовка), а если и используешь в проекте, то почитать подробнее.
Аноним 2020/07/08 16:01:09  №1745288 426
в тред отписывается снова >>1737932 - кун
дошел до момента регистрации и авторизации. по доке сделал composer require laravel/ui и затем php artisan ui vue --auth
все создалось и в том числе пуи прикладываю на пике . но проблема в том что при переходе на ту же вкладку register возвращается 404 ошибка. куда копать? в чем проблема? версия ларки 7.6.1 если что
Аноним 2020/07/08 16:01:40  №1745289 427
>>1745190
https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md
Бля, ну тут по классике. Я не знаю кто автор, но очень уж похоже на того типа с сервис локаторами. Слышал звон, но не тот и нихуя не расслышал.

1. Model (модель). Это часть реального мира, выраженная в коде. Модели бывают разные view model, data model, domain model, relational model. В MVC "модель" - это модель бизнес процесса, который мы хотим запрограммировать. Для примера используем новости, как в этой статье. У нас будет два бизнес процесса "опубликовать новость" и "показать новость". Соответственно у нас две модели. Сама новость это не модель, а только часть модели, а все объекты, которые используются в бизнес процессах формируют "слой бизнес логики". Более того "публикуемая новость" может отличаться от "показываемой новости" как по содержанию, так и по функционалу. И конечно каждая из эти новостей может отличаться от данных в базе.

Тогда почему в том же ларавеле для каждого объекта, который сохраняется в базу используется термин "model"?
Это просто срезание углов. Очень часто наш бизнес процесс очень простой, нужно просто запомнить данные и потом показать их в том же виде. И сначала "публикуемая новость" и "показываемая новость" для простоты сливаются в просто "новость", а бизнес процессы сводятся к обычным "сохранить что-то" "показать что-то". А затем для простоты мы делаем "новость" прямой проекцией модели данных, а поскольку данные в 99% случаев хранятся в реляционной базе, то реляционной модели данных.

Получается такая цепочка упрощений:
Модель бизнес процесса -> Один объект -> Реляционная модель объекта
Такой упрощенный подход используется в так называемых RAD фреймворках. Прородителем этой хуйни можно назвать Rails. Структура предельно проста:
Controller (NewsController)
Action (createNews)
Model (News)
View (news.template)

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

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

2. Entity (сущность). Это чистая семантика. Программист наделяет объект смыслом, а не то как объект используется. Объект "новость" не станет сущностью только потому что его возвращает gateway. На сегодняшний день определение и использование entity используется исключительно в контексте DDD. А в DDD entity - это объект, используемый в бизнес процессе, который можно однозначно идентифицировать. Т.е. если мы имея две новости можем достоверно их друг от друга отличить, то новость может быть сущностью.

Ну, вот теперь после всего мной высранного можешь догадаться какой паттерн используется в RAD фреймворках? Првильно ActiveRecord.

Теперь про DataMapper. Если ты почитаешь фаулера, то сразу поймешь что тут что-то не так. В определении описано само понятие ORM - объектно реляционный маппер. Все верно, объектная модель древовидная, объекты находятся в других объектах, а реляционная модель основана на отношениях. Модели разные, вся хуйня, проблема века. Но куда пропал дата маппер? А его определение тоже изменилось. Сейчас data mapper это сервис, который помещает данные в объект.

Возвращаясь к статье. А чем собственно в ней отличается TableDataGateway от DataMapper? А ничем. Описание в статье не несет никакой смысловой нагрузки. Но если ты прочитал мою простыню, то должен понять зачем используется data mapper в его сегодняшнем виде. Он используется в "не упрощенной" модели бизнес логики. Если у нас несколько разных объектов новостей нам нужна возможность поместить в каждый из них нужные нам данные. Например для редактора в новости будет дата последнего изменения, а для читателей только дата публикации. Таким образом data mapper используется не только для абстракции от базы, как table gateway, а для абстракции от структуры данных в базе. Более того если пораскинешь мозгами поймешь, что data mapper может внутри дергать table gateway или active record или, как это происходит в доктрине repository.

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

>С помощью обычной проверки, не повторяется ли какое-то уникальное поле?
Если речь про статью, то там не примеры, а хуйня и это в принципе никак не работает. Реальный active record перехватывает обращения к своим свойствам с помощью __get и __set и запоминает что и на что было изменено.

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


Аноним 2020/07/08 16:06:27  №1745293 428
>>1745124
В конторе? За какой прайс?
Аноним 2020/07/08 17:52:02  №1745337 429
>>1745132
>Если ты про отправку HTTP-запросов к сторонним веб-серисам, то для этого есть несколько способов: начиная с функции file_get_contents и расширения curl, и заканчивая библиотеками вроде Guzzle.
Спасибо
Аноним 2020/07/08 18:27:39  №1745360 430
допустим в БД есть запись,что у анона есть 100баксов.
и таких анонов много.Как посчитать процет по вкладу?
в каждом личном кабинете должен быть скрипт,который выдирает эти 100 баксов считает и записывает заново новое значение с процетами?
Аноним 2020/07/08 18:35:40  №1745362 431
почему доктрина идет отдельно от фреймворка?
Ответы: >>1745377
Аноним 2020/07/08 18:53:55  №1745377 432
>>1745362
Все идет отдельно от фреймворка. Что в симфони https://github.com/symfony , что в ларавеле https://github.com/illuminate .
Умные люди давно поняли, что фреймворк это просто набор компонентов и надо иметь возможность эти компоненты менять при необходимости.
Аноним 2020/07/08 19:21:28  №1745393 433
>>1745092
Рассылай.
Гайс, чуть более полу года работаю в конторе. Я по палате считаюсь уже сильным и опытным, но контора слабоватая по уровню. Как понять что ты уже прошел уровень джуна? Пытаться проходить собесы на мидла?
Последнее время хочу пересесть на Symfony (паттерны, все дела). Сейчас на проектах у нас Yii и Laravel, и если второй просто медленный, то yii - просто уже заебал своими костылями. Сильно ли тяжелей найти работу конкретно на этом фрейме в снг? Или лучше не пытаться и сразу смотреть в сторону европы (английский на уровне документации/тз, активно подтягиваю)?
Ответы: >>1745424
Аноним 2020/07/08 19:40:26  №1745424 434
>>1745393
Ну расскажи какие "костыли" тебя в Yii заебали. Расскажи какие "паттерны" ты будешь писать когда пересядешь на симфони. По твоему ответу будет ясно созрел ты для миддла или нет.
Ответы: >>1745452
Аноним 2020/07/08 19:50:35  №1745443 435
как пхп использует ядра процессора?
Аноним 2020/07/08 20:02:51  №1745452 436
>>1745424
>Ну расскажи какие "костыли" тебя в Yii заебали
Тяжело расширить приложение согласно DDD. Конкретно у меня сейчас похожий таск и я нормально так поебался. Нет внятной ОРМ, не применяются большинство практик новых фреймворков. Вот только вчера выкатили патч который позволил в экшенах тайпхинтить DI зависимости - до этого такое делалось трейтом. И таких вещей можно перечислять довольно таки много. Я не говорю что yii хуевый, я считаю что он хорош для своего времени (которое уже вышло).
>Расскажи какие "паттерны" ты будешь писать когда пересядешь на симфони
Не понял вопроса. Как можно писать паттерны? Их можно реализовывать. И реализуются они не для того чтобы "смотри я сделал", а если задача требует. Да и я имел ввиду то, что Symfony у меня символизируется с хорошим и правильным сложным кодом, а не то что там используют паттерны, а в приложениях не на Симфони - нет.
Ответы: >>1745682
Аноним 2020/07/08 20:27:06  №1745472 437
Господа, подскажите пожалуйста.
Как правильно работать с Magento2 на локальной машине? Если сбрасывать кеш каждый раз, то разработка идет очень долго, по 5 минут ждешь когда он там все файлики создаст (Docker, ssd).
Частичный сброс чуть помогает, вместо 5 минут - 2,5, но это все равно очень долго. Поправил-задампил-посмотрел в бразуере х 5 - уже минут 15-20 прошло.

Есть ощущение, что делаю что-то не правильно.
Аноним 2020/07/08 21:22:01  №1745515 438
Если использовать docker-compose для локальной разработки на винде то проблем нет - все заебись наглядно и по полочкам нахуй. С ебаным бубунтой начинаются анальные ласки. Заходишь такой в bash, создаешь, например, файл миграции бд - он создается, но юзер у ннего root. Phpstorm: ой не могу отредактировать файл. Пиздец блять.
Думаешь ща докер облегчит жизнь под линупсом - а получаешь хуй за воротник. Притом гуглил эту хуйню - каждый год кто-то отписывается о том, что ебется, в той или иной степени, с разрешениями файлов, которые создаются в контейнере.
Ответы: >>1745556
Аноним 2020/07/08 22:26:50  №1745556 439
>>1745515
>Заходишь такой в bash, создаешь, например, файл миграции бд - он создается, но юзер у ннего root.
Под рутом создаешь.

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

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

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

>каждый год кто-то отписывается о том, что ебется, в той или иной степени, с разрешениями файлов, которые создаются в контейнере
Каждый год? То есть ты за несколько лет не освоил как менять права на файлы? И как бы внути контейнера никто ничего не создает вручную.
Ответы: >>1745601 >>1745623
Аноним 2020/07/08 23:04:51  №1745578 440
>>1745190

> Еще не совсем понимаю как в ActiveRecord и DataMapper для INSERT и UPDATE запросов используется один метод save().

Можно проверять наличие id, если это поле автогенерируется на стороне БД и проставляется после INSERT. Можно использовать другие варианты - например, сделать специальное поле, которое указывает, что объект был загружен из БД и надо использовать UPDATE вместо INSERT.

> Алсо, чем обусловлено то, что в примерах свойства у сущностей публичные?

Желанием сделать код как можно короче и проще.

Что касается TDG, то его определение есть тут у Фаулера: https://martinfowler.com/eaaCatalog/tableDataGateway.html

> A Table Data Gateway holds all the SQL for accessing a single table or view: selects, inserts, updates, and deletes. Other code calls its methods for all interaction with the database.

Что касается Data Mapper, то у Фаулера (https://martinfowler.com/eaaCatalog/dataMapper.html ) это слой, который отвечает за перенос данных из объектов в БД и обратно:

> The Data Mapper is a layer of software that separates the in-memory objects from the database. Its responsibility is to transfer data between the two and also to isolate them from each other.

Также Data Mapper называют подход, который противоположен Active Record: это вариант реализации ORM, в котором код работы с БД хранится не в сущности, а снаружи, и сама сущность не работает с БД. В идеале, она еще и не знает ничего про БД, но на практике, при работе с той же Доктриной, в коде сущности ставятся комментарии-аннотации, которые указывают, как ее отображать на БД, какой таблице она соответствует, какие в ней индексы, как называть колонки, какие у них ограничения.

Обычно считается, что ORM (отображение объектов на таблицы БД) можно реализовать двумя разными способами - через ActiveRecord или DataMapper.
Аноним 2020/07/08 23:52:36  №1745596 441
>>1744485
Да запросто - когда тебе интересно, то не устаёшь почти. Можно и сутки просидеть.
У меня, например, постоянно вся ночь как пару часов пролетает.

По ощущениям это как будто новую видеоигрушку изучаешь, но горазло интереснее потому, что это не примитивная игровая система для детей, а норм матан.
Ответы: >>1745680
Аноним 2020/07/08 23:53:56  №1745598 442
>>1744665
В таблицах - через подчёркивание всегда пишут. Можно даже ключи массива так писать.
Ответы: >>1745645
Аноним 2020/07/09 00:09:59  №1745601 443
>>1745556
Использование линукса на десктопе - говноедство. Если у тебя проблемы с пониманием системы "для ламеров" то ты просто очередной мамкин хакер и к серверу на линуксе тебя на пушечный выстрел не стоит подпускать.
Ответы: >>1745616 >>1745764
Аноним 2020/07/09 04:42:08  №1745616 444
>>1745601
У меня есть опыт с обеими ОС. Тоже самое могу сказать, юзать винду - есть говно. Ты не осилил разобраться как менять права, какие тебе сервера? ОС за тебя ничего не делает и не должна.
Ответы: >>1745646
Аноним 2020/07/09 04:59:30  №1745623 445
>>1745556
>Под рутом создаешь.
>То есть ты за несколько лет не освоил как менять права на файлы?
Боже...
С помощью exec / run запускаешь йоба скрипт, который генерирует тебе нужный файл / файлы
Ламерскя винда:
Вертишь из-под винды файлом как хочешь. Сидишь программируешь
Божественный десктоп линупс:
Ой а у тебя юзер не тот))0 И что с того что ты запустил композ не от рута? Мне похую ваще. Иди на форумы и ищи решение. Ах да смари тут у меня ошибка вылетает - глянь логи и опять на форумы) Сидишь администрируешь
>За это они лишаются другого. Если при установке программа происходит вылет, - ничего нельзя сделать. Если синий экран - ничего нельзя сделать. Любая нештатная ситуация в винде - это тупик.
Самый популистский текст, который я читал за последнее время. администрировать линупс сервак !== разрабатывать себе очко под линупс десктопом



Аноним 2020/07/09 06:16:19  №1745638 446
Подскажите знающие аноны, сколько времени уйдет на то, чтобы сделать регистрацию через соцсети(google, fb, vk, ok, inst) с использованием клиентской библиотеки?
Ответы: >>1745654
Аноним 2020/07/09 06:27:51  №1745645 447
>>1745598
В таком случае в Yii получается, что ты обращаешься как бы к атрибуту класса так $className->column_name. Почему тогда реальный аттрибут класса должен быть записан кэмелкейсом? И раз уж я запалил что работаю в yii: В классе СlassName можно создать метод getAttributeName(), а потом вызвать ее у сущности вот так $className->attributeName.

$model->column_name //название столбца
$model->deleted_item //атрибут deleted_item
$model->deletedItem //метод getDeletedItem()
$model->deletedItem() //метод deletedItem()

Если вы будете называть аттрибуты кэмелкейсом, то вы быстро в Вангу превратитесь.
Ответы: >>1745649
Аноним 2020/07/09 06:28:49  №1745646 448
>>1745616
Причем тут права, пердоля? Они в обеих системах несложно ставятся.
И да - юзать виндут на серверах это говноедство. Точно такое же как и линуксы на десктопе.
Аноним 2020/07/09 06:33:32  №1745649 449
>>1745645
ООП пиши верблюдом, процедурку через подчеркивание. Спрашивать почему так не имеет смысла - пхп более 20 лет и так сложилось исторически.
Аноним 2020/07/09 06:39:05  №1745654 450
>>1745638
За сколько сделаешь
Ответы: >>1745887
Аноним 2020/07/09 07:23:31  №1745680 451
>>1745596
удвваиваю этого. особенно ахуенно изучать если мелькают нихуевые перспективы как плод твоих изучений
аноны, кто нибудь работал с джумлой? нужно сайт перенести с 2.5 на 3.8. и проблема в том что до переноса надо сделать дамп всех внутренних файлов. доступа к фтп у меня нет, левые расширения которые сделают все за меня тоже не ставятся. как можно вытянуть файлы то ?
Ответы: >>1745722
Аноним 2020/07/09 07:24:54  №1745682 452
>>1745452
>Тяжело расширить приложение согласно DDD
DDD Это вообще не про код. Это про организацию разработки. Нужно выработать общий язык с экспертами в моделируемой области и вместе с ними создать семантическую модель автоматизируемого бизнеса. А только потом записать эту модель в виде кода, причем одну и туже модель можно воплотить на разных языках, потому что модель первична.
Ничему из этого yii не мешает. Доменная модель это просто набор обычных классов. Не нужен никакой фремворк вообще чтобы её написать.
Тут трояк. Про DDD слышал, синюю книгу не читал.

>Нет внятной ОРМ, не применяются большинство практик новых фреймворков
Yii это и есть ORM. Не было бы в нем отличной ORM никто бы его в жизни не использовал. Анус ставлю, что если бы ActiveRecord из Yii шел отдельным пакетом все бы просто тянули себе его, а на Yii давно забили бы хуй. Более того, eloquent скорее всего просто бы не существовал, но из-за действительно важных проблем в Yii это не так.
Ну тут двойка и с такими ответами никакого миддла тебе не светит.

>Вот только вчера выкатили патч который позволил в экшенах тайпхинтить DI зависимости - до этого такое делалось трейтом
Это просто перенос кода из трейта в код базового контроллера. Раньше они боялись сломать обратную совместимость, а теперь когда всем похуй на фреймворк не боятся. Но главное тут что трейт нихуя не мешал тайпхинтить зависимости.
Трояк. Небольшой дискомфорт от этой хуйни есть, но решается за пол часа раз и навсегда.

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

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

Ты не обижайся, жестковато вышло, но хули делать. Я просто оценил, как оценивал бы реального кандидата на должность миддла с зп от 100К.
Тебе нужно лучше разобраться в своих инструментах. Если тебе интересно DDD минимум прочитать блядь книгу.
Узнай как вообще работает симфони https://www.youtube.com/watch?v=pz6VdH4_BSg
и современные фреймворки в целом https://www.youtube.com/watch?v=6tL1XOywgUc
и почему именно так, а не иначе https://www.youtube.com/watch?v=v1I57-_Rsv0
Ответы: >>1745702 >>1745834
Аноним 2020/07/09 07:48:37  №1745702 453
>>1745682
>если человек пишет хуйню, то следить за ним нужно вне зависимости от того на чем проект.
ну хуй его знает. лично я даи пару знакомых с других галер когда нам дают говнопроект на какой то говенной самописной cms где написаны такие костыли и велосипеды со стандартнами 2012 года это я щас уже про фронтенд то у тебя как то волей неволей нет мотивации писать что то нормально и адекватно и поэтому ты пишешь хуйню. а когда нормальный проект - то и смысл писать нормально и адекватно появляется
мимокрок
Ответы: >>1745709
Аноним 2020/07/09 08:02:04  №1745709 454
>>1745702
Лично я за легаси говно берусь только с условием написания нормального кода. Если легаси мешает писать нормально, то выкидывается нахуй и переписывается по человечески. Если такой подход работодателя не устраивает, то пусть поищут говночиста попроще. Хоть какое-то самоуважение надо иметь.
Аноним 2020/07/09 08:25:56  №1745722 455
>>1745680
>ахуенно изучать если мелькают нихуевые перспективы
>то нибудь работал с джумлой
Сорян, не удержался)
>. доступа к фтп у меня нет,
Это хуево. Да даже если и есть доступ только к фтп это тоже хуево.
Если есть возможность залить туда какой нить йоба шэлл который сможет все за архивировать. Но если там картинок на пару гигов то земля тебе пухом.
Ответы: >>1745725
Аноним 2020/07/09 08:36:24  №1745725 456
>>1745722
>Сорян, не удержался)
знаю, поэтому сразу после галеры сижу копаю ларавель с реактом чтобы свалить с этого днища побыстрее. сейчас уже до админки дошел, надеюсь к осени свалю на нормальное место
Ответы: >>1746008
Аноним 2020/07/09 09:30:10  №1745764 457
>>1745601
>Использование линукса на десктопе - говноедство.
Поясни мне как сделать аналог i3wm на винде (желательно без анального дроча), и я с радостью пересяду на винду
Аноним 2020/07/09 10:40:27  №1745834 458
>>1745682
> Не нужен никакой фремворк вообще чтобы её написать.
Да, но если мы пишем на yii реализовывать этот подход сложнее, так как фреймворк монолитный и мы вынуждены писать на его компонентах?
>синюю книгу не читал.
В планах, спасибо

>Не было бы в нем отличной ORM никто бы его в жизни не использовал
Подробней можно? В моем понимании юишная орм очень слабая и не дает возможности постриоть запрос даже средней сложности. Чего не сказать про тот же eloquent. Возможно я чего то не знаю, но там где в laravel я могу использовать eloquentBuilder, то в yi2 мне приходится строить запрос практически на чистом sql. Так же у лары отличные доки по api, а у yii прктически при любом запросе гугла выдает одну и ту же страницу документации, где "коротко о главном".

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

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

>Сложность никакого отношения к хорошести и правильности не имеет. А хорошесть и правильность слишком субъективна.

Очевидно что средний уровень разработки на yii и symfony значительно отличается. К чему этот фарс? Опять же, я не говорю что я сильный дохуя, но расти в плане скилла очевидно быстрее и интересней в сильной компании на тяжелом проекте. А таких проектов на yii встречается сколько в соотношении к проектам на symfony? 1к10? 1к15?
Я недавно почитал чуть про симфони - узнал о фиче аннотации. До этого момента для меня аннотации - тайпхинт и описание чего либо. Я и представить не мог что бандлы симфони парсят код и по этим аннотациям роутинг выстраивают. И я уверен таких прикольных фич еще достаточно.

>Слабовато, я бы тебя точно на миддла не взял
Спасибо, но я и не пытался тебе угодить.

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

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

>Ты не обижайся, жестковато вышло, но хули делать. Я просто оценил, как оценивал бы реального кандидата на должность миддла с зп от 100К.
Мужик, я работаю за 20 в месяц в разьебаном войной городом. Для меня зп мидла это, ну, от 40-50. И на что мне обижаться то, местами даже благодарен за ответы. Я понимаю что до черточки мидла не дотягиваю, да и эта черточка от конторы к контре разнится.
Ответы: >>1745915 >>1745924
Аноним 2020/07/09 11:36:34  №1745887 459
>>1745654
А ты за сколько в первый раз сделал?
Аноним 2020/07/09 11:48:55  №1745915 460
>>1745834
>>за 20 в месяц в разьебаном войной городом
Непризнанные республики на востоке Незалежной?
без политоты, но я бы нашим ебаным боярам в ебальники бы нассал, за то что эти пидоры развернули в Украине, тупо за их шкурный интерес
>>Для меня зп мидла это, ну, от 40-50
А у вас вообще вакансии есть такие?

мимо-шел


Ответы: >>1745942
Аноним 2020/07/09 11:53:53  №1745924 461
>>1745834
>Подробней можно? В моем понимании юишная орм очень слабая и не дает возможности постриоть запрос даже средней сложности.
Ты вообще документацию читал? https://www.yiiframework.com/doc/guide/2.0/en/db-query-builder Причем это просто построитель запросов, а что можно вытворять с ActiveQuery даже я полностью не знаю, вот посмотри одного из авторов https://www.youtube.com/watch?v=U27PwaYS-nQ возможности там далеко за пределами того что тебе требуется.

>а тебе приходится в каждый контроллер трейт добавлять
То что тебе даже в голову не приходит один раз заюзать трейт, а потом просто наследоваться говорит о том что для миддла рановато еще. https://3v4l.org/GQaoN

>Очевидно что средний уровень разработки на yii и symfony значительно отличается
Не знаю как у вас в пердях, но в ДС и ДС2 проектов с симфони 4+ один на сотню. В 99 процентах случаев симфони это легаси кал, который просто не могут перенести на свежую версию фреймворка, о которой ты мечтаешь.

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

>Мужик, я работаю за 20 в месяц в разьебаном войной городом.
Ну это только твоя проблема. В моей мухосрани без всякой войны 20к зп, взял и переехал. Война это очень веский повод оттуда съебать.
Ответы: >>1745942
Аноним 2020/07/09 12:04:19  №1745942 462
>>1745915
>А у вас вообще вакансии есть такие?
Нет.

>>1745924
>Ты вообще документацию читал?
Ну так я его и юзаю. У нас часть кода на нем, часть на чистом rawSql.

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

>В 99 процентах случаев симфони это легаси
Между легаси на yii и symfony я выберу второе.

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

>Ну это только твоя проблема
А я ее на кого то скинуть пытаюсь или че? Хули ты такой токсичный?
Ответы: >>1745978
Аноним 2020/07/09 12:07:04  №1745948 463
image.png (24, 400x332)
332x400
Сап, короче такая тема, есть простой массив с организациями — $org_array, каждый элемент - строка с информацией, 0 - название компании, 1 - адрес, 3 - телефон, 4 - сайт, 5 - описание, и по новой, 6 - название, 7 - адрес etc.. Необходимо создать многомерный массив, $org[0] = [
0 => 'название',
1 => 'адрес'
etc..]
И так для каждой. Написал хуйню через foreach:
foreach ($org_array as $value) {
$org[$org_id] = [
$counter => $value,
];
$counter++;
if ($counter >= 5) {
$counter = 0;
$org_id++;
}
}
В итоге он записывает только последнее значение (Описание), че делать?
Ответы: >>1746172
Аноним 2020/07/09 12:31:04  №1745978 464
>>1745942
>Ну так я его и юзаю. У нас часть кода на нем, часть на чистом rawSql.
С его помощью можно построить практически любой запрос, за исключением наверное CTE и рекурсивных, и то скорее всего можно наебенить. Даже можно получать связи из разных баз данных. Схуяли ты решил что нельзя строить сложные запросы непонятно.

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

>Между легаси на yii и symfony я выберу второе.
Выбирать легаси максимально уебищный вариант для развития. Это проеб важнейших лет жизни, в которые ты мог бы чему-то научиться. А так тебя ждет болото говна. Правильный ответ такой: между разработкой проекта на симфони и юии выбирай симфони, между поддержкой проекта на симфони и юии не выбирай вовсе.

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

>А я ее на кого то скинуть пытаюсь или че? Хули ты такой токсичный?
Ты агришься на хуйню. Побереги нервы для собесов, вот там у тебя очко подгорит.
Ответы: >>1746013 >>1746138
Аноним 2020/07/09 12:51:41  №1746008 465
аноны переношу сайт с одного хостинга на другой и происходит проблема что сайт с редиректился много раз и не пашет нихуя даже адмиинка. в чем проблема может быть? в .htaccess ? т.к. я с https переношу на http
или как то по ебанутому перенес?
>>1745725 - кун
Аноним 2020/07/09 12:56:41  №1746012 466
что такое аттрибуты?
Ответы: >>1746015 >>1746037
Аноним 2020/07/09 12:56:56  №1746013 467
>>1745978
>>Побереги нервы для собесов, вот там у тебя очко подгорит.

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

мимо-гулял
Ответы: >>1746041
Аноним 2020/07/09 12:57:48  №1746015 468
>>1746012
Очень редкие животные, живут в глубоких норах и грызут корни
Аноним 2020/07/09 13:12:19  №1746037 469
Ответы: >>1746053
Аноним 2020/07/09 13:15:00  №1746041 470
>>1746013
ого, значит я не один такой спортсмен кто перекатился в погромач
мимо ммашник
Ответы: >>1746049 >>1746120
Аноним 2020/07/09 13:23:17  №1746049 471
>>1746041
Альфа-самцу везде дорога, херочки текут, не то что от всяких задротов
Аноним 2020/07/09 13:25:28  №1746053 472
>>1746037
ты мне попроще объясни
Аноним 2020/07/09 14:25:19  №1746120 473
>>1746041
Принял, на созвоне, обнимаю в клинче :3
Аноним 2020/07/09 14:27:22  №1746121 474
я вернулся
Ответы: >>1746183
Аноним 2020/07/09 14:47:35  №1746138 475
>>1745978
>можно построить практически любой запрос
Хочу получить выборку с условием по связям. В ларавел так точно можно и в api ищется за минуту. В yii я до сих пор такую штуку не нашел.

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

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

>Грамотный человек почитает статьи типа "от аннотаций в джава у меня сдохла мать" и не поведется на аннотации в восьмой версии пхп
На заборе "хуй" написано. Я, конечно, прочитал. И к сведению принял. Забор обошел - а с обратной стороны "пизда". Но я то знаю что это просто забор

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




Ответы: >>1746143 >>1746160 >>1747192
Аноним 2020/07/09 14:52:39  №1746143 476
>>1746138
Вот нравятся мне люди которые спокойно могут отвечать, не скатываясь в апломб.

мимо-шел
Аноним 2020/07/09 15:04:45  №1746160 477
>>1746138
>Хочу получить выборку с условием по связям.
Очень просто.
Если не прописал связи в классе:
$query = ClassName::find()
->from(['class' => Classname::tableName())
->leftJoin('class_name_2 class2', 'class2.id = class.class2_id')
->where(['class2.status' => 1])

Если прописал:
$query = ClassName::find()
->joinWith(['className2'])
->where(['class2.status' => 1])
Аноним 2020/07/09 15:13:12  №1746172 478
>>1745948
>$org[$org_id] = [
Переопределение в цикле. В последней итерации у тебя $org[0] = [5 = 'описание] Нужно $org[$org_id][$counter]
Ответы: >>1749970
Аноним 2020/07/09 15:21:58  №1746183 479
>>1746121
Молодец. А давай теперь давай, реализуй _init().
Ответы: >>1746186
Аноним 2020/07/09 15:23:15  №1746186 480
>>1746183
давай лучше про конструкторы поговорим
Ответы: >>1746191
Аноним 2020/07/09 15:29:29  №1746191 481
>>1746186
>специальный метод - конструктор, который вызывается каждый раз при создании нового экземпляра класса (объекта) с целью инициализировать его, например установить значения свойств. Конструктор, как и любой другой метод может иметь параметры
что бы удобно установить к-л параметры при созд объекта
$user = new User("Джон", 33)
а можно сделать так,чтобы при создании объекта печатался текст с этими параметрами,а не вызывать потом метод с echo?
Ответы: >>1746229
Аноним 2020/07/09 15:56:00  №1746229 482
>>1746191
Конструктор это просто функция, которая ничего не возвращает. Ты в ней можешь свой get_info вызвать после того как все поля заинитишь.
Ответы: >>1746232
Аноним 2020/07/09 15:58:36  №1746232 483
>>1746229
я вот так щас сделал
и заработало
Ответы: >>1746296
Аноним 2020/07/09 17:04:20  №1746296 484
Аноним 2020/07/09 18:53:48  №1746375 485
Анончики, у меня такой вопрос возник.
Через конфиги апача сделал корневой папкой html/public. Как через .htaccess, находящийся в html/public, обратиться к файлу, который находится в html/src?
Подскажите, кто знает, пожалуйста.
Ответы: >>1746491
Аноним 2020/07/09 21:24:07  №1746491 486
>>1746375
Я не уверен что понял о чем ты, но путь так указывается. У тебя index.php в src лежит?
../src/file.extension
Ответы: >>1746567
Аноним 2020/07/10 03:23:44  №1746567 487
>>1746491
Нет. index.php тоже лежит в html/public. В индексе через роутер уже обработка запросов происходит. А мне нужно, чтобы к одному конкретному файлу можно было обратиться в html/src
Ответы: >>1746696
Аноним 2020/07/10 08:29:19  №1746688 488
кто нибудь тестил php8?
Аноним 2020/07/10 08:33:03  №1746693 489
Аноны , подскажите мнение ваше по архитектуре, на работе нужно запилить.
Суть такая есть база, к ней нужно написать сервис отчетов.
Есть набор отчетов из базы, они разные.
Для каждого отчета должна быть своя форма ввода данных (диапазон дат и тому подобное, полей ввода может быть штук 5-10)
Ниже - будут выводиться данные полученные из базы.
Отчетов может быть штук 15.
Роутер у меня slim.
Как правильнее сделать - запилить класс Orders - в котором для каждого отчета будет свой отдельный метод?

Ответы: >>1746752 >>1747600
Аноним 2020/07/10 08:44:16  №1746696 490
>>1746567
Я на апаче не сижу, но RewriteRule должно помочь. Это чтобы например статику отдать какую то, я правильно понял?

Аноны, должен ли метод возвращать void? Или логичней вернуть true, даже если мне это true не нужно, а использование void - избегать?
Аноним 2020/07/10 08:52:28  №1746705 491
>>1746694
Если у тебя нет рута для текущего урла, то это 404, показывай шаблон с 404
Аноним 2020/07/10 09:13:57  №1746735 492
Ответы: >>1746746
Аноним 2020/07/10 09:19:52  №1746746 493
>>1746735
Может поставишь ide которая сразу тебе покажет что в коде ошибка?
Ответы: >>1746758 >>1746769
Аноним 2020/07/10 09:23:49  №1746752 494
>>1746693
>запилить класс Orders - в котором для каждого отчета будет свой отдельный метод?
А сто отчетов - сто методов? Ты программист или где?
Сначала определись из чего состоит твой отчет. Из того что ты написал, а ты почти нихуя не написал, можно предположить такую структуру: https://3v4l.org/V6hSl
Создаешь простую форму редактирования отчета. И потом одним методом показываешь форму и выполняешь запрос.
Ответы: >>1746814 >>1746862
Аноним 2020/07/10 09:26:58  №1746758 495
>>1746746
Да тут иде не поможет, нужно поставить мозги, которые читать умеют.
Ответы: >>1746769
Аноним 2020/07/10 09:34:29  №1746769 496
>>1746746
>>1746758
а вы не поняли,что я так сделал намерено?
Ответы: >>1746773
Аноним 2020/07/10 09:37:14  №1746773 497
>>1746769
Нихуя! Красава. В след раз запости скрин как ты покакал, я теперь твой фанат.
Аноним 2020/07/10 10:28:37  №1746814 498
>>1746752
>>А сто отчетов - сто методов? Ты программист или где?
А то!

Вообще сейчас раздумываю на разметкой форм для каждого отчета - формы могут быть очень разные.
Генерить форму из какой то структуры типа json ( это может быть немного муторно, да и опять же JSON нужно будет в базе хранить) ? Или вообще тупо html в строку хранить в базе данных? Или отдельным файлом(тогда отдельных файлов будет много)

Работу с формной я хочу через ajax запилить - но так как формы сильно разные - делать для каждой формы отдельный js скрипт? Но тупо как то.
Вобщем интересно


Ответы: >>1746864 >>1746932 >>1747610
Аноним 2020/07/10 11:00:21  №1746862 499
>>1746752
И еще вопрос
В sql запросе есть такая часть

SELECT ...

JOIN ...
...
WHERE
...
AND p.lastName = 'Иванова' # тут такой момент - в форме я ввожу фамилию - и в sql запрос подставляется фамилия.
А если я ничего не ввожу в это поле, или как вариант будет передано что то типа "все" - то в запрос должен вернуть всех пользователей.
Как в sql передать в даннном месте запроса
- AND p.lastName = all
что бы он всех вернул?
Я понимаю что в нормальном состояни просто эта строка

AND p.lastName l - просто отсутствует, и выводятся все фамилии
Ответы: >>1746876 >>1746925 >>1746967
Аноним 2020/07/10 11:01:12  №1746864 500
>>1746814
Сейчас с подобной штукой работаю. Только у нас не отчёты а пдф генерируются для клиентов
Аноним 2020/07/10 11:05:54  №1746876 501
>>1746862
п.с. как вариант я вижу такое:
в запрос передается или конкретная фамилия, или массив вообще всех фамилий, типа

AND p.lastName IN ( либо одна фамилия, либо все вобще )

Аноним 2020/07/10 11:34:25  №1746925 502
>>1746862
SELECT * FROM table WHERE column = IF (? = '', column, ?);

Если if не работает в твоей базе, то юзай CASE.

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

Ответы: >>1746933
Аноним 2020/07/10 11:39:55  №1746932 503
>>1746814
Ну смотри что тебе удобно. Я не вижу проблем генерить форму, хули там такого особенного? Поля типовые, если нужно содержимое откуда-то подгружать, то можно все это передать в data- аттрибутах, была бы фантазия.

Можешь создать по форме на каждый отчет, а объекте отчета хранить только название файла с шаблоном формы.

В целом я придерживаюсь правила не повторять один и тот же код больше трех раз.
Аноним 2020/07/10 11:40:35  №1746933 504
>>1746925
Дело осложнилось тем (не спрашивай почему так), что среди p.lastName может быть NULL, и соответственно когода я хочу вывести всех - то среди всех еще и NULL должен быть
Ответы: >>1746962
Аноним 2020/07/10 12:02:35  №1746962 505
>>1746933
Ну епт, почитай доку про NULL покумекай, погугли.

Вот как это решается в Mysql https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d25e56f8f6bd42fd1c078f27d84dfbe9 оператору <=> похуй на NULL

Вот как это решается в Postgres https://dbfiddle.uk/?rdbms=postgres_12&fiddle=ad6c2455b202f8da1e0a0e6943d93a95 оператору IS NOT DISTINCT FROM похуй на NULL

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

Ответы: >>1747049 >>1747624
Аноним 2020/07/10 12:05:45  №1746967 506
>>1746862
Зачем ты пытаешься на sql сделать то, что можно не задумываясь сделать в php?
Ответы: >>1746969
Аноним 2020/07/10 12:06:58  №1746969 507
>>1746967
У тебя двадцать разных запросов, в которые нужно подставить параметры. Параметры могут быть, а могут не быть. Твое решение?
Ответы: >>1747058
Аноним 2020/07/10 12:53:13  №1747049 508
>>1746962
Чому то у меня не получилось нагуглить то что ты смог, спасибо.
Аноним 2020/07/10 13:01:35  №1747058 509
Ответы: >>1747064
Аноним 2020/07/10 13:04:23  №1747064 510
>>1747058
И хули query builder? Билдить кто будет и где?
Ответы: >>1747084
Аноним 2020/07/10 13:20:33  №1747084 511
>>1747064
Ты ваще дегенерат? В коде блять. У тебя у каждого типа заказа свой набор полей, по ним и строй запрос, храни этот набор где хочешь, хоть в очке, хоть в жсоне
Ответы: >>1747110
Аноним 2020/07/10 13:40:17  №1747106 512
Ну вот и первый гвоздь в крышку гроба РНР

Microsoft не станет заниматься поддержкой PHP 8.0 для Windows

Дейл Хирт (Dale Hirt), менеджер по проектам PHP в Microsoft, предупредил разработчиков, что компания не будет заниматься поддержкой ветки PHP 8.0 для Windows. Для веток PHP 7.2, 7.3 и 7.4 инженерами Microsoft обеспечивалась поддержка сборки, исправления специфичных ошибок и разработки для платформы Windows. Для ветки 8.0 данную работу придётся проводить участникам из сообщества, заинтересованным в работе PHP в Windows.

Что касается PHP 7.3 и 7.4 для Windows, то компания Microsoft продолжит участие в их сопровождении до окончания официального двухлетнего жизненного цикла данных веток, а также будет помогать в исправлении уязвимостей в ветке PHP 7.2, время поддержки которой истекает в ноябре.


https://www.opennet.ru/opennews/art.shtml?num=53327

Вот и всё. Вот теперь точно пора перекатываться на что-то другое. РНР — официально всё. Конец эпохи. Но на что перекатываться непонятно. Змея так-то тоже уже всё, Даже Гвидо ъебался с поста тирана... nodejs вроде тоже погибает. Ржавый никак не взлетает. Чо остаётся-то? Дотнет с С#?
Ответы: >>1747123
Аноним 2020/07/10 13:40:55  №1747110 513
>>1747084
Это я то дегенерат? Ты сам понимаешь че несешь? Ты сначала SQL записываешь в виде JSON, потом по этому JSON'у с помощью query builder'а опять строишь SQL. Пиздец, какой же долбоеб.
Ответы: >>1747284
Аноним 2020/07/10 13:47:16  №1747123 514
>>1747106
Сколько у тебя проектов на windows?
Ответы: >>1747234
Аноним 2020/07/10 15:17:07  №1747192 515
>>1746138
Не слушай этого токсика. Yii2 - высохшая какашка, забудь про нее, Laravel - это хуяк-хуяк и в продакшен, Symfony - для больших крутых проектов, живущих долгие годы.
Ответы: >>1747203 >>1748829
Аноним 2020/07/10 15:40:04  №1747203 516
>>1747192
Ты понимаешь что у symfony и у laravel есть версии? Если проект на симфони 3.* версии это точно такой же высохший кал.
Если бы все кто начинал свой проект знали что он большой и крутой никакие хуяк-хуяк и в продакшен не нужны были бы.
Из всего твоего пассажа правильно только "Yii2 - высохшая какашка". Остальное высер джуна, который нихуя разработки не видел.
Ответы: >>1747239 >>1747350
Аноним 2020/07/10 16:18:41  №1747234 517
>>1747123
Ты не понимаешь, что дело не в проектах?! PHP под Windows больше работать не будет... Я, например, на винде могу в соседних папках иметь php5, php7, и все разных версий. Очень удобно, знаете ли. Linux с докером такого удобства не даёт. Опять же, под спермой я распаковал архив с РНР и запустил его, мне не надо ебать себе мозги с зависимостями. Сечёшь, маленький?
Ответы: >>1747278 >>1747284
Аноним 2020/07/10 16:26:18  №1747239 518
>>1747203
Symfony - почти всегда выбор продуктовых компаний, имеющих свой зоопарк программистов, которые заинтересованы в работе с актуальными технологиями, поэтому по-настоящему древние версии фреймворка в продакшене практически не встретишь. В отличие от Yii2/Laravel, которые правят балом в аутсорсе, где версии пакетов фактически замораживаются после сдачи проекта, так что вероятность встретить легаси на ларке не так уж и мала.

>Остальное высер джуна, который нихуя разработки не видел.
А вообще, иди нахуй.
Ответы: >>1747257
Аноним 2020/07/10 16:50:03  №1747257 519
>>1747239
>Symfony - почти всегда выбор продуктовых компаний
В скольких продуктовых компаниях ты работал? Можешь не называть конкретные названия, просто род деятельности и количество сотрудников.

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

>А вообще, иди нахуй
А вообще из того что пишешь можно сделать два вывода:
1) Ты никогда не работал в "большом крупном проекте"
2) Ты никогда не принимал решение какой фрефмворк в проекте использовать.
Аноним 2020/07/10 17:10:53  №1747278 520
>>1747234
bruh
>Synced folders enable Vagrant to sync a folder on the host machine to the guest machine, allowing you to continue working on your project's files on your host machine, but use the resources in the guest machine to compile or run your project.
Ответы: >>1747519
Аноним 2020/07/10 17:13:27  №1747284 521
>>1747234
>од спермой я распаковал архив с РНР
Если ты распаковываешь архивы с пхп то 8 версия тебе еще пару лет точно не пригодится. Майкрософт дали тебе wsl, пользуйся

>>1747110
>Ты сначала SQL записываешь в виде JSON, потом по этому JSON'у с помощью query builder'а опять строишь SQL. Пиздец, какой же долбоеб.

Ты даже и близко не понял о чем я, ты изначально хотел руками писать под каждую вариацию свой запрос, а потом решил ебануть один огромный sql под все нужды, а долбоеб я?
Ответы: >>1747336 >>1747519
Аноним 2020/07/10 18:10:29  №1747336 522
>>1747284
>ты изначально хотел руками писать под каждую вариацию свой запрос, а потом решил ебануть один огромный sql под все нужды
Это ты нихуя не понял, но влез в разговор.

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

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

Я уж не говорю о том что собрать более-менее сложный запрос это куча пхп кода и гемора. Удачи сбилдить вот такое https://dbfiddle.uk/?rdbms=postgres_12&fiddle=8616e7caabfa604f107cbc76aee31ae6 , а это семечки для OLAP, там запросы на три экрана могут быть. А дебажить это будет вообще сказочно, баги в таком объеме кода будут сто проц.

А еще весь этот код генерации запросов нужно где-то хранить. Готовый SQL запрос можно просто сохранить в базу, а вот QueryBuilder вермишель будет в коде, и каждый раз как нужно будет условие поменять придется ебаться с git flow или что там у вас используется.

И все это для чего? Для того чтобы выбрать в некоторых местах не конкретное значение, а все. А это можно сделать литерали в одну строчку SQL.
Ответы: >>1747353 >>1747624
Аноним 2020/07/10 18:13:36  №1747338 523
>Объявление свойств и методов класса статическими позволяет обращаться к ним без создания экземпляра класса. Свойство класса, объявленное как статическое, не может быть доступно посредством экземпляра класса (но статический метод может быть вызван).
в чем прикол такого подхода?и self?
Ответы: >>1747374
Аноним 2020/07/10 18:23:31  №1747350 524
>>1747203
>высохшая какашка
Новые хипстерские технологии точно такое же говно, только посвежее.
Вообще про это есть старая мудрая притча:
Однажды человек пришёл к мудрецу и сказал ему:
- О, мудрейший, я хочу жениться и выбираю девственницу.
На что мудрец задал ему всего лишь один вопрос:
- А почему ты выбираешь именно девственницу?
Человек ответил:
- Выбирая девственницу, я буду уверен, что моя жена добродетельна.
Тогда мудрец поднялся и вышел из комнаты. Вернувшись через некоторое время, он держал в руках два кусочка говна: один целый, другой надкусанный.
Старый мудрец предложил человеку попробовать по кусочку говна.
Юноша попробовал надкушенный кусочек говна - говно оказалось на вкус старым и несвежим. Тогда человек откусил немного от свежего кусочка - говно оказалось мерзкое и вонючее.
Человек недоуменно развёл руками:
- О, мудрейший, так какую жену мне надо выбрать?
Мудрец улыбнулся и ответил:
- Ты только что поел говна...


Вся суть.
Ответы: >>1747356
Аноним 2020/07/10 18:26:52  №1747353 525
>>1747336
>семечки для OLAP
>ебаться с git flow или что там у вас

Ясно, сисдамин в треде. Тебе рили наверное проще 100 методов разных сделать и потом поддерживать это следующие 3 года
Ответы: >>1747358
Аноним 2020/07/10 18:28:28  №1747356 526
>>1747350
Не ешь говна, есть проверенный временем php 4, не хипстерский, для олдов.
Ответы: >>1747359
Аноним 2020/07/10 18:29:28  №1747358 527
>>1747353
>Тебе рили наверное проще 100 методов разных сделать и потом поддерживать это следующие 3 года
В глаза ебешься? Я как раз против написания ста методов.
Ответы: >>1747380
Аноним 2020/07/10 18:30:07  №1747359 528
>>1747356
Это троллинг тупостью?
Аноним 2020/07/10 18:42:14  №1747374 529
>>1747338
У тебя есть класс Бентли. Создаешь у него есть статический метод "показать фотку меня на фоне бентли". Теперь ты можешь флексить, не имея бентли. Тебе не обязательно иметь бентли, чтобы флексить перед знакомыми. Тебе не нужен гараж для него и не нужно тратиться на бензин.
Ответы: >>1747385
Аноним 2020/07/10 18:45:15  №1747380 530
>>1747358
Так у сись по другому не получится.

Ну если серьезно, то в твоём же примере
>Как в sql передать в даннном месте запроса AND p.lastName = all
можно просто не указывать WHERE lastname, и угадай КАК это можно сделать?
Ответы: >>1747394 >>1747598 >>1747602
Аноним 2020/07/10 18:48:19  №1747385 531
>>1747374
прикольный пример,но нихуя не понятно.
мне показалось,это чтобы создать класс,который имеет персональное право пользоваться своими методами и свойсвами без клепания кучи объектов.Или как?
Ответы: >>1747392 >>1747402
Аноним 2020/07/10 18:54:58  №1747392 532
>>1747385
Короче, поясняю не как детсадовцам. Есть класс, есть у него статический метод, этот метод это по сути обычная функция под неймспейсом класса, то есть ты можешь написать Money::format без создания инстанса Money. Нахуя это нужно? В пыхе чтобы не ебаться с конфигом композера (хотя там букваьно 1 строчку дописать), можешь так описывать вспомогательные функции. Еще юзкейс это создание объекта чтобы сэкономить 1 файл. Например конструктор класса принимает 10 параметров, а у тебя на входе просто массив данных с этими параметрами, ты делаешь статический createFromArray(fromSomeObject) или еще какое-то говно, и руками потом из входного массива передаешь в конструктор данные, возвращаешь self или static, тут уж как душа ляжет
Аноним 2020/07/10 18:55:58  №1747394 533
>>1747380
Бля, ты еще один микрокодил?

Вот мои примеры, три запроса:

SELECT FROM table WHERE column = ?;
SELECT
FROM another_table WHERE column_a = 44 AND column_b = ?;
SELECT FROM third_table AS t
LEFT JOIN fourth_table AS f
ON f.foo = t.bar
AND f.column_a = ?
WHERE t.column_b = 'foo';

Сколько пхп кода нужно написать чтобы все три запроса преобразовать как ты предложил? Напиши пример, запросы простые хули там делов.
На SQL достаточно сделать так SELECT
FROM table WHERE column = IF (? = '', column, ?);





Аноним 2020/07/10 19:03:09  №1747402 534
>>1747385
>методами и свойсвами без клепания кучи объектов
Верно. Но при чем тут право? Просто есть методы и свойства, которые входят в сферу тематики этого класса.
Допустим ты в своем проекте высчитываешь сколько ты должен заплатить клиенту. После всех хитрых расчетов ты получаешь число с точностью до 16 цифр после запятой. В том же классе ты создаешь функцию для округления цисла до 2 знаков после запятой в меньшую сторону. Потом у тебя рождается еще два класса, где ты должен использовать эту функцию. Например расчет выплаты продавцу и поставщику. Не копировать же функцию везде. Тут появляется статический метод у класса, который ответсвеннен за валютные операции, скажем Currency, и у него появляется статический метод toLowerDecimal($amount, $precision = 2).
Ответы: >>1747433
Аноним 2020/07/10 19:04:08  №1747406 535
>>1747394
$query = "SELECT FROM table";
$queryArgs = [];
if ($argColumnB) {
$query .= " WHERE column b = ?";
$queryArgs[] = $argColumnB;
}

>Сколько пхп кода нужно написать чтобы все три запроса преобразовать как ты предложил?
Ну на один запрос примерно вот столько
Ответы: >>1747412
Аноним 2020/07/10 19:04:58  №1747408 536
>>1747394
Можешь создать представления в SQL, селектить оттуда и не ебаться.
Ответы: >>1747416
Аноним 2020/07/10 19:06:06  №1747412 537
>>1747406
А на все? У парня, которому я помогал было 16 запросов. А будет больше. А аналитические запросы могут быть пизда здоровыми. И зачем весь этот пхп код, когда сам SQL может эти проблемы решить?
Ответы: >>1747420 >>1747421
Аноним 2020/07/10 19:07:39  №1747416 538
>>1747408
Дядя, в запрос нужно подставить параметр. А если этот параметр не задан, то нужно проигнорить условие. Спор о том как это лучше сделать с помощью пхп или sql.
Ответы: >>1747426
Аноним 2020/07/10 19:10:14  №1747420 539
Ответы: >>1747442
Аноним 2020/07/10 19:11:43  №1747421 540
>>1747412
>И зачем весь этот пхп код, когда сам SQL может эти проблемы решить?
Абсолютно согласен. Если у тебя запросы на 200 строк селектят звонки клиентов по каким-то ебанутым законам то нахуй вообще еще абстракция какая-то. С другой стороны ты зашел в тред пхп, где 90% юзкейс запросов сводятся к SELECT * FROM articles LIMIT 10, я тебе и говорю как это делается в вебе, динамическое построение запросов. На голой пыхе это тоже дроч, поэтому и посоветовал либу подрубить, например можешь почитать https://www.doctrine-project.org/projects/doctrine-dbal/en/2.10/reference/query-builder.html#sql-query-builder , может зайдет
Ответы: >>1747442
Аноним 2020/07/10 19:15:40  №1747426 541
>>1747416
Данные получать запросами, красивости наводить php. Если ненужны фентифлюшки, то зачем пхп? Вот если честно, когда у меня спрашивают что не так с системой, мне запрос для анализа написать легче, чем в пхп страницу строить для них.
Аноним 2020/07/10 19:21:47  №1747433 542
>>1747402
> Но при чем тут право?
ну как объясняют,что класс-это типа шаблон,а объект-готовое изделие,их можно наклепать кучи.А в этом случае класс как самостоятельный элемент в себе ,как целая прога,котору можно запустить.Ну это я так по тупому понял
Аноним 2020/07/10 19:27:52  №1747442 543
>>1747421
Ты тред вообще не читаешь? Я прекрасно знаю как что делается в вебе и его окресностях. Я просто помогал другому анону правильно сделать сделать сервис построения отчетов, чтобы не писать тысячи строк кода. И тут набежали гении с query builder'ами, которые даже не удосужились разобраться о чем идет речь.

Вот запросы для примера >>1747420 >>1747394 тебе похоже нужно поебаться с доктриновским query builder'ом чтобы понять что он тут не эффективен. Тебе придется либо написать по методу на каждый запрос, либо очень сложный сервис поверх билдера. Гораздо проще написать raw sql запрос и просто выполнять его.
Ответы: >>1747452
Аноним 2020/07/10 19:37:29  №1747452 544
>>1747442
>Гораздо проще написать raw sql запрос и просто выполнять его.
Есть два стула: вот это SELECT FROM table WHERE column = IF (? = '', column, ?) и склеивание строк в пыхе, что ты выберешь?

>Гораздо проще написать raw sql запрос и просто выполнять его.
Пусть пишет, в любом случае ему это поддерживать

>Я просто помогал другому анону правильно сделать сделать сервис построения отчетов
При этом ты решил для примера вбросить запросы, которые кроме как на постгре невозможно сделать, чтобы показать что абстракция над бд не работает?
Ответы: >>1747458
Аноним 2020/07/10 19:44:13  №1747458 545
>>1747452
>Есть два стула: вот это SELECT FROM table WHERE column = IF (? = '', column, ?) и склеивание строк в пыхе, что ты выберешь?
Я выберу однозначно первое. SQL будет в разы короче чем orm лапша, будет меньше кода, меньше багов и проще поддержка.

>При этом ты решил для примера вбросить запросы, которые кроме как на постгре невозможно сделать, чтобы показать что абстракция над бд не работает?
Я уже заебался повторять одно и тоже. Вот тебе ПРОСТЫЕ запросы >>1747394 таких запросов будет штук двадцать. Ты блядь для каждого будешь городить пхп код с проверками и условиями?
Ответы: >>1747506
Аноним 2020/07/10 20:32:05  №1747506 546
>>1747458
Конкретно для твоих запросов нет. Но если запросы отличаются просто набором разных WHERE то конечно это делать лучше через пыху. Тут еще какая штука, ты не тот анон, который изначально спрашивал совета, ты не ебешь какие у него там вообще запросы, что можно вынести в общее, а что нельзя, ты сейчас просто гнешь свою линию "делаем всё на скл", а у него по факту может оказаться 20 разных запрос это 20 разных фильтров для запроса, а может и не оказаться, хуй его знает
Ответы: >>1747520
Аноним 2020/07/10 20:45:17  №1747519 547
>>1747278
а ты вагрант юзал хоть раз? под спермой это боль, например. Поднимать на хосте ВМ с прыщами, чтобы в ней держать php с проброшенной папкой... бля, это перебор.

>>1747284
подскажи наиболее простой способ. архивы с windows.php.net с незапамятных времён были самой простой формой установки php на сперме.
Аноним 2020/07/10 20:45:57  №1747520 548
>>1747506
У него ОТЧЕТЫ. Заполняешь фильтры, получаешь табличку. Я на этой хуйне собаку съел, и для меня рекурсивный запрос, от которого ты пригорел, обыденность. Эта хуйня может быть длиной в три экрана и меняться по пердежу манагера пять раз в день, ты просто заебешься коммиттить эти правки через обычный воркфлоу.
Аноним 2020/07/10 21:39:42  №1747598 549
>>1747380
Лол, 100500 постов выше мне анон подсказал про оператор sql <=>, что мне и потребовалось. А далее уже вы сами между собой чет качаете права.
Я же скажу - что конечно не хочу делать на каждый отчет свой метод. Ранее я сделал гибридную схему, где в общем отчеты генерятся в ожном методе, а особо выебонистые я уже в одельный класс запихивал. Хуйня в том что логика "генерирования" получилась запутанной, я два месяуа не трогал и все к хуям забыл.
100 методов это не решение.Но и генерирование - тоже та еще тема.
У нас запросы sql могут быть рили в полтора листа a4.
Ответы: >>1747660
Аноним 2020/07/10 21:40:22  №1747600 550
>>1746693

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

Однако, можно делать классы для каких-то общих вещей.

Вполне нормально делать на каждый отчет свой класс, чтобы не было единого класса-монстра. Они могут реализовывать какой-то общий интерфейс, с методами вроде "получить список допустимых параметров формы" или "сгенерировать отчет". Естественно, "список параметров формы" стоит тоже сделать объектом.

interface ReportInterface {
getFilterParams(): FilterParamsList,
buildReport(FIlter $filter): Table
}

Главный подвох здесь - вдруг тебе завтра понадобится какой-то отчет, который состоит не только из таблицы, а из 2 таблиц с тремя графиками? Как его засунуть в Table? А никак не засунуть, придется переделывать интерфейс и все остальные классы.

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

Строить SQL запросы по частям и по условиям удобно с помощью Query Builder, в Доктрине, например, он есть.

Для форм можно взять готовую библиотеку вроде Symfony Forms, или навелосипедить что-то свое.

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


Ответы: >>1747617
Аноним 2020/07/10 21:42:52  №1747602 551
>>1747380
>>можно просто не указывать
>> WHERE lastname
Я не могу не указывать, точнее могу конечно, - дербаня sql как строку, но тогда генерация запроса, с учетом подстановки из вэб формы данных превращается в полный бардак, потому что водном запросе мне нужно иметь возможность получить и отдельные значения, и все значения + null не меняя самой строки sql запроса.
Аноним 2020/07/10 21:48:13  №1747610 552
>>1746814

Если формы однотипные, можно их генерировать из списка параметров. То есть в классе отчета описываешь, какие есть фильтры и какого типа, и на основании этого генерируешь например объект формы Symfony Form.

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

Если формы хитрые, в несколько строк и колонок, с подписями, то есть 2 варианта:

- добавить кастомные атрибуты к Symfony Forms, и использовать их для вывода
- делать на каждую форму кастомный шаблон для ее вывода

Твои варианты, по моему неудачные:

-JSON - непонятно, зачем он нужен, когда форму можно описать с помощью Symfony Forms гораздо нагляднее
- HTML в БД - это вообще ад, у тебя будет код построения отчета в файлах, а HTML с формой отдельно в базе. Забудь про такие идеи

Что касается аякса, то он может быть очень простой: при изменении полей формы и нажатии кнопки "Построить отчет" отправляем запрос на сервер, тот строит отчет, и возвращает HTML, который яваскрипт вставляет на страницу. Не надо ничего тут усложнять.

Ответы: >>1747621
Аноним 2020/07/10 21:52:48  №1747617 553
>>1747600
Спасибо за советы.
Построители запросов из ORM я юзать врядли буду, потому что под нужную задачу построить sql - запрос не самое простое дело. База в десятки миллионов записей в отдельных таблицах, а общее количество таблиц близко к 600, и всему этому говну лет 6,и спроектировано оно было как говорили более компетентные люди через сраку.
Иногда такие запросы выходят что хуеешь о того что это вообще работает. 20 объединений - норм тема.
Ответы: >>1747660 >>1748832
Аноним 2020/07/10 21:55:00  №1747621 554
>>1747610
>>- HTML в БД - это вообще ад, у тебя будет код построения отчета в файлах, а HTML с формой отдельно в базе. Забудь про такие идеи
Да в сущности я в серьез о таком не думал, слишком деревянно.
Аноним 2020/07/10 21:57:37  №1747624 555
>>1746962

Вообще, ты не совсем прав. Операторы сравнения при наличии NULL возвращают NULL вместо FALSE и это может быть неожиданно.

Например: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=e995db1b270074d9b5cf03e8e21913f5

И еще один подвох: если в NOT IN среди значений есть NULL, то он может тоже вернуть NULL: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=111f1189011651c61f603fc7f69567a9

>>1747336

Писать 100 разных классов не так и плохо, если в них разный код. В чем проблема?

Отчеты там с фильтрами, и их по моему удобнее строить на стороне PHP, там хотя бы есть Query Biulder, а чем ты его заменишь в SQL? Не, чистый SQL тут не решит проблему.
Ответы: >>1747660
Аноним 2020/07/10 22:33:44  №1747660 556
>>1747624
>Операторы сравнения при наличии NULL возвращают NULL вместо FALSE и это может быть неожиданно.
Еще один жопочтец. О том и речь, что есть специальные операторы NULL safe, которые МОГУТ сравнить с NULL. Ты вообще не открывал мои запросы?
Вот твой пример пофикшенный https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=4aba9a677b80d648b0bcfab6c7551c75

>И еще один подвох: если в NOT IN среди значений есть NULL, то он может тоже вернуть NULL
На параметры, которые передаются в запрос повлиять можно, то что передан в IN() NULL это обсер программиста, а если NULL будет в таблице ты на это повлиять никак не можешь.

>Писать 100 разных классов не так и плохо, если в них разный код. В чем проблема?
Для бешеной собаки сто километров не круг. Пиши идусский код, кто тебе запретит.

>Отчеты там с фильтрами, и их по моему удобнее строить на стороне PHP, там хотя бы есть Query Biulder, а чем ты его заменишь в SQL?
Все, идите нахуй. Каждый заходящий в тред, нихуя не читая о чем идет речь, высирает одну и туже мантру.
Читай сука как охуенно удобно ебашить запросы query builder'ом >>1747598 >>1747617. Пиздец. Желаю тебе и остальным жопочтецам ебашить по сто классов, в которых билдятся запросы "в полтора листа А4"

Все. Я сгорел нахуй. Вам тупороги баранм объяснить что-то можно только заставив вас билдить мало мальски сложный запрос https://dbfiddle.uk/?rdbms=postgres_12&fiddle=8616e7caabfa604f107cbc76aee31ae6 . И тогда до вас доходит: бля а я думал там селект трех полей сбилдить надо, чет сложно, мой QueryBuilder CTE не поддерживает.

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

Аноним 2020/07/11 07:32:51  №1747780 557
Чет не пойму как Gate в ларавел работает.
В сервис провайдере:

Gate::define('test', function ($user) {
return true;
});

в контроллере

if (Gate::denies('test')) {
echo 'Allowed';
} else {
echo 'Not Allowed';
}

И вне зависимости от того что я true/false из Gate::define возвращаю - в контролере всегда у меня echo 'Allowed';
Ответы: >>1747787
Аноним 2020/07/11 07:54:54  №1747787 558
>>1747780
Разобрался. Эта поебень работает только если пользователь зарегистрирован.
Аноним 2020/07/11 15:07:31  №1748344 559
аноньчики помогите. только начал изучать ПХП, столкнулся с такой проблемой не работают функции mb_* , нагуглил (windows), что нужно установить mbstring и для этого в php.ini(у меня не было изначально этого файла, я его создал и оставил пустым) прописал вот это extension=php_mbstring.dll. Результата=0
Ответы: >>1748397
Аноним 2020/07/11 15:59:33  №1748397 560
>>1748344

Возможно, ты создал php.ini не в той папке, где надо. Ты можешь увидеть, какой файл php.ini использует PHP, запустив такой скрипт:

<?php

phpinfo();

Там где-то в начале будет написан путь к используемому php.ini.
Ответы: >>1748414
Аноним 2020/07/11 16:18:33  №1748414 561
php.png (1, 427x43)
43x427
>>1748397
вот я и создал этот php.ini который сейчас Loaded Configuration File
Ответы: >>1748417
Аноним 2020/07/11 16:28:02  №1748417 562
>>1748414

А сам файл php_mbstring.dll в папке PHP есть?
Ответы: >>1748423
Аноним 2020/07/11 16:34:51  №1748423 563
>>1748417
да, есть. проблему я решил. запустил через командную строку, там отображается ошибка подключения модуля. он почему то подключает по пути C:/php/ext а у меня установлен в С:/php7/ext я хз почему он берет именно такой путь и где это изменять, но все решилось переименовывание папки. Спасибо большое анон, что откликнулся
Ответы: >>1748571
Аноним 2020/07/11 17:00:03  №1748446 564
A как экранировать часть запроса к MySQL, чтобы он не окружался скобками? Например, чтобы всунуть его внутрь запроса LIKE '%:search%'? Подходящего PDO::PARAM_ вроде не нашел.
Аноним 2020/07/11 17:09:04  №1748457 565
image.png (5, 386x42)
42x386
О, догадался
Ответы: >>1748661
Аноним 2020/07/11 19:02:40  №1748571 566
Аноним 2020/07/11 20:18:53  №1748661 567
>>1748457
А если в $search будет что-то вроде '50%'?
Ответы: >>1748730 >>1754910
Аноним 2020/07/11 21:40:00  №1748730 568
>>1748661
Ну все, пиздец тогда.
Аноним 2020/07/12 05:24:20  №1748829 569
>>1747192
Ну да, я работаю на симфони - и тока крупные проекты всё. Хотя не понимаю почему, я и на ларке писал, ну тоже годный фреймворк.
Но на симфони прям легко писать любые проекты, даже хоть обычный блог, симфа необязательно для крупного проекта.
Ответы: >>1750054
Аноним 2020/07/12 05:35:26  №1748832 570
>>1747617
Бери ОРМ с билдерами и не мучайся, и кэшируй просто. Доктрина справится с любым количеством запросов и джойнами. Если так хочется sql-запросы чистенькие, то можешь из доктрины их и забирать, она всё за тебя сделает.
Аноним 2020/07/12 08:39:12  №1748904 571
>public function write(ShopProduct $shopProduct)
{
я так и не понял,что это.Где прочитать подробно?
Ответы: >>1749142
Аноним 2020/07/12 09:15:18  №1748921 572
Аноним 2020/07/12 11:40:18  №1749142 573
>>1748904
Метод? В скобках - сервис-контейнер, DI. Нужный класс подключаешь его в use сверху, потом засовываешь его либо в конструктор, либо в метод, и пользуешься им через $shopProduct
Ответы: >>1749168
Аноним 2020/07/12 11:49:50  №1749168 574
>>1749142
В скобках - аргумент функции. Ну хорошо, что сейчас все поголовно знают о ДИ, но нахера этим знанием обычные аргументы то перекрывать? Хоть через ДИ его инжектнут, хоть ручками - это просто аргумент останется.
Аноним 2020/07/12 13:56:07  №1749370 575
зачем нужно ООП?
как заготовка для другой проги или как огромная функция внутри проги?
Ответы: >>1749627 >>1749644 >>1749803
Аноним 2020/07/12 17:30:51  №1749627 576
Аноним 2020/07/12 17:46:57  №1749644 577
>>1749370
Зачем нужны заглавные буквы?
Как заготовка для другого предложения или как огромные символы внутри предложения?
Аноним 2020/07/12 19:42:30  №1749739 578
Аноны, как в ларавел сделать или в однгом роуте?
типа Route::get('/', MainController@Main);
типа Route::get('/main', MainController@Main);
только одной строкой
пробовал так
типа Route::get('/{main}', MainController@Main)->where('main', 'main|[""]');
ночет не получилось
Ответы: >>1749744
Аноним 2020/07/12 19:44:36  №1749744 579
>>1749739
лол, получилось так

типа Route::get('/{main?}', MainController@Main);
А ошибка вообще лезла от отдельного роута, хуй пойми как он вообще по этому маршруту вылазит.
Аноним 2020/07/12 21:26:42  №1749803 580
>>1749370

ООП (объектно-ориентированное программирование) - это подход к написанию кода с помощью объектов. У объекта есть свойства и методы - функции для работы с объектом. Ну например, мы можем в магазине сделать объекты "Товар", "Скидка", "Заказ", у товара сделать свойства вроде "название", "цена", и метод "рассчитать стоимость со Скидкой".
Аноним 2020/07/12 21:32:55  №1749810 581
>>1731888 (OP)
(Сделать ответ на шапку)
Здравствуй ОП, можешь проверить задачку про расчет маршрута/навигатор/поиск пути https://ideone.com/q1Uk29 . Решал, не как было предложено подсказками рекурсией, а с помощью алгоритма Дейкстры.
Еще есть вопрос по алгоритму Дейкстры, соседние узлы рассматриваемого узла можно же можно рассматривать по порядку, независимо от того какой цены ребро ведет к ним? Я собственно так и делал.
А так же, я решил как было предложено в твоем учебнике с помощью рекурсии вышло более элегантно https://ideone.com/ukgSft . Прошу пожалуйста это тоже глянуть. Мне тут не совсем нравится моя рекурсия. Я хотел, чтобы варианты возможных путей возвращались только в конце работы функции по завершению всего стека вызовов. У меня же по иному, присутствуют промежуточные возвраты еще не всех вариантов.
Ответы: >>1749957 >>1762614
Аноним 2020/07/13 05:35:28  №1749957 582
>>1749810
Чувак, скажи - я могу написать магаз, но вообще не умею в задачи на нохождение пути/расчет маршрута, подобные той что ты написал. Хочу понемногу приобщаться.
Это теория графов? С чего начать?
Ответы: >>1750789 >>1750793
Аноним 2020/07/13 06:13:52  №1749970 583
>>1746172
Бля, большое спасибо!
Аноним 2020/07/13 09:04:37  №1750054 584
>>1748829
Симфа покрывают любой масштаб, потому что фреймворк построен на конфигурациях. Ларку с некоторыми оговорками можно понимать, как преднастроенный конфиг Симфони, когда выбраны определенные паттерны для решения определенных проблем.
Ответы: >>1750057
Аноним 2020/07/13 09:07:45  №1750057 585
>>1750054
а можно на голом пыхе написать
Ответы: >>1750147
Аноним 2020/07/13 10:56:04  №1750147 586
>>1750057
в нулевых так и писали
Аноним 2020/07/13 15:07:06  №1750444 587
как лучше установливать аргументы в методы,через сеттеры или назначив напрямую во время вызова через = ?
Ответы: >>1754909
Аноним 2020/07/13 15:22:45  №1750459 588
почему мой эксперимент провалился?
Ответы: >>1750464 >>1750494 >>1750534
Аноним 2020/07/13 15:27:16  №1750464 589
>>1750459
сука
>так как статические методы вызываются без создания экземпляра класса, то псевдопеременная $this недоступна внутри метода, объявленного как статический.
Аноним 2020/07/13 15:49:24  №1750494 590
>>1750459
У тебя два раза public написано, и вообще ты какую-то хуйню творишь
Ответы: >>1750502
Аноним 2020/07/13 15:55:32  №1750502 591