Программирование

Ответить в тред Ответить в тред
Клуб изучающих PHP#118 /php/ Аноним 23/06/20 Втр 18:42:39 17318881
php-noob-1.png 33Кб, 500x500
500x500
cat-cafe-osaka.jpg 157Кб, 1024x683
1024x683
cat-sad.jpg 194Кб, 1024x768
1024x768
welcome-to-php.png 188Кб, 853x480
853x480
Здесь мы изучаем язык 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? — Да, однозначно. Посмотри любую вакансию.
Оформление кода Аноним 23/06/20 Втр 18:44:57 17318912
grammar.png 56Кб, 500x644
500x644
Код должен выглядеть аккуратно и оформляться, как принято. Потому, что другой человек, который будет смотреть твой код, вряд ли обрадуется, когда ему придется разбирать слипшиеся строчки, разбросанные в беспорядке скобки и написанные русскими словами названия переменных. Особенно плохо будет если это, например, код тестового задания, которое ты сделал, чтобы устроиться на работу. Если он будет неряшливым, это будет большой минус.

Для этого достаточно вставить код на 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/
Аноним 23/06/20 Втр 18:46:40 17318953
В прошлом треде я постарался ответить на все вопросы, но если вдруг кого-то пропустил, то напомните о себе тут.
Аноним 23/06/20 Втр 19:45:14 17319984
>>1731895
да, хорошо, помоги с битриксом?
копипаста с того треда
двач, не обоссывай а лучше подскажи. как реализовать на сайте мультирегиональность? типо чтобы когда я захожу на abu.mysite/ меня рероутило например на abu.mysite/moscow и где будет соответственно шаблон с шапкой " Привет, анон из Москвы " и соответственно метатегами. ну и дальше чтобы вложенность была в стиле abu.mysite/moscow/catalog/dragon_dildo
Аноним 23/06/20 Втр 19:54:25 17320165
>>1731998

Увы, не разбираюсь в Битриксе. Могу только посоветовать поискать решение в мануале или интернете. Поиск по "битрикс мультирегиональность" дает какие-то ответы.
Аноним 23/06/20 Втр 20:09:11 17320286
>>1732016
>Увы, не разбираюсь в Битриксе
вот и я так же, а на галере запрягли делать этот кал
>Поиск по "битрикс мультирегиональность" дает какие-то ответы.
какие? купить платный модуль или же там где одна вода налита без конкретики?
Аноним 23/06/20 Втр 22:09:03 17321437
demo.png 101Кб, 771x619
771x619
Сделал небольшое расширение Firefox (но может и под Хромом заработает, стандарт web-extensions общий) для экспериментов с более удачным отображением тредов - Раскатыватель. Он группирует диалоги в тредах вместе, что упрощает просмотр больших тредов: https://github.com/codedokode/thread-unroll

Перед установкой расширений, особенно немодердированных, как это, советую изучить исходный код и убедиться в отсутствии вредоносных функций.
Аноним 24/06/20 Срд 10:42:00 17323848
95ece8274cc2466[...].jpg 113Кб, 736x1592
736x1592
Вопрос из предыдущего треда: зачем добавили атрибуты в пхп8 ?
Я например не пользую симфони и доктрину не люблю, какое для меня практическое применение атрибутов?
Аноним 24/06/20 Срд 11:17:59 17324009
>>1732384
Чем смотреть на доктрину посмотри лучше на другие языки (на вскидку джава, шарп, питон), где аналогичное применяется и пиздец как распространено. Так и найдешь примеры оторванные от доктрины.
Аноним 24/06/20 Срд 12:19:29 173243010
>>1732384
Вот тебе самый очевидный пример:

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

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

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

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

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

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

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

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

Желания пробовать Eloquent: API Resources нет, потому что, внезапно, это хуйня основана на самих моделях, которые, как я уже выяснил, полное говно и не выполняют те задачи, которые мне от них нужны.
Аноним 24/06/20 Срд 14:47:46 173258312
>>1732568
Хуйней ты занимаешься. Нахуя тебе вообще JSON? У тебя апи?
Аноним 24/06/20 Срд 15:19:32 173261013
>>1732583
Говорил уже, чтобы у меня был объект, точно соответствующий жсон-ответу контроллера.

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

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

Контроллеры высирают не абы что, а только dtoObject->toJson().
Соответственно на другой стороне DtoObject::fromJson().
Аноним 24/06/20 Срд 20:25:54 173293822
Аноним 25/06/20 Чтв 00:37:12 173313623
>>1732568
Пишешь за два часа сервис, который обновляет нужные свойства и отношения у объекта, в чем пробелема? Ты за 20 дней додумался только ишью поискать на гитхабе вместо того чтобы решить свою задачу по сути за один вечер
Аноним 25/06/20 Чтв 01:25:45 173318824
>>1732568

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

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

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

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

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

Аноним 25/06/20 Чтв 01:30:02 173319225
>>1732384

Если ты не используешь эти библиотеки, то скорее всего никак они тебе не пригодятся. Они нужны для добавления информации к классам и методам.
Аноним 25/06/20 Чтв 01:30:11 173319326
Почему этот код выводит $name вместо имен?

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

foreach ($person as $name) {
echo 'Привет {$name}';
}
Аноним 25/06/20 Чтв 02:01:51 173320627
>>1733193
Гугли "конкатенация".
Аноним 25/06/20 Чтв 02:03:27 173320728
>>1733193
Кавычки другие возьми
Аноним 25/06/20 Чтв 02:54:10 173322129
Сложно ли перекатываться на другой язык, когда уже ознакомлен со всякими принципами программирования и собственно бекенда? Пока что еще вкатываюсь в пхп, но пока что уж очень смущает что средняя зарплата пхпшника с опытом - 30 тысяч рублей, при том что каждой фронтенд макаке без опыта сходу чуть не 100к предлагают. НодЖеЭсеры совсем миллиарды получают.
Аноним 25/06/20 Чтв 04:15:57 173325630
>>1733221
А с какими принципами ты ознакомлен? Что может знать php программист о структурах данных, например? Если он в принципе может работать только с хэш таблицами.
Аноним 25/06/20 Чтв 08:57:26 173330031
>>1732430
И если у меня для одного типа $string должен быть короче десяти а для другого нет потому что это Bar с разными правами в системе. В итоге хрень
Аноним 25/06/20 Чтв 09:17:43 173331232
MariaDB как mysql коннектится?
Аноним 25/06/20 Чтв 09:21:49 173331833
>>1733300
Хрень у тебя в башке.

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

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

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

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

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

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

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

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

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

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

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

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

Я все это не от пизды говорю, в больших приложениях действительно удобнее, чтобы все это было разделено.
Аноним 25/06/20 Чтв 11:31:57 173339441
>>1733386
Научись уже использовать докер
Аноним 25/06/20 Чтв 11:37:20 173340042
1398457346272.jpg 25Кб, 550x550
550x550
>>1733391
Ах, ну да, и еще способ сериализации - тоже вещь отдельная и желательно тоже не должна быть привязана ко всему остальному.
То бишь, DTO не должен знать о том, как он сериализуется.
Аноним 25/06/20 Чтв 11:38:14 173340243
>>1733394
Я могу запустить laravel в докере, но не понимаю как вообще устроен процесс разработки на локали в докере. В основном все руководства о том как запускать уже готовое. Что и где почитать о ворк флоу в докере?
Аноним 25/06/20 Чтв 12:56:49 173350544
>>1733402
>В основном все руководства о том как запускать уже готовое
Ты походу как-то не туда гуглил.

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

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

Нет никакой разницы, на "локали" ты это делаешь, или нет.
Происходящее снаружи контейнеров приложение докера не ебет вообще, оно даже не знает ничего о хост-системе.
Аноним 25/06/20 Чтв 12:57:51 173350745
>>1733505
Ну и обычно тебе дохуя настраивать не нужно, потому что ты за основу берешь один из образов, где уже почти все, что тебе нужно, настроено.
Например, тот же образ php, поэтому тебе не надо вручную устанавливать, компилировать и настраивать пых.
Аноним 25/06/20 Чтв 13:02:18 173351246
>>1733505
>>1733507
Код где писать, не в контейнере же? Как то же надо пробрасывать код из хоста в контейнер, вот это вот всё.
Аноним 25/06/20 Чтв 14:12:39 173357247
>>1733207
Да точно, совсем забыл что одинарные не видят переменные
Аноним 25/06/20 Чтв 14:12:58 173357348
>>1733206
И причем здесь конкатенация
Аноним 25/06/20 Чтв 15:36:28 173363849
>>1733221
>средняя зарплата пхпшника с опытом - 30 тысяч рублей
Где ты такие зарплаты нашел?
Аноним 25/06/20 Чтв 15:38:49 173363950
>>1733512
Пиздуй уже читать учиться
Аноним 25/06/20 Чтв 16:27:28 173367151
>>1732757
Блять, Symfony Serializer пытается хранить таймзону DateTime как смещение часов, вида "+03:00".

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

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

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

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

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

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

>active record
Паттерн, согласно которому создание экземпляра класса равнозначно созданию/получению строки из БД, его изменение - изменению строки.
>data mapper.
Я этот термин вообще не употреблял.
Аноним 25/06/20 Чтв 16:48:28 173369555
>>1733672
Возможно, тебе следует активировать нужные модули в php.ini
Аноним 25/06/20 Чтв 16:50:39 173369756
>>1733693
Половина тобой написанного чушь. Я просто устал ебашить простыни по пол страницы.
Аноним 25/06/20 Чтв 16:58:28 173370457
>>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.
Аноним 25/06/20 Чтв 16:58:56 173370558
>>1733697
Что конкретно я не так сказал?
Твои выпуки типа "Поверь, я знаю о чем говорю" и "Половина тобой написанного чушь" можешь оставить при себе, потому что там не содержится никакой конкретной информации.
Аноним 25/06/20 Чтв 17:01:03 173370959
>>1733705
Мне лень писать, это хорошо если в один пост влезет, а ты все равно не читаешь нихуя. Если тебе действительно интересно я тебе за десять минут объясню в чем ты ошибаешься https://дискорд.gg/3aVySY6
Аноним 25/06/20 Чтв 17:01:42 173371060
>>1733704
Возможно, php -m выдает только те модули, что были скомпилированы вместе с пхп, а не установлены отдельно.
Ты в пхп.ини смотрел? Раскомментировано возле нужных модулей?
Аноним 25/06/20 Чтв 17:03:06 173371261
>>1733709
Рассказывай здесь, нахуй мне всралось ходить по твоим говноссылкам
Аноним 25/06/20 Чтв 17:10:34 173371662
>>1733221
>средняя зарплата пхпшника с опытом - 30 тысяч рублей
На удаленке дают 80-150к мидлу (3 года опыта)
В дс немного больше
Аноним 25/06/20 Чтв 17:11:29 173371863
>>1733712
Ты не знаешь что такое дискорд? Зайдешь в канал, послушаешь и выйдешь, делов на десять секунд.
Аноним 25/06/20 Чтв 17:15:22 173372064
>>1733710
>Возможно, php -m выдает только те модули, что были скомпилированы вместе с пхп
Похоже что так

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

Спасибо за подсказку.
Аноним 25/06/20 Чтв 17:16:21 173372465
>>1733718
Там 2 чела утром было. Тут народу больше. Так что пиши здесь.
Аноним 25/06/20 Чтв 17:18:15 173372766
>>1733724
И? Причем тут количество? Ты понимаешь что я на этот пост потрачу минут сорок. Не нравится дискорд, давай что тебе нравится слак, зум, тимспик.
Аноним 25/06/20 Чтв 17:22:29 173373067
мультирегиональность кун снова в треде
анонсы, подскажите мне как реализовать такой момент. допустим вот мой сайт пашет только на 5 городов. я определяю что юзер например зашел с волоколамска. но моего сайта для его города нет, ближайший к нему это москвабад. как мне это обработать чтобы срероутить на московский сайт?
Аноним 25/06/20 Чтв 17:25:58 173373468
>>1733730
Если в россии, то ищи по фиасу.
Аноним 25/06/20 Чтв 17:30:13 173373769
>>1733727
>Ты понимаешь что я на этот пост потрачу минут сорок.
Вот и кидай его сюда. Больше людей прочитает. Ради одного поста никто в дискорд не пойдет.
Аноним 25/06/20 Чтв 17:32:55 173373970
>>1733737
Ой да иди в пизду, я помочь тебе хотел. Сиди дрочи свои data value entity, потом все равно выбросишь код нахуй.
Аноним 25/06/20 Чтв 18:22:44 173379771
>>1733256

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

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

А вот промежуточные объекты между моделью и JSON, на мой взгляд, не нужны.
Аноним 25/06/20 Чтв 18:37:50 173382073
ОП проверь пожалуйста задачку про сдачу банкомат, не решаемую через жадный алгоритм, взятая из твоих уроков. Первая задача http://phpbook.ga/l1/mou-ikkai.html , также прикрепляю картинку . Пол года назад ты давал советы по решению и оптимизации. Так что, следуя всем твоим советам, прежде, чем приступать к решению этой задачи сделал рекурсивную генерацию комбинацию из n чисел принимающие значения от 1 до k https://ideone.com/6t9Tsn . А далее решал уже саму задачу, через много попыток и вариантов решений, вот мой конечный вариант задачи https://ideone.com/KB7yZi .
Аноним 25/06/20 Чтв 18:39:07 173382474
>>1733734
а у них есть свои api ? чтобы я мог послать адрес откуда зашел и он мне вывел ближайшие города ко мне?))
Аноним 25/06/20 Чтв 18:39:31 173382575
Снимокс.PNG 116Кб, 843x798
843x798
Аноним 25/06/20 Чтв 18:45:45 173383076
>>1733797
И нахрен ты высрал рандомную статью? Я задал два конкретных вопроса, от ответа на которые зависит будет ли тебе легко сменить язык. Тебе есть что на них ответить?
Аноним 25/06/20 Чтв 18:56:01 173383777
>>1733739
Запиши и скинь mp3 сюда. Ты понимаешь, что ты просишь регистрироваться в каком-то левом парашном сервисе?
Аноним 25/06/20 Чтв 19:03:20 173384378
>>1733837
Ты блядь издеваешься? Какой сервис для тебя не "левый" и не "порашный"? Ты с работодателем на карантине через что общаешься?
Аноним 25/06/20 Чтв 19:05:55 173384579
>>1733843
Просто берешь и кидаешь сюда прямую ссылку на mp3 без своих маня-сервисов.
>Ты с работодателем на карантине через что общаешься?
Телеграм (и то зарегался именно для этой цели).
Аноним 25/06/20 Чтв 19:07:06 173384780
>>1733845
Ну ты слишком параноик даже для бекендщика.
мимо
Аноним 25/06/20 Чтв 19:09:29 173384981
>>1733845
>маня-сервисов
Еще раз, какой сервис голосового общения не "маня"? Мне там зарегаться десять секунд.
Аноним 25/06/20 Чтв 19:10:52 173385082
>>1733849
Любой сервис "маня". Про файлообменники не слыхал?
Аноним 25/06/20 Чтв 19:11:54 173385183
Аноним 25/06/20 Чтв 19:14:12 173385384
>>1733318
Как ты тип из того же объекта вытащишь?
Аноним 25/06/20 Чтв 19:18:03 173385785
>>1733853
Это правила валидации. Ты их задаешь до выполнения программы. Например тип "А" не должен быть длиннее 10, а тип "Б" не должен быть длиннее 15. Валидатор работает через рефлексию, и в нем ты можешь узнать тип объекта.
Аноним 25/06/20 Чтв 19:19:27 173385986
>>1733843
Ты че не понял? Никто ради тебя не будет лезть в группы. У меня есть и дискорд и телега, и в слаке я зареган, но мне нахой не нужно идти к тебе в группу, у меня и без того есть несколько десятков групп, где сотни и тысячи человек сидят. Или кидай сюда или досвидос.
Аноним 25/06/20 Чтв 19:22:51 173386287
>>1733859
Ну тогда бери свой дискорд, клади в свою телегу и катись к хуям. Пиздец, человеку предложили постратить свое время чтобы помочь, а он какие-то ебанутые требования выдвигает. Какие-то мп3, какие-то файлообменники, что несет вообще охуеть.
Аноним 25/06/20 Чтв 19:29:25 173386788
>>1733862
Ты походу думаешь, что обладаешь сокровенными знаниями? Какие есть основания доверять тебе? Я не знаю твой опыт. Если выбирать где спросить совета, то я выберу зайти в телеграм канал, где много опытных людей и там спросить.
Аноним 25/06/20 Чтв 19:31:49 173386989
>>1733867
Так а нахуй ты сюда тогда приперся? В телеграмме тебе в двух словах все объяснят.
Аноним 25/06/20 Чтв 19:33:53 173387190
>>1733869
С месяц назад в телеге в пхп конфе на недельку забанили чувака, который считал, что у dto должно быть поведение. В больших конфах срачи всегда так заканчиваются. Такое себе.
мимо
Аноним 25/06/20 Чтв 19:35:50 173387291
>>1733871
А то я не знаю. Этого додика и так уже походу пару раз банили. Он же поехавший.
Аноним 25/06/20 Чтв 19:36:20 173387492
>>1733869
Аналогичный вопрос могу задать. Я здесь потому что могу. Про модель ты не со мной спорил.
Аноним 25/06/20 Чтв 19:37:47 173387793
>>1733874
>Если выбирать где спросить совета, то я выберу зайти в телеграм канал, где много опытных людей и там спросить.
Спрашивает на дваче.
Аноним 25/06/20 Чтв 19:43:39 173388194
>>1733877
Ты тупой? Я тебе сказал, что про модели я не участвовал в разговоре вообще. Хотел зайти в дискорд, которй ты написал, думал там движуха, а там полторы калеки. Мне было интересно что ты там высрешь, поэтому сейчас я написал тебе, что пиши здесь, никто в твои группы пустые не пойдет. Understand?
Аноним 25/06/20 Чтв 19:45:02 173388395
Аноним 25/06/20 Чтв 19:47:09 173388496
>>1733881
Ну конечно она пустая, она блядь для одного разговора сделана.
Аноним 25/06/20 Чтв 19:47:31 173388597
Screenshot from[...].png 30Кб, 563x397
563x397
Аноним 25/06/20 Чтв 19:56:18 173389598
>>1733885
там перл 7 анонсировали
Аноним 25/06/20 Чтв 20:18:46 173391599
Аноны , где почитать про микросервисы доступным языком?
Умею пхп и ноду, на ларавел запилил не сложный магазин. Как мне к ПХПларе привязать ноду как сервис, чисто ради опыта?
Хочу немного разобраться в вопросе, где можно почитать? Да и ноду попрактиковать нужно, уже месяц не прикасался.
Аноним 25/06/20 Чтв 20:21:35 1733916100
Аноним 25/06/20 Чтв 20:26:10 1733917101
>>1733916
Я его английский не вкуриваю через слово. Мой англ и так дрянь, а тут пиздец.
Аноним 25/06/20 Чтв 20:33:11 1733921102
Аноним 25/06/20 Чтв 20:39:10 1733923103
там альфа версия 8ки вышла
Аноним 25/06/20 Чтв 20:49:36 1733935104
>>1733921
Пробовал, уже читаю.
Решил попробовать вынести сервис почты из лары в ноду, ради эксперимента.
Технически - не ебу пока что как это реализовать.
Аноним 25/06/20 Чтв 20:50:53 1733936105
>>1733935
Пишешь сервис на ноде.
Определяешь способ взаимодействия (транспорт) между сервисами.
С помощью второго отправляешь лергаешь микросервис отправки почты из своего монолита.
Все.
Аноним 25/06/20 Чтв 20:54:57 1733940106
>>1733936
В качестве транспорта сокеты?
Аноним 25/06/20 Чтв 20:59:11 1733946107
>>1733940
Что хочешь. Сокеты тоже могут быть.
Аноним 25/06/20 Чтв 21:00:10 1733947108
>>1733946
кстати,насколько рабочие сокеты и вебсокеты в пхп?
Аноним 25/06/20 Чтв 21:01:29 1733948109
>>1733947
Сокеты - хз что ты имеешь ввиду. Unix-сокеты? Заебись рабочие.
Вебсокеты надо немного приготовить, а так терпимо.

Если что, транспортом может быть даже бд, если тебе реалтайм не сильно важен. Так что тут вариантов уйма.
Аноним 25/06/20 Чтв 21:06:02 1733952110
>>1733946
Я о микросервисах читаю буквально минут тридцать. В общем случае можно сказать что микросервисы - это фактически несколько самостоятельных вэб сервисов/серверов которые выполняют свои отдельные задачи?
Можно ли считать микросервисной архитекурой то что я на ноде подниму почтовый сервис, а когда мне нужно будет отравлять почту из приложения на ларавел, допустим json ,то данные я отправлю на вэб-сервер на ноде, и нода уже будет отправлять письма?
Аноним 25/06/20 Чтв 21:06:40 1733954111
Аноним 25/06/20 Чтв 21:07:05 1733955112
>>1733935
>Технически - не ебу пока что как это реализовать.
Я не спец, но как понимаю это должны быть разные приложения, в разных процессах, и они должны общаться по какому то протоколу через какой то транспорт. Например rest api, одно приложение хоть фронтенд на JS хоть бекенд на чем то, дергает ручки другого приложения через http.
Аноним 25/06/20 Чтв 21:09:49 1733958113
>>1733947
На пхп по сокетам не интересовался, но полагаю создается tcp-сокет, присваевается некий id. И скрипт пхп по этому id обращается к сокету "выделенному" операционкой. Но это я примерно так почувствовал.
Аноним 25/06/20 Чтв 21:11:50 1733960114
>>1733954
>>1733955
Спасибо, в общем понятно. Буду велосипедить немного ,а после что нибудь почитаю из литературы.
Аноним 25/06/20 Чтв 21:12:23 1733961115
>>1733958
Вебсервром, а не операционкой. Энжинксом например. У соединения будет чтото вроде долгого keep-alive. Вот этот канал и не будет умирать, а так это надстройка над хттп протоколом.
Аноним 25/06/20 Чтв 21:12:24 1733962116
>>1733958
все пишут что сокеты на пхп-это лютые костыли
Аноним 25/06/20 Чтв 21:15:26 1733969117
>>1733962
Правильнее сказать, что костыли это демоны на пхп (и это тоже уже давно не правда).
Аноним 25/06/20 Чтв 21:22:26 1733980118
>>1733940
>В качестве транспорта сокеты?
Сокеты это не транспорт, а интерфейс. Транспорт в данном случае TCP. Самое сексуальное решение это заюзать MQTT, но хз как с этим в PHP.
Аноним 25/06/20 Чтв 21:22:46 1733981119
>>1733948
>Вебсокеты надо немного приготовить, а так терпимо.
проще ноду поставить
Аноним 25/06/20 Чтв 21:23:47 1733983120
>>1733981
Да как хочешь, сути то не изменит.
Аноним 25/06/20 Чтв 21:26:19 1733984121
>>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.
Аноним 25/06/20 Чтв 21:27:23 1733986122
>>1733984
Я не работаю на симфони, хз чем ответить.
Аноним 25/06/20 Чтв 21:31:39 1733994123
>>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 машины, а не в твоем коде. Так что демоны на пхп по прежнему геморная хуйня.
Аноним 25/06/20 Чтв 21:33:55 1733996124
>>1733994
Может ты и прав, сужу по своим демонам только, они не текут. Но они у меня простые. Возможность есть раз такая - то ладно, значит пыха не подходящий инструмент для написания демонов, соглашусь.
Аноним 25/06/20 Чтв 21:35:54 1733997125
>>1733996
У меня кореш неделю ебался, думал доктрина память хавает.
Аноним 25/06/20 Чтв 22:47:15 1734019126
>>1733994
Ничего не понял. От чего память течет? Как я понял течет куча?
Аноним 25/06/20 Чтв 23:06:57 1734027127
>>1734019
Как поймешь запили пулл реквест с фиксом, а то эта залупа с 2018 года висит не закрытая.
Аноним 25/06/20 Чтв 23:15:25 1734035128
>>1734027
Не вариант вручную ссылки чистить?
Аноним 25/06/20 Чтв 23:22:45 1734039129
>>1734035
Ну вот используешь ты у себя в демоне ORM. Демон забил всю память и встал колом. Где течет хз. В твоем коде или в ОРМ хз. Что чистить хз. Можно конечно отслеживать и, например, при использовании гигабайта памяти демон перезапускать. Именно это я и назвал "геморная хуйня".
Аноним 25/06/20 Чтв 23:24:49 1734041130
Аноны помогите, какой-то хуй повадился заливать на клиентскую хостинговую площадку php шеллы и различную малварь, я периодически все вычищаю и контролирую его по логам, но окончательно забороть никак не могу. Проблема в том что на площадке несколько сайтов, причем на разных CMS. Я никак не могу понять через какую дыру он заливает свои файлы. Судя по логам они просто изниоткуда возникают.
Аноним 25/06/20 Чтв 23:33:26 1734047131
>>1733830
У тебя детектор сломался, друже. Я не говорю что уже со всем ознакомлен, а написал о том, что пока еще вкатываюсь. Пыха мне нравится по дизайну и всему прочему, и пока ни на что другое я ее менять не хочу, но не исключаю того, что возможно когда-то придется. Я наверное ебанутый сюда вкатываться в 2020, но так уж сложилось. Надеюсь что когда-то старые пхпшники поумирают, а новых не будет потому что пхп учить не модно. Вот тогда я и выйду на сцену, и буду диктовать свои правила, лол.
Аноним 25/06/20 Чтв 23:34:27 1734048132
>>1734039
Идеальных инструментов под все задачи нет. Нода тоже течет и не только нода.
Аноним 25/06/20 Чтв 23:38:01 1734052133
>>1733994

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

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

Эти "баги" писать демоны никак не мешают.
Аноним 25/06/20 Чтв 23:40:05 1734053134
>>1734039

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

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

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

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

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

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

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

Про твой случай с доктриной ничего не понятно из описания.
Аноним 26/06/20 Птн 00:31:32 1734079143
>>1734063

Вот в каждом треде находится какой-то поехавший, который выкопает малозначительный баг, проявляющийся в редких случаях, и трясет им тут, утверждая, что якобы на PHP нельзя писать демоны (неправда, можно). И, кстати, ты уверен, что в Руби/Питоне/JS аналогичного бага с инклюдом файла миллион раз нет (по-честному миллион раз, а не через аналог require_once) ?
Аноним 26/06/20 Птн 00:49:51 1734087144
>>1734077
А если ты сам для себя адаптер пишешь тебе тоже багтрекер чекать нужно? Ты понимаешь что это не продакшен реди хуйня?
Когда ты бложек свой пишешь это не важно, а когда из-за такой хуйни продажи останавливаются это пиздец. В симфони написали адаптер, а в ларавеле не написали, а в доктрине вообще не в курсе что какой-то там адаптер течет. Кто будет с горящей жопой бегать и выяснять это?
Пиздец манямир.
Аноним 26/06/20 Птн 00:55:51 1734090145
>>1734079
А если есть язык еще похуже, то его недостатки тоже стоит в пхп добавить?
Любой более менее опытный программист на пхп знает что за пхпшными демонами нужно постоянно следить, что это ненадежная залупа, что гораздо проще запускать скрипт по расписанию.
Аноним 26/06/20 Птн 00:57:28 1734094146
>>1734087

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

Наконец, утечки памяти точно так же есть в приложениях на JS и прочих скриптовых языках. Но ты их не замечаешь, потому что тебе хочется что-нибудь ляпнуть про PHP.
Аноним 26/06/20 Птн 01:01:39 1734097147
>>1734087

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

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

Ты, по видимому, ничего большого не писал и просто не знаешь проблем, и выдумываешь чушь про какой-то минорный баг, который вдруг обрушит продажи.
Аноним 26/06/20 Птн 01:09:25 1734100148
>>1734094
Бля, ну протестировал ты свой демон, а он течет. И не стал его использовать в продакшене. Что я и делаю.
Аноним 26/06/20 Птн 01:14:39 1734106149
>>1734097
>Вот смотри питон руби Js очень плохие
>поэтому баги в пхп не баги
Слышал что-нибудь про логику?
Аноним 26/06/20 Птн 01:15:09 1734107150
>>1734090
Правильно он тебе говорит. Везде течет. Даже сам линукс течет представь себе.
Аноним 26/06/20 Птн 01:16:03 1734109151
>>1734100
>Бля, ну протестировал ты свой демон, а он течет. И не стал его использовать в продакшене.
Нормально пиши - не будет течь.
Аноним 26/06/20 Птн 01:21:05 1734111152
>>1734109
>Нормально пиши - не будет течь.
Хватит тролить тупостью. Утечки о которых идет речь происходят внутри пхп, а не из-за неправильности кода.
Аноним 26/06/20 Птн 01:21:40 1734114153
>>1734106
Ты похоже не слышал. Нужно правильно инструментом пользоваться. Тогда ничего течь не будет. Программист на то и инженер, чтобы использовать правильно инструмент и решать задачи, а не жаловаться что инструмент плохой.
Аноним 26/06/20 Птн 01:23:35 1734115154
>>1734106

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

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

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

Так понятнее?
Аноним 26/06/20 Птн 01:25:35 1734116155
>>1734111
>Утечки о которых идет речь происходят внутри пхп, а не из-за неправильности кода.
Чтобы такое утверждать, разберись сначала из-за чего утечки.
Аноним 26/06/20 Птн 01:32:59 1734119156
>>1734115
Перечисли побольше хуевых языков и этот баг пропадет из багтрекера.

>>1734116
А че так мелко? Давай сразу "Чтобы такое утверждать напиши свой язык без утечек".
Аноним 26/06/20 Птн 05:43:28 1734200157
Вопрос по 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, чтобы посчитать сколько всего красных кубиков в каждой коробке?
Аноним 26/06/20 Птн 07:02:13 1734218158
Аноним 26/06/20 Птн 07:16:44 1734220159
>>1734200

Ну типа select count(id) from table where box = 1 and cube='red';
Аноним 26/06/20 Птн 07:18:09 1734221160
А, в каждой... Тогда

Ну типа select box, count(id) from table where and cube='red' group by box;
Аноним 26/06/20 Птн 10:09:16 1734316161
>>1733862
Пиздец нахуй, как зумер беспомощный, без зонда в жопе даже mp3 записать не может.
Аноним 26/06/20 Птн 10:10:39 1734318162
>>1733872
>высказал мнение, которое не разделяет толпа даунов-хомячков в обрыганском чатике
>додик
Все, что нужно знать про эти раковники. Собственно, поэтому я в них вообще никогда и не сидел
Аноним 26/06/20 Птн 10:16:29 1734321163
>>1734097
>Питон
>Ведь там даже нет тайп-хинтов
Самое смешное, что есть, но всем на них похуй, петухон-сообщество официально жрет дерьмо годами и не использует их.
Просто погляди на исходники популярных петухон-проектов. Такого кала даже на JS нет, не то что на пхп.
Комменты писать у петухонцев видимо не принято, вот в первый раз такое вижу, честно, чтобы прям для какого-то япа закономерно все игнорировали комментарии. Обычно это просто у новичков неопытных, но на питоне реально тенденция такая блять - не писать ебаные комменты, будто все и так должно быть понятно, что, откуда и куда пересылается по функциям (типы у параметров, ясен хуй, не указаны).
Просто какое-то раковое комьюнити.
Аноним 26/06/20 Птн 10:39:06 1734332164
Аноним 26/06/20 Птн 11:02:14 1734342165
Аноним 26/06/20 Птн 13:33:29 1734431166
Для меня до сих пор страшная загадка, почему люди так бугуртят от динамической типизации.
Аноним 26/06/20 Птн 14:19:44 1734476167
>>1734318
>высказал мнение, которое не разделяет толпа даунов-хомячков в обрыганском чатике
Он высказал хуйню и не хотел никого слушать, продолжая бить себя пяткой в грудь. Таких дартаньянов банят заслуженно.
Аноним 26/06/20 Птн 14:34:26 1734494168
>>1734321
>>Ведь там даже нет тайп-хинтов

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

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

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

Все так, динамикопараша во все щели, у JS хотя бы TS есть.
Аноним 26/06/20 Птн 14:44:40 1734504169
>>1734431
Когда делаешь что-то сложнее хэллоу ворда динамика уступает статике
Аноним 26/06/20 Птн 15:01:46 1734516170
>>1734504
В этом плане у пыхи есть все шансы усидеть на двух стульях - динамика + ситуативная статика. Главное - грамотно развивать это направление в будущих версиях.
Аноним 26/06/20 Птн 15:02:59 1734518171
>>1734516
Скорее ситуативная динамика, потому что она очень редко пригождается, почти весь код пишешь так, будто у тебя только статика.
Аноним 26/06/20 Птн 15:24:40 1734537172
Аноним 26/06/20 Птн 16:43:26 1734613173
>>1734431
Потому что хуй его знает, что ожидает чей-то метод. В итоге работа по проверке типов ложится не на компилятор, а на разраба.
Аноним 27/06/20 Суб 10:07:02 1735064174
>>1734431
Потому что языки с динамической типизацией придумали ебанаты, которые никогда не прогали ничего крупнее лаба1.

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

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

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

Вот только сейчас уже почти месяц я даже не трогал php, я только и делаю что верстаю адаптивные странички на бутстрапе.
Вроде как у меня стажировка и мне даже заплатят(фикс 35к), но я же должен работать с битриксом, а мне дают только верстку. Лид говорит что все успею, не переживай все так начинали. Че делать? Ждать пока дадут команду учить битрикс? Или дропать эту компанию? Не так я представлял жизнь php джуна...
Аноним 27/06/20 Суб 11:03:21 1735083179
>>1735081
Дополню, взяли меня, полностью понимая что я вообще ноль и из умений моих это список студентов и файлообменник из оппоста.
Аноним 27/06/20 Суб 11:28:00 1735091180
>>1735081
>>1735083
Вообще, норм, спасибо и на том, что взяли.
Так-то из тебя растят классическую боевую фулкек-макаку, чтобы мог уверенно клепать формочки и верстки и жс не пугался.
Без фронта сейчас никуда, ты обучаешься, а тебе еще и платят за это, скажи спасибо.
Аноним 27/06/20 Суб 12:47:06 1735127181
>>1735081

Что ты такой суетной? Тебе 20, месяц формочки клепаешь, времени море. Напротив, расслабься, получай удовольствие от работы и жизни.
Аноним 27/06/20 Суб 14:15:46 1735182182
>>1735081
Ну поверстаешь, это все веб макаки проходят, и фронты, и беки.
Мб потом передумаешь пачкаться об битрикс, возьмешь реакт и пойдешь на 100к удаленку.
Аноним 27/06/20 Суб 15:13:19 1735210183
>>1735182
А на вью на 100к мона?
Аноним 27/06/20 Суб 15:47:36 1735238184
>>1735210
Мона. С битрикса только надо съебывать как можно быстрее.
Аноним 27/06/20 Суб 16:20:12 1735254185
>>1735210
Можно и на вью. У нас чел недавно с годом опыта вуе на 100к+ вкатился
Аноним 27/06/20 Суб 16:21:34 1735257186
>>1735238
Этого поддвачну. Битрикс - болото, из которого сухим не вылезти.
Опыт работы на битриксе применим только к битриксу даже не к пыхе. При смене стека будешь всё изучать заново
Аноним 27/06/20 Суб 19:16:41 1735380187
>>1735065

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

Mother object = (Mother) getDaughter();

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

$object = getDaughter();
Аноним 27/06/20 Суб 20:09:46 1735410188
>>1735257
Неужели битрикс это настолько плохо?
Просто у меня в дс всего 7 вакансий джуна или околоджуна. 5 из них это битрикс, одна вью и одна ларавел.
В битрикс-конторах мне хоть тестовые давали и на собесы звали, а вью и лара просто отказ вы нам не подходите. Вот я и решил набрать год опыта в битриксе, а потом уже идти в другое место.
Аноним 27/06/20 Суб 20:13:52 1735412189
>>1735410
Не вью а Yii уже в глаза ебусь в ночи
Аноним 27/06/20 Суб 21:56:06 1735504190
>>1735410
>у меня в дс всего 7 вакансий
ДС - значение знаешь?
Аноним 27/06/20 Суб 22:02:00 1735513191
>>1735410
Это говно сделанное макаками из 1с, никогда по своей воле не стоит иметь дел с такими странными вещами.
Аноним 27/06/20 Суб 22:02:27 1735514192
>>1735410
>Неужели битрикс это настолько плохо?
Да, настолько плохо. Плохо по зп, плохо по скилам, плохо по востребованности.
>Просто у меня в дс всего 7 вакансий джуна или околоджуна. 5 из них это битрикс, одна вью и одна ларавел.
Пробуй те две с уи и ларавелем.
И кто-то запрещает тебе стучаться на мидловые ваки?
Просишь тестовое - делаешь - идешь на собеседование.
>В битрикс-конторах мне хоть тестовые давали и на собесы звали
Ну конечно они любому лошку рады. Хорошие разработчики в т.ч. джуны просто не пойдут к ним
>Вот я и решил набрать год опыта в битриксе, а потом уже идти в другое место.
Не, такое с битриксом не работает. Ты сможешь максимум из битрикс джуна стать битрикс мидлом. Но в php ты всё еще будешь на уровне ниже джуна.

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

У меня такая хуйня с вордпрессом. Сеньор вордпресс, пхп ниже джуна. Сейчас начал наверстывать, получается достаточно легко, благодаря большому бекграунду ковыряния говен, но много времени проебано зря на сайтиках для ашотов.
Аноним 27/06/20 Суб 22:16:20 1735519194
>>1735518
>У меня такая хуйня с вордпрессом
Как и с любой cms или екомерс движком. Практики прямиком из нулевых дошедшие до наших дней
Аноним 27/06/20 Суб 23:00:39 1735547195
Что скажете про шаред хостинг от reg.ru? Че то условия меня напрягают. Более 150к файлов - блокировка, более 4 Гб размер базы - блокировка, максимальное кол-во fastcgi процессов - 4, максимальное кол-во процессов - 18, максимальное кол-во открытых файлов (хз что это значит) - 512. Это норм? Нужно быстро решать брать или нет, потому что через 1 час у меня спишут деньги, которые дам давно лежат и не используются.
Аноним 27/06/20 Суб 23:14:22 1735558196
>>1735547
Я для ашота сайтов много лет юзаю. На одном хосте по 25 вордпресс говен лежит. Для чего-то иного использовать бы не стал.
Аноним 27/06/20 Суб 23:25:06 1735560197
>>1735558
>На одном хосте по 25 вордпресс говен лежит.
Как если только 4 fastcgi процесса?
Аноним 27/06/20 Суб 23:31:06 1735562198
Вакансия Junior[...].png 117Кб, 800x884
800x884
Что скажете?
Аноним 27/06/20 Суб 23:56:46 1735576199
>>1735514
Ух ща простыня будет, которую никто не прочитает, пост про битрикс стригерил флешбеки.
Было дело мне менеджер подсунул помимо прочего поддержку магазина на престе (не последней версии, 6 чтоли), проебался я с ней полгода, но и за это время успел оценить прекрасную квалификацию обезьян под цмски.
Сама преста нихуя не идеальная, вообще говно как и положено продуктам с таким жизненным путем, однако чисто на голую с ней еще можно было бы работать. Даже обновить до гораздо более современных в плане кода версий.
Но не тут то было. До меня эту срань поддерживала какая-то вебстудия в течение года, и первое что я увидел - это полностью переломанное мелкими правками ядро. Потому что так сделать быстрее.
Первое что пришлось сделать - подрубить гит и послать сеошников нахуй и пожелать им смерти. До этого работали прямо по фтп, причем давая доступ к коду даже сеошникам, которые с одном специальном костыле через регулярки последним делом в каждом запросе разъебывали как им надо всю сгенеренную верстку (в том числе с помощью охуенных сео модулей, которых они туда поставили вообще все, до которых смогли дотянуться, но так и не смогли понять как это настраивается).
Продолжил сразу же git diff тулом, которым прошелся по всему ядру из гита и сравнил его с ядром этой убитой версии. За кучу бессонных ночей выкорчевал это все в расширения, тем самым очистив ядро и выделив всю хуйню, что говноеды наделали за это время. Чуть ли не половину пришлось выдирать через рефлексию, т.к. законных способов модификации такого в самом ядре вообще не было.
Подтянул композер и его автолоадер, сделав, конечно, альтернативным, потому что родной автолоадер из нулевых убивать себе дороже - там хуета по типу того, что в этой статье с битриксом. Подтянул всякие миграции (автосгенерил начальную со всей продовой базы, дальнейшие соответственно нормально писал. Прежде они по анти юбест практисам правили все руками в продовой базе прямо. Алсо, стейдж тоже поднял, как и возможность вообще локально это дерьмо развернуть.) Орму несложную, все такое. Кое что расширил (роутинг например), чтобы проще было модулями расширять, а это требовалось в основном как раз. Кое что порефакторил в процессе, обновил пхп с 5.хуй какой-то версии до 7.1 (кажется, выше не вышло), точечно поправив где пизда была. Исправил старые ошибки, которые там годами висят, закрыл старые уязвимости (хотя это скорее для галочки, потому что как позже оказалось сверхразумов не защитить от уязвимостей - они сеошников на прямую в базу пускают). Всякую админскую хуету поделал, реплики там, хттпс автообновляемый и бесплатный, мусор (а они и его на серв ставили) поудалял, переключил с nginx + apach на nginx. Кеш завел для себя. В общем весь новый функционал писался в гораздо более человеческом виде, чем на родную, а уж тем более на уебанную сео-конторой версию престы. Новенькое превратилось более менее в непотную рутину.
Но желание обновиться таки было (и у заказчика особенно), а для этого самое главное не ядро вылечить, а 150 модулей (их реально столько было). Каждый из них с собственным кодом от очередного васяна. Были и оформленные хорошо, вроде модулей от яндекса, но и в них успели насрать. Отключил почти 70% из них. Оказалось просто ставили, а зачем - хуй их знает. Управленцы, сэр, видят цель не видят препятствий блядь, ставят все подряд в надежде что проканает. Надо понимать, что каждый модуль в сущности засорял систему, да и отследить флоу всей параши, которая по событиям (хукам) таким образом дергается - хуета хует. Ну и вполне реальный кейз того, что модуль может при установке сделать - насрать своими файлами вне своей директории хотя бы. там это в порядке вещей. Да и в целом чуть ли не каждый модуль это php + js + css + html в одном файле через это с глобальным стейтом и ну его нахер, таких слов нет, чтобы это описать. Проще просто удалять один за другим и смотреть че отваливается. Осталось терпимое количество модулей. Каждый из них надо было так же обновить и убедиться, что эта сука будет работать. И вот тут - фиаско. Обновить большую их часть до актуальной версии престы попросту невозможно. Часть из них подверглась таким же правкам сеоблядей, как и ядро, при этом часть платных модулей (а то и бесплатных) в изначальном виде уже вообще не достать, чтобы понять где тут в куче говна свинье еще и наблевали. Через код намертво стал заколачивать обновления модулей. Полностью запретил их установку так же через код, сказал ставить через меня (а хуле, они ведь каждый день по несколько штук ставят, похую им, что это прод). Захардкодил блеклист (вернее вайтлист) модулей, даже оповещать об этом заказчиков не стал, пусть просто думают что нет модулей.
Остроты добавляли страницы. Это такие куски говна в каждой, наверно, цмске, которые редактируются из админки и кладутся прямо в базу, потом дергаятся, эвалятся и че там они еще делают, хуй знает. Суть в том, что там работала вся та же ссанина, что и просто из кода. Хочешь - дергай глобал стейт, хочешь - модули, хочешь - дергай хуки, хочешь жс с запросами. Да все что хочешь вообще. Надо ли говорить, что с этим уже никакая иде не помогает, а при этом срут туда регулярно и очень объемно. И вот все перечисленное там было. Накрячил систему, при которой они срались в файлы, вместо базы, а в бд только путь. Но на нее так при мне полностью и не перешли.
Таким образом каким-то хуем нарисовалась более-менее чистая сборка престы, но без ебли в гланды обновить все равно нельзя. Обновлять стал вручную аккуратно пофайлово нахуй. Процесс долгий, но реально. Сам установщик престы применять - эт опиздец. Шанс что он просто похерит половину нужного. Гонял на стейдже, перетер нахер все и скораптил базу в хуй, при этом отвалившись с какой-то ошибкой. На все действо, конечно же, часа 4 ушло, эта хуйня не быстрая.
Так и не обновил до конца, вот такой вот я лошок, отдал следующему недачнику, а подсказывать че оно как отказался, пусть страдает, заслужил за то, что взялся за эту хуйню.
Работать стало канеш быстрее, новый функционал писать стало почти приемлимо, старый править - зависит только от модуля, где правки нужно вносить.
Нахер эти цмс, просто нахер. Судя по статье битрикс примерно такой же мусор и ковыряют его часто люди уровня "наш программист в сео-конторе", а значит еще хуже становится.
Единстыенный плюс - после этого неявно обфусцированного кода с чем угодно можно разобраться, но скилл так себе, потому что разбираться с чем угодно - это участь галерного раба.
Аноним 28/06/20 Вск 00:21:45 1735586200
Посоветуйте дешевый виртуальный сервер. Самый дешевый шаред хостинг у reg.ru 260 рублей, а у hostinger.ru вообще 450. Совсем йобнулись.
Аноним 28/06/20 Вск 00:22:24 1735587201
>>1735576
>ща простыня будет, которую никто не прочитает
Конечно не прочитает, потому что надо делить текст на небольшие абзацы с отступами.
Аноним 28/06/20 Вск 00:31:46 1735590202
Аноним 28/06/20 Вск 00:34:46 1735594203
>>1735576
Можно было за то же время переписать на лару
Аноним 28/06/20 Вск 00:38:58 1735596204
>>1735590
>scaleway
Мне нахой не надо клауд-хуяуд. Просто виртуальный сервер (vps/vds), и чтобы была фикс оплата, чтоб при превышении чего то мне потом счет не пришел на штуку баксов.
Аноним 28/06/20 Вск 00:50:15 1735600205
Есть разница на каком гипервизоре сервер? Варианты: XEN, KVM, OpenVZ.
Аноним 28/06/20 Вск 01:55:45 1735625206
>>1735600

OpenVZ считает потребление памяти так, что оно становится раза в 2 выше, чем на Xen или реальной машине.
Аноним 28/06/20 Вск 02:04:41 1735628207
>>1735600
oVirt или proxmox ve шо то, шо это квм. Квм стильно, модно, молодёжно. Хен не нужен опенвз аналогично.
Аноним 28/06/20 Вск 02:05:24 1735629208
>>1735596
Ты видимо не очень умный. У них среди прочих услуг есть впс за 3 евро
Аноним 28/06/20 Вск 02:06:18 1735630209
>>1735600
С openvz забудь о докере и возможно даже о свопе, запустишь composer install придет злой OОM Killer и убьет его
Аноним 28/06/20 Вск 08:38:55 1735702210
Сделал testhub на ларе. Теперь не могу решиться что делать дальше, пилить на ларе(по докам ещё не все усвоил) или пробовать симфони. Как бы вы поступили ?)
Аноним 28/06/20 Вск 09:26:25 1735709211
Аноним 28/06/20 Вск 11:54:47 1735763212
>>1735560
>Как если только 4 fastcgi процесса?
обычные сайты на Wordpress все обычно работают в режиме mod_php, а не fastcgi.
Аноним 28/06/20 Вск 12:07:56 1735767213
>>1733193
Я вот только одного понять не могу. Нахуя, вы, блядь, дебилы сука ебаные - пишете в фориче вместо $value/$elem - какую-то хуйню? Зачем блять всё усложнять и писать на месте элементов какую-то хуйню, если всем и так понятно, что это элементы массива?

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

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

Макаки - такие макаки. Надеюсь, ты возьмёшь это себе на заметку.
Аноним 28/06/20 Вск 12:35:48 1735789214
>>1735410
Бля, ну не тупи. И не слушай местных ебанатов, тут половина вкатывальщики сразу в калифорнийский стартап, а вторая половина лабу 1 осиливает. Кого ты нахуй слушаешь? Тут почти нет никого к чьему мнению можно прислушаться. Тебе 20 лет всего, это хуйня. Первая работа это не только стек маня технологий, это опыт от общение с коллегами, руковдством, опыт о том как ведется даже этот мелкий бизнес. Карьера и вообще выбор жизненного пути не строится блядь выбором языка - это просто детская максималисткая чушь.
Ничто тебе не мешает работая с 1с надрочить лару, например. И когда ты придешь в другую контору и скажешь я вот только освоил лару - но до этого год работал в бизнесе на 1с - то ты явно будешь в позици более выигрышной, чем джун, который нихуя нигде не работал, и со своей тудухой на ларе приперся.
Так что мой совет - работай спокойно, смотри как делается это бизнес, и паралельно изучай большой фреймворк.
Замыкаться на 1с тупо, но обрати внимание, даже тут в треде люди даже на пхп не замыкаются, кто то на питооне, кто то на ноде, кто то на реакте пилит чето.
Аноним 28/06/20 Вск 13:41:51 1735849215
>>1735763
>обычные сайты на Wordpress все обычно работают в режиме mod_php, а не fastcgi.
Пусть так, но там не больше 18 любых процессов.
Аноним 28/06/20 Вск 14:26:04 1735899216
>>1735767
Про семантику ты не слышал видимо.
Аноним 28/06/20 Вск 14:30:52 1735904217
>>1735789
>тут половина вкатывальщики сразу в калифорнийский стартап
Чини детектор
>Тебе 20 лет всего, это хуйня
Это не повод гробить их в цмс могиле
>Карьера и вообще выбор жизненного пути не строится блядь выбором языка - это просто детская максималисткая чушь
Подумаешь, проебешь года 3-4 на битрикс, можно же потом переучиться. А хули тут так сложно эти ваше фреймворки? Какой DI? В смысле каждый класс в отдельном файле? Какой psr? Не, ну нахуй, буду дальше сидеть на битриксе. Он уже знаком, платят стабильно 30 тысяч.
>Ничто тебе не мешает работая с 1с надрочить лару
Кроме отсутствия времени и сил, а так же высыхания мозгов от ебли с битриксом и хуевого комьюнити.
Аноним 28/06/20 Вск 14:44:52 1735927218
>>1735849
это никак не мешает. Процесс apache там создаётся при загрузке страницы сайта и сразу по окончании завершается.
Аноним 28/06/20 Вск 17:17:46 1736027219
>>1735767
Прям представляю $value->getTitle()
Аноним 28/06/20 Вск 17:38:39 1736046220
>>1735767
foreach($persons as $person) {$person->getName()}, или все-таки лучше $value/$elem?
Аноним 28/06/20 Вск 17:40:09 1736052221
Аноним 28/06/20 Вск 17:59:28 1736069222
>>1736052
А открыть доку к апи телеграма не судьба?
Аноним 28/06/20 Вск 21:33:31 1736289223
Аноним 29/06/20 Пнд 10:16:08 1736634224
>>1735410
Это хуже, чем не знаю что. Наверное даже Wordpress лучше. Я знаю истории людей, которые начинали работать с битрикса, а потом через 2 года завязывали с программированием насовсем и уходили в другие профессии.
Не слушай тех, кто говорит, что ничто тебе не будет мешать параллельно учить другой фреймворк. Этому будет мешать твоя работа - 8-10 часов в день ты будешь тратить на ковыряние в битриксо-навозе вместо приобретения реально нужных скиллов. Если хочешь двигаться в рамках PHP-экосистемы, то разбираться надо с Laravel (50-70% рынка) или Symfony (20-30%). Про Yii2 забудь, это мертвый фреймворк, на нем все еще много проектов, но это легаси и в основном только СНГ/Китай.
Аноним 29/06/20 Пнд 10:18:11 1736636225
>>1735380
+1

Приведение к типу Mother тут костыль, чтобы вписаться в тип object. Так как в пыхе переменная может принимать любой тип, то это все не нужно. Если же нужно проверить, что объект имеет определенный тип или подтип, то используешь стандартный instanceof.
Аноним 29/06/20 Пнд 12:23:44 1736696226
>>1736636
>Если же нужно проверить, что объект имеет определенный тип или подтип, то используешь стандартный instanceof
И это программисты? Говно какое-то, пидоры, блядь. Дали им ковариантность - типизируй! Типизируй методы, блядь! Не хотят, хотят жрать говно. Что такое? Это ООП?! Это SOLID?! Суки… Мудачьё — говнокодеры. Лычки нацепили, говно жрут.
Аноним 29/06/20 Пнд 15:58:03 1736930227
images.jpg 3Кб, 242x209
242x209
ууцуц.png 10Кб, 1257x210
1257x210
Как надо по-хорошему сделать вот эту ебалу с циклами? А то совсем срань же, да? Там так-то беда в архитектуре, но мне только вилку дали.
Аноним 29/06/20 Пнд 16:33:00 1736971228
>>1736930
Код отформатируй для начала. От этого пиздеца глаза вытекают
Аноним 29/06/20 Пнд 16:33:38 1736972229
>>1735562
Блять, я на обе их вакансии пиздец как подхожу и мешок вордпрессов есть, и в Нидерланды хочу. Но я только на ашотов работал, сыкотно что-то писать, они скажут, давайте по скайпу-хуяйпу, а у меня и микрофона нет.
Аноним 29/06/20 Пнд 17:13:33 1736997230
>>1736696
>макак узнал новые баззворды и всем ими тычит
Аноним 29/06/20 Пнд 17:26:01 1737008231
15844642001840.png 340Кб, 680x680
680x680
Аноним 29/06/20 Пнд 18:50:05 1737095232
>>1736972
Волков бояться — в лес не ходить.
Аноним 29/06/20 Пнд 19:09:39 1737118233
Помогите плиз с docrine, в проекте версия 2.4 и dql функция DATE_SUB не понимает юниты SECOND или MINUTE, а мне нужно выбрать события из базы по времени с точностью до минуты. MYSQL запрос: "where TIMESTAMPDIFF(second, now(), e.start) < n.time_before_event".
Как можно это сделать, не обновляя doctrine в проекте?
Аноним 29/06/20 Пнд 21:02:55 1737218234
Аноны, такой вопрос - когда на ноде делаю сервис на ларавел - этот сервис правильно разместить в отдельной папке в каталоге проекта ларавел?
Аноним 29/06/20 Пнд 21:09:47 1737226235
Анчоусы, чем у Вас заполнен гит? Достаточно ли задач из шапки?
Аноним 29/06/20 Пнд 21:42:51 1737268236
>>1737218
Сам-то как думаешь?
Аноним 29/06/20 Пнд 21:44:00 1737269237
>>1737226
Пара тестовых крудов django, yii2, laravel, апишка на симфе+докер+тесты+свагер
Аноним 29/06/20 Пнд 22:42:55 1737326238
>>1737268
А хз. По идее все должно быть в рамках каталога одного проекта.
Но там как то нужно будет с маршрутизацией нгникса зарешать.
Хотя в рамках моей задачи http запросы будут падать на ларавел, а на ноду уже по api передаваться.
Но как это делается правильно в рамках одного сервера? Или таки нет "рамок одного сервера".
Аноним 29/06/20 Пнд 23:12:22 1737353239
>>1737326
У тебя два обособленных приложения. Зачем их кидать в одну папку? Пили в разных репозиториях как микросервисы
Аноним 29/06/20 Пнд 23:38:03 1737369240
>>1737353
Так, стопе. У яндекса и гугла монорепозитории. Если делаешь микросервисы, то обязательно нужно монорепу.
https://github.com/kydva/HotelOOP Аноним 30/06/20 Втр 01:47:39 1737441241
>>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, трансформацию деревьев выражений.

Если ни тесты, ни выражения делать не хочется, можно браться за задачу про список студентов.
Аноним 30/06/20 Втр 01:49:41 1737443242
>>1737369
В чем преимущества монореп?
Аноним 30/06/20 Втр 02:47:56 1737468243
>>1737443
А в чем преимущества микросервисов?
Аноним 30/06/20 Втр 08:11:44 1737536244
>>1734220
Нифига не в сасываю. А что я должен записать в переменную, чтобы вывести в эхо? Не могу же я в эхо вывести count. Он просто возьмет значение из ближайшей строки. Вывожу естессна циклом while
Аноним 30/06/20 Втр 08:43:42 1737543245
Аноним 30/06/20 Втр 09:25:54 1737562246
Аноним 30/06/20 Втр 10:08:27 1737590247
>>1736930
отфарматируй код скинул бы как белый человек не скриншотом - сделал бы за тебя
и юзай просто $data_trouble[] . он тебе сам должен в массив добавить под нужным ключем, без счетчиков всяких
Аноним 30/06/20 Втр 10:48:57 1737626248
>>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
Аноним 30/06/20 Втр 10:58:31 1737632249
>>1737626
Спасибо мил человек, тонны нефти тебе..
Аноним 30/06/20 Втр 12:51:16 1737749250
Сап, двуч, поясните как в php работают структуры данных? Вот например если я захочу создать константный массив чаров в C++, я знаю что он займет 128 ячеек в памяти. Если я создам динамический, он будет реалочиться. Если мапу, то там будет хэш таблица.

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

Ну то есть похапэ не позволяет работать с типами данных напрямую, и за этим надо в пуйтун?
Аноним 30/06/20 Втр 14:17:53 1737822253
>>1737815
Так с какими типами данных напрямую? С пхпшным array - позволяет, делай что хочешь. Ну разделения на dictionary/list и прочее нет, конечно. Надо свое - пиши свое, есть еще всякие интерфейсы типа ArrayAccess, Traversable и т.д.
Аноним 30/06/20 Втр 15:53:16 1737932254
знаю что в конторе есть таски на нормальных фреймворках. намекнул и сказал очень жирно тим лиду что буду изучать щас ларку как проклятый чтобы мне давали нормальные таски с проектами
на что мне ответили: Постарайся больше времени обучению битрикса посвятить ларавел пока как побочка
так вот, как скоро стоит валить с этой галеры? после того как напишу своой первый блог на ларке?
Аноним 30/06/20 Втр 16:42:31 1738011255
>>1737932

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

Сделал это месяц назад, сижу пержу на ларе
Аноним 30/06/20 Втр 17:05:46 1738077256
>>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']];
}
}
}

Вообще, я не о том же, вся конструкция смотрится уродски как-то, ощущение, что можно как-то сильно лучше написать.
Аноним 30/06/20 Втр 17:09:36 1738090257
Аноним 30/06/20 Втр 17:28:12 1738130258
Аноним 30/06/20 Втр 17:30:30 1738135259
>>1738011
Часов 6 это с попыткой применения того что читаешь, или просто читаешь и читаешь?
Аноним 30/06/20 Втр 17:33:05 1738141260
>>1737118
Добавил свою DQL User Defined Function, которая реализует мускульную TIMESTAMPDIFF
Аноним 30/06/20 Втр 19:23:17 1738262261
Аноним 30/06/20 Втр 19:45:19 1738298262
Аноним 30/06/20 Втр 19:49:53 1738300263
>>1737932
>Постарайся больше времени обучению битрикса посвятить ларавел пока как побочка
Тебя явно хотят держать за дурачка.
Учи лару, забей на битрикс.
Как появится шанс - сваливай на лару в офис/удаленку. Там и ап по зп придет и работа не такая уебищная
Аноним 30/06/20 Втр 19:53:10 1738304264
>>1737932
Хватит простого круда (орм, миграции, блейд, валидация, роутинг, события, di поковыряй).
В идеале если ты прочтешь офф доку лары английскую, а не русскую и применишь каждый из пунктов у себя в проекте, сможешь пройти собес на мидловую ваку
Аноним 30/06/20 Втр 23:27:47 1738505265
анончики, изучаю потихоньку ларку и возникли такие вопросы: для чего нужны фабрика и сидер для модели? объясните как то более менее понятно чтоли
Аноним 30/06/20 Втр 23:33:17 1738508266
>>1738304
>английскую, а не русскую
только ее и читаю пока. более актуальная
и заранее скажу что это >>1738505 и это >>1737932 - один и тот же кун

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

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

Аноним 01/07/20 Срд 02:05:53 1738567268
image.png 28Кб, 418x447
418x447
>>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", а он раскладывает ее на что-то вроде пикрил? Как должна представляться древовидность? С помощью аггрегации, в свойстве объекта должен быть массив с вложенными в него объектами или как?
Аноним 01/07/20 Срд 02:36:16 1738579269
Можете посоветовать материалы чтобы решить хоть одну задачу с Оп-поста?
Аноним 01/07/20 Срд 02:43:12 1738584270
>>1738514
Профилируй, что еще сказать.
В целом странно, почему общение по хттп на локалке занимает 10 секунд. Мб это не проблемы транспорта, а какой-то из сервисов долго отвечает?
Аноним 01/07/20 Срд 04:03:41 1738605271
>>1732028
Битрикс - насквозь коммерческая цмс и все плюшки там надо покупать. Я бы порекомендовал объяснить своему пм, что разработка модуля с нуля зайсет много времени и принесет мало денег.
В твоем случае кто-то захотел кастомную разработку под кривую и дорогую цмс по цене дошика, а менеджер-дурак согласился.
Аноним 01/07/20 Срд 04:13:21 1738607272
>>1738579
В оппосте всё есть - читай внимательней.
Аноним 01/07/20 Срд 04:24:33 1738611273
>>1738505
Фабрика делает модели. Столько сколько тебе нужно. Обычно их используют для набивания бд рыбой так как пилить приложуху когда видно что выводится гораздо сподручнее, чем представлять себе это.
Сидеры есть сидеры - делают посев данных в бд. Там можно вызывать фабрики. А можно не вызывать и писать руками.
Аноним 01/07/20 Срд 04:44:55 1738614274
>>1737822
У пыха есть описания структур, только они в базовую поставку не входят и их надо отдельно выкачивать либой из гитхаба, вроде бы.
Где-то в доках эта инфа есть.
Аноним 01/07/20 Срд 06:15:50 1738628275
>>1735767
Самое простое и наиболее полезное действие в проганьи - называть переменные по их содержимому. А не по дефолту, дебил.
Аноним 01/07/20 Срд 08:48:34 1738653276
>>1738584
Даже не 10 а все 30. Это что то где то виснет
Аноним 01/07/20 Срд 11:04:53 1738715277
>>1738135

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

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

2. Пишу todo list, поглядывая в доку.
Аноним 01/07/20 Срд 11:05:55 1738716278
>>1738715
>>1738135

6 часов прочитать всё и попробовать покомпилить, поэксперементить в test прожехте.
Аноним 01/07/20 Срд 11:59:08 1738766279
>>1738653
Лол, разобрался. Я какую то хуиту написал в заголовке 'Content-Length' , и браузер тупо ждал данных нужной длины. Курьез однако.
Аноним 01/07/20 Срд 12:31:19 1738798280
Имеет ли сейчас смысл юзать hhvm или kphp, или новый php по скорости уделывает эти поделия?
Аноним 01/07/20 Срд 12:33:44 1738805281
>>1738798

kphp муторный, но хороший. hhvm - тупое говно тупого говна.
Аноним 01/07/20 Срд 13:20:46 1738866282
>>1738766
Зачем ты вообще контент ленгт трогал? Он же автоматом проставляется
Аноним 01/07/20 Срд 13:40:45 1738880283
>>1738866
В голой ноде без фреймворков вообще нихуя не проставляется. Запросы на лару я с ноды отправляю.
Аноним 01/07/20 Срд 14:23:46 1738916284
>>1738607
Ничего там толком нет, только основы
Аноним 01/07/20 Срд 15:26:59 1738983285
Поясните, как в ларке сделать paginate уже после where. Например

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


Чтобы не писать это в if else
Аноним 01/07/20 Срд 17:27:58 1739152286
>>1738983

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

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

Проще всего так
Аноним 01/07/20 Срд 19:05:52 1739289287
>>1738880
Т.е. не судьба взять http клиент? Надо самому велосипедить?
Аноним 01/07/20 Срд 19:06:17 1739290288
>>1738916
Тебе нужно мастер класс от Васяна как делать круд?
Аноним 01/07/20 Срд 20:26:12 1739368289
>>1739290
Ему нужно выкатиться из треда и пойти на завод. Персонаж ни вопрос нормально задать не способен, ни внимательно оппост прочитать, а ждет, что ему тут сопли вытирать начнут.
Как он работать то будет? Ни документацию прочитать внимательно не сможет, ни ошибку в коде найти, ни коллеге вопрос внятно задать.

На завод.
Аноним 01/07/20 Срд 20:35:14 1739375290
>>1739368
Пойдет на курсы по битриксу и станет сертифицированным специалистом по нажиманию кнопку Установить
Аноним 01/07/20 Срд 20:46:35 1739385291
>>1739375
Там ебли тож порядочно бывает говорят.
Аноним 02/07/20 Чтв 02:38:28 1739607292
>>1739290
Мне нужна волшебная книжка чтобы я её прочитал и повысил свой скилл до уровня решить задачу с банкоматом
Аноним 02/07/20 Чтв 03:39:15 1739613293
Скрипт работает очень долго, выдает ошибку, чтоб пофиксить это, разделяю код на этапы:
Вызываю script.php аяксом, в конце скрипта пишу:
header('Location: http://site/script.php?id='.$id);
чтоб он сам себя вызвал с новым параметром get.

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

Пока не могу проверить на реальных данных, чтоб ошибку вызвать, поэтому решил спросить.
Аноним 02/07/20 Чтв 08:47:41 1739651294
>>1739289
Ну я же в учебных целях делаю. Велосипедю как могу.
Аноним 02/07/20 Чтв 09:50:10 1739673295
>>1739607
Школьный учебник математики.
Ну и php.net чтобы оформить это в php код
Аноним 02/07/20 Чтв 12:29:21 1739772296
Пыха всё такое же говно, но Наск выглядит интересно
Кто-нибудь пробовал?
Аноним 02/07/20 Чтв 17:13:55 1740012297
Аноним 02/07/20 Чтв 18:38:48 1740086298
А мне кажется удобным использовать в названиях аттрибутов нижние подчеркивания. Становится ясно, что это аттрибут, а не вызов функции геттера.

$class->attribute_name
$class->attributeName
Аноним 02/07/20 Чтв 19:33:38 1740090299
>>1731888 (OP)
>>1731888 (OP)
Здравствуй ОП , можешь пожалуйста глянуть задачку про алфавит по кругу https://ideone.com/hP3vI5 . В моей получившейся окружности , только первая строчка выглядит непропорциональной , но вроде я все сделал правильно
Аноним 02/07/20 Чтв 20:50:47 1740139300
>>1731888 (OP)
Ребят, такой вопрос, почему многие PHP разрабы используют array() вместо []? Я вообще не могу понять...
Аноним 02/07/20 Чтв 20:56:48 1740143301
>>1740139
Потому что у этого треда шапка протухла лет на пять. Уже восьмая версия на носу, а долбоебы до сих пор типы в функциях не пишут.
Аноним 02/07/20 Чтв 21:05:07 1740147302
>>1740143
То есть это тупо запах старых версий, не более?
Аноним 02/07/20 Чтв 21:18:17 1740158303
>>1740147
Короткий синтакс массивов появился в php 5.4.0, дата релиза 1 марта 2012 года.

Запашок, ебать.
Аноним 02/07/20 Чтв 21:19:18 1740160304
>>1740086
Вызов метода всегда на () заканчивается. Это и без подчеркиваний видно. А вот придерживаться стоит общего ПСР, какой бы он не был. Со временем глаз привыкает к нему и легко читается. Собсно, для того и придумали.
Аноним 02/07/20 Чтв 21:23:35 1740164305
>>1740158
Кому-то через array() просто лучше видно, чем через две закорючки. Люди разные.
Аноним 02/07/20 Чтв 21:29:41 1740173306
Аноним 02/07/20 Чтв 21:35:10 1740182307
>>1740164
Кому? Это просто пиздежь. Нет в природе проекта написанного на пхп 7+, где используется устаревший синтаксис.

Давай ссылку на гитхаб, любая либа, любой фреймвок. Найди проект 2015+ года на пхп 7+ версии, который в основе использует array().
Аноним 02/07/20 Чтв 21:37:30 1740187308
когда запилять нормальную документацию и сайт?
а то несет 00ми годами
Аноним 02/07/20 Чтв 21:40:57 1740195309
Screenshot2020-[...].png 37Кб, 884x252
884x252
>>1737932 - кун снова на связи
анонсы вот делаю блог. и через ресурс контроллер работаю со статьями. делал все сразу на индекс странице, если что
и вот пока что такие роутинге как на пике. пытаюсь сейчас сделать удаление. делаю по быстрому старту от оф доки ларки.
во вьюхе вот такая хуйня юзается https://ideone.com/zau9RB
в самом контроллере вот это https://ideone.com/Uq9T1R
но проблема в том что при клике на кнопку он меня редиректит на blog.local/228 например и выдает 404. че за хуйня и как это фиксить то?
пока что осилил только создание новой статьи в блоге, все норм вышло, теперь вот пробую удалить
Аноним 02/07/20 Чтв 23:50:33 1740299310
>>1740139
Потому что учатся по устаревшим лет на 10 русским гайдам.
не могут осилить phptherightway
Аноним 02/07/20 Чтв 23:52:07 1740303311
Аноним 02/07/20 Чтв 23:55:19 1740308312
>>1731888 (OP)
>>1733218 →
Спасибо за проверку задачи про сдачу и банкомат. Я учёл ошибки, которые были сказаны, и сделал уже оптимизацию. Вот мой конечный вариант, посмотри пожалуйста https://ideone.com/eZJpDe .
Аноним 03/07/20 Птн 00:50:47 1740357313
>>1740182
Очередной борщехлеб с манямиром, в котором всё, что не по фреймворкам, то неправильно.
Щас, блядь, побежал тебе гитхаб шерстить чтобы доказать очередному крокодилу какую-то тупую хуйню на которую он агрится в силу непрошедшего подросткового максимализма.

Это просто алиас и всё.
268-313 Аноним 03/07/20 Птн 01:58:27 1740402314
>>1740308

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

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

>>1740187

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

>>1740090

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

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

Аноним 03/07/20 Птн 01:59:21 1740404315
>>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 можно будет создавать сишные структуры и массивы.
Аноним 03/07/20 Птн 02:00:26 1740405316
>>1738567

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

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

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

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

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

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

Да, верно.

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

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

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

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

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

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

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

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

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

Да, можно так.
Аноним 03/07/20 Птн 06:42:18 1740428317
>>1740357
Беспруфное кукареканье.
Аноним 03/07/20 Птн 08:46:10 1740448318
поставил xampp а запуск скриптов через консоль не работает,команды php нет
Аноним 03/07/20 Птн 11:23:15 1740496319
>У PHP вообще-то хорошая и подробная документация в сравнении с другими языками.
у питона доки оформлены лучше
Аноним 03/07/20 Птн 12:58:41 1740542320
>>1740357
Не просто алиас, а алиас позволяющий писать гораздо более читаемый код.
Аноним 03/07/20 Птн 16:32:53 1740810321
>>1740496
удваиваю. особенно дока по джанге дает смачно на клык доке по ларке
>>1740448
ну ты бы хоть скинул что выдает то консоль а зачем вообще тебе запускать какие то скрипты через консоль?
Аноним 03/07/20 Птн 17:25:38 1740900322
>>1740448

Пишут, что в xampp есть кнопочка для открытия консоли, в которой правильно прописан PATH и команда php выполняется: https://stackoverflow.com/a/62500117
Аноним 03/07/20 Птн 17:40:08 1740925323
>>1740810
>а зачем вообще тебе запускать какие то скрипты через консоль
ну написал рогу,запустил-получил результат.
я у кого то видел в треде,как он через консоль все делал
Аноним 04/07/20 Суб 01:25:20 1741270324
изображение.png 137Кб, 1360x768
1360x768
Шо я делаю не так? Предполагается взять текущую дату и время, затем создать файл с таким именем и содержимым "Hi"?

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

PHP Version => 7.3.11-0ubuntu0.19.10.6

Аноним 04/07/20 Суб 01:39:45 1741271325
>>1741270
Код-то покажи, ёпта.
Аноним 04/07/20 Суб 02:59:59 1741285326
Аноним 04/07/20 Суб 03:30:33 1741290327
>>1741285
И что это за хуйня? Лепишь голые буквы к точкам.
Аноним 04/07/20 Суб 04:00:46 1741291328
>>1741290
Бля, пасиб. Не включил с самого начала error_reporting и мне не ткнули когда впервые делал. Всё поправил, теперь работает отлично, благодарю!
Аноним 04/07/20 Суб 05:19:52 1741296329
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++? Сначала возвращает всё ту же двойку, а потом уже увеличивает? Я не понимаю.
Аноним 04/07/20 Суб 09:21:12 1741328330
>>1741296
При каждом проходе цикла всё его тело будет исполняться заного каждый раз вместе с объявлением внутреннего цикла и j = 2 присваиванием, из за этого у тебя и не выводится четвёрка.
Аноним 04/07/20 Суб 09:32:25 1741335331
пишет снова >>1740195 - кун
аноны, пытаюсь прикрутить валидацию вот таким способом https://ideone.com/elqRlY
и все вроде бы ок, если она не проходит то просто редиректит заново на форму создания статьи, но суть в том что без сообщений каких то. в старой доке была вещь что можно было поставить if ($validator->errors()) return with errors
а в новой такого чет не нашел да и гугл не дал ответов. как решать то такое?
Аноним 04/07/20 Суб 09:35:03 1741336332
>>1740925
так есть же онлайн интепритаторы. да, ббольшую прогу в них не напишешь, но тебе же ведь они и не нужны
Аноним 04/07/20 Суб 12:48:33 1741462333
>>1741328
То есть всегда будет так, что i на единицу больше j? Тогда, каким образом хотя бы одно число не выводится?
Аноним 04/07/20 Суб 13:25:02 1741494334
>>1741462
Нет, при третьем запуске внешнего цикла когда i будет равен 4, запустится внутренний цикл где выполнится выражение i = 2, и из-за того что 4 % 2 == 0 у тебя по условию флагу присвоится true и внутренний цикл завершится из-за break на 9 строке.
Попробуй просто повыводить значения i и j в разных местах внутри циклов для понимания как они работают без условий если всё ещё не очень понятно, ну и не забывай обращаться к теории.
Аноним 04/07/20 Суб 13:30:28 1741497335
>>1741494
Да, в принципе, понял, спасибо. Просто я начинающий и никогда не сталкивался с такими вложенными циклами. Видел разве что вложенные foreach, но там вроде было понятно как всё работает.
Аноним 04/07/20 Суб 13:36:58 1741505336
>>1741497
ААААААААААА! Падажжи! $j при каждом проходе инициализируется как два? И в итоге пробегается по всякому.
Аноним 04/07/20 Суб 13:37:16 1741507337
>>1741505
Ну, при каждом новом проходе для $i.
Аноним 04/07/20 Суб 13:44:27 1741516338
>>1741507
А!!! Сука. Цикл идёт пока $j не нарвётся либо на само число $i, либо на число, на которое $i делится без остатка. В первом случае число признаётся простым, в ином не простым. Я правильно понял?
Аноним 04/07/20 Суб 13:47:11 1741522339
>>1741516
При этом каждый новый пробег цикла с j начинается с двойки.
Аноним 04/07/20 Суб 13:48:54 1741528340
если мне надо сделать в IF множественные проверки на соответствие введеных данных,как это реализовать?
Аноним 04/07/20 Суб 14:43:54 1741642341
>>1741528
Используй готовый валидатор, можешь сам попробовать написать свой
Аноним 04/07/20 Суб 14:45:47 1741644342
>>1741642
я думаю там должны быть логические операторы.Верно?
Аноним 04/07/20 Суб 14:50:32 1741647343
>>1741644
Тебе нужно несколько условий срабатывания тела цикла или шо?


Другой анон
Аноним 04/07/20 Суб 14:54:59 1741654344
>>1741647
что бы в одном условие было несколько параметров на проверку
типа X<100 X>20 и чтобы было только интежер
Аноним 04/07/20 Суб 15:04:50 1741672345
>>1741654
https://ideone.com/ExhydZ

Надеюсь, я тебя правильно понял. Но это самая примитивная проверка (и не факт, что качественно сделанная). Можно ещё делать вложенные, дабы был разный результат на выводе в случае несоответствия одного из параметров.
Аноним 04/07/20 Суб 15:08:26 1741678346
>>1741672
все таки логические операторы...
Аноним 04/07/20 Суб 15:11:30 1741685347
>>1741678
Можешь делать вложенность.

if ($x > 10) {
if ($x < 100) {
if (is_int($x)) {
Аноним 04/07/20 Суб 15:11:48 1741686348
>>1741678
https://ideone.com/yw8i2A
Только никогда не нужно использовать конкретно or или and, всегда используй && и ||, в пыхе ебнутый приоритет у операторов
Аноним 04/07/20 Суб 15:12:57 1741687349
>>1741686
А, они же менее приоритетные, чем =, так шо функции будут работать как говно.
Аноним 04/07/20 Суб 15:12:59 1741688350
>>1741685
ну не так локанично
Аноним 04/07/20 Суб 15:18:02 1741693351
если в форму забить логин с буквами и цифрами,то пых будет считать его как строку?
Аноним 04/07/20 Суб 15:20:03 1741696352
>>1741693
В форме кроме строк ничего и не бывает, это тебе не жсон или хмл
Аноним 04/07/20 Суб 15:34:03 1741713353
какая разница между при ведением типов и settype?
Аноним 04/07/20 Суб 15:43:41 1741721354
>>1741713
Погугли в чем разница между ссылкой и значением
Аноним 04/07/20 Суб 15:48:33 1741724355
>>1741721
>Если вы хотите, чтобы переменная принудительно вычислялась как определенный тип, смотрите раздел приведение типов. Если вы хотите изменить тип переменной, смотрите settype().
те в первом случае это разовая операция без изменения,а вторая насильно меняется и навсегда?
Аноним 04/07/20 Суб 16:42:49 1741815356
>>1741335
ну что, никто не знает чтоли?
Аноним 04/07/20 Суб 19:04:04 1741976357
Аноним 04/07/20 Суб 20:52:45 1742055358
>>1741976
не совсем, но тоже было полезно. спасибо анон. с той проблемой уже разобрался
щас буду другие решать
Аноним 04/07/20 Суб 22:24:55 1742101359
https://ideone.com/E9zYNH

Так, сам не допёр и нашёл в интернете. Функция вывода ряда Фибоначчи до определённого значения. Я сделал, чтобы выводилось только финальное, ибо изначально нужна функция поиска определённого числа. Так вот, это хуйня ебаная дохуя нагружает, то есть на 40-50 уже тяжко, какое-нибудь сотое вряд ли найдёт. Так вот, каким образом можно найти определённое число? У меня возникла идея создать массив и сделать функцию, которая берёт индекс и выдаёт его значение, но чот хуйня какая-то. Находил историю с матрицей, но я для этого туповат.
Аноним 05/07/20 Вск 01:27:19 1742180360
>>1742101
> хуйня ебаная дохуя нагружает
Это из-за рекурсии. Нужно вычисление фибоначи циклом сделать. Ну ил хвостовую рекурсию (что тоже самое). Или оставить простую рекурсию и как-то добавить мемоизацию. Если тебе нужно проверять является ли число фибоначи числом то там есть тесты которые позволяют не вычислять собственно сам ряд.
Аноним 05/07/20 Вск 11:48:53 1742354361
Screenshot1.png 32Кб, 580x465
580x465
Задача про палиндром из туториала

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

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

Аноним 05/07/20 Вск 12:26:22 1742386362
>>1742354
Символ строки souce с индексом index можно получить через $source[index]

Ну и подумай о том, как ты бы вручную проверил строку на палиндромность
Аноним 05/07/20 Вск 12:34:53 1742392363
Screenshot2.png 2Кб, 273x77
273x77
Screenshot3.png 0Кб, 74x25
74x25
>>1742386
>Символ строки souce с индексом index можно получить через $source[index]
Я вывел с помощью этого все символы строки, получился пикрелейтед.
ЧЯДНТ?
Аноним 05/07/20 Вск 13:38:28 1742436364
>>1742392
Дружище, не переживай, в пхп со строками не всё так гладко

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

Вот это вот не совсем правда, ты по индексу из строки получаешь не символ, а байт. Если у тебя многобайтовая строка, то ты получишь не букву, а часть буквы. Чтобы получить многобайтовый символ, попробуй mb_substr($string, $i, 1);
Аноним 05/07/20 Вск 13:44:28 1742449365
>>1742436
Так же предлагаю местным синьорам проверить на палиндром вот такую строку "А роза упала на лапу Азора"
Аноним 05/07/20 Вск 13:45:53 1742452366
t1.png 2Кб, 222x84
222x84
>>1742449
сук двач вырезал смайлики по бокам
Аноним 05/07/20 Вск 13:56:28 1742462367
Screenshot4.png 3Кб, 355x82
355x82
Screenshot5.png 0Кб, 170x34
170x34
Screenshot6.png 4Кб, 355x96
355x96
Screenshot7.png 0Кб, 165x29
165x29
>>1742449
Это как раз текст из задачи в туториале, которую я пытаюсь решить.

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

Чувствую себя дауном, если честно
Аноним 05/07/20 Вск 14:15:11 1742474368
Аноним 05/07/20 Вск 14:18:20 1742480369
>>1742474
Если не понял то подумай почему ты последний символ начинаешь с -0 высчитывать а не с -1
Аноним 05/07/20 Вск 14:26:48 1742487370
все таки нагуглил,как запускать скрипты на винде
Аноним 05/07/20 Вск 14:31:29 1742491371
Screenshot9.png 0Кб, 160x34
160x34
Screenshot10.png 16Кб, 389x403
389x403
>>1742480
То есть последний символ при использовании mb_substr отсчитывается с -1, но тогда отсчет от начала руинится потому что он начинается с нуля, что тогда делать? Или я опять не вдупляю?
Аноним 05/07/20 Вск 14:32:12 1742493372
пук.jpg 51Кб, 1080x531
1080x531
>>1742491
Ну и хочу добавить, что с циклами у меня не очень...
Аноним 05/07/20 Вск 14:52:14 1742510373
fsm.jpg 20Кб, 360x360
360x360
Аноним 05/07/20 Вск 15:02:40 1742519374
Screenshot11.png 4Кб, 385x125
385x125
Screenshot12.png 1Кб, 61x172
61x172
>>1742510
Ну я вообще не знал, что так можно. Пробовал просто $i приравнивать нулю.
Ну и минус у тебя лишний, надо просто $i - 1. Спасибо за помощь c:
Аноним 05/07/20 Вск 15:44:01 1742545375
Аноны, кто в Eloquent | ларавел шарит?
Хочу вот что - есть таблица Products, в контроллере создаю коллекцию так:
$collections = Product::get()
У каждого продукта есть свойства, и мне нужно получить определеныный продукт по свойству. обычным sql запросом это что то вроде:
select * from products join properties on products.id = properties.product_id where products.id = 1;
Как через фасад DB::table() с помощью построителя запросов и объединений понятно.
Как с помощью уже конкретной модели Product - менее понятно, я пока путаюсь в семантике, но вроде для отдельного отношения и его отношений можно выбрать нужные данные из связанных таблиц.
А можно ли как то вызывать построитель запросов для коллекции? Или никак?

Аноним 05/07/20 Вск 16:03:29 1742561376
Аноним 05/07/20 Вск 16:16:05 1742575377
>>1740448
Тебе надо добавить папку, в которой лежит php.exe в переменную path винды чтобы она его видела.
Или как я делаю - создать симлинк этого файла в папку винды.
Аноним 05/07/20 Вск 16:35:08 1742593378
>>1742575
я просто скачал файл пхп и прописал путь
Аноним 05/07/20 Вск 16:48:50 1742616379
Screenshot13.png 46Кб, 614x466
614x466
Screenshot14.png 27Кб, 573x441
573x441
Screenshot15.png 6Кб, 553x53
553x53
Запрашиваю проверку на правильность
Аноним 05/07/20 Вск 18:38:22 1742741380
Аноним 05/07/20 Вск 21:31:15 1742886381
>>1742561
У продукта есть свойства - две таблицы, отношение многие-ко-многим. В промежуточной таблице id продукта и id свойства связываются.
Допустим у продукта1 есть свойство1, свойство2, свойство4 - записи об этом в промежуточной таблице.
так же в этой промежуточной таблице есть связи с между другими продуктами и свойствами. То есть продукт2 может иметь свойство2, свойство1 и т.д. Вроде понятно описал.
моя задача - по набору свойст однозначно идентифицировать продукт. Тоесть если свойства 1, 2, 4 - то идентифифицируется продукт1. Суть в том что при запросе с объединениями в когда ищем про свойствам продукта, в результирующие строки вылазят другие продукты, которые имеют допустим одной свойство 2.

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

Если вдруг нихуя не понял - можешь меня нахуй послать. Я заслужил.
Аноним 05/07/20 Вск 22:48:17 1742929382
Аноним 05/07/20 Вск 23:16:42 1742952383
>>1742929
Ок, спасибо, завтра потестирую.
Аноним 06/07/20 Пнд 01:44:34 1743018384
>>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
Аноним 06/07/20 Пнд 10:51:10 1743055385
аноны. подскажите как правильно узнать про роутинг на ебучем движке flextype cms если интересно для того чтобы построить правильно путь до контроллера который обрабатывает мне форму то ? уже сижу 2 часа мозги ебу что писать в атрибуте action у формы. сам контроллер то правильный и рабочий, но хуй знает какой путь до него указывать
Аноним 06/07/20 Пнд 15:51:24 1743207386
У меня вопрос про запись в файл fputcsv.

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

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

Я озадачился, т.к. задумался, не слишком ли замедляет работу скрипта вызов fputcsv в цикле? И можно ли как-то иначе?
Аноним 06/07/20 Пнд 15:55:38 1743208387
>>1743207
Схуя ли замедляет? Быстро и эффективно по памяти - можно многогигабайтные датасеты молотить последовательно.
Аноним 06/07/20 Пнд 16:16:06 1743228388
>>1743207

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

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

Запись и чтение построчно имеет то преимущество, что не надо тратить память на хранение содержимого всего файла.
Аноним 06/07/20 Пнд 23:33:00 1743476389
Посоветуйте сервис с полной программой обучения. Чтобы там было не только про язык, но и про разработку сайтов, про гит, докер, и все остальное. Желательно интерактив, без вебинаров по 2+ часа.
Аноним 06/07/20 Пнд 23:57:29 1743485390
>>1743476
Личный ментор за дораха.
Аноним 07/07/20 Втр 00:21:33 1743494391
Почему во всех книгах и курсах по PHP, работа с вебом начинается с форм или со встраивания php кода в html страницу? Раздражает такая тупость.
Аноним 07/07/20 Втр 00:22:56 1743496392
>>1743494
А с чего надо начинать.
Аноним 07/07/20 Втр 00:23:02 1743497393
>>1743485
Не подходит. Мне нужна готовая отработанная программа, а не план составленный ноунеймом на коленке.
Аноним 07/07/20 Втр 00:26:45 1743499394
>>1743496
С того как php обрабатывает запросы и как по нормально генерировать html.
Аноним 07/07/20 Втр 03:17:19 1743539395
Почему в print($var++) переменная var изменяется, а при print($var+1) - нет ?
Аноним 07/07/20 Втр 03:21:20 1743541396
>>1743539
Аргументы вычисляются перед передачей в функцию. Первое вычисление изменяет переменную, второе нет.
Аноним 07/07/20 Втр 03:26:57 1743544397
Аноним 07/07/20 Втр 07:46:35 1743574398
>>1743541
В функции сначала вычисляются аргументы, так правильней. Это энергичные или по другому строгие вычисления.

>>1743539
Потому что оператор ++ изменяет переменную, а var + 1 это просто сложение переменной с числом. Саму переменную сложение не меняет.
Аноним 07/07/20 Втр 10:09:28 1743603399
>>1743497
Губу закатай тогда.
Аноним 07/07/20 Втр 10:50:49 1743635400
Аноним 07/07/20 Втр 11:54:04 1743696401
Как делать запросы к сервисам, есть какие то функции для этого?
Аноним 07/07/20 Втр 14:58:16 1743958402
Как в web.config сделать редирект 301 с site1.ru/about/ на site2.ru/about? Я находил разные примеры, но ничего не подошло.
Аноним 07/07/20 Втр 15:34:02 1743980403
анон, посередине страницы втыкаю header('Content-Type: image/jpeg');
и происходит ее краш, хотя мне надо чтобы он вывел картинку которую я обработал через класс Imagick.
как пофиксить то проблему?
Аноним 07/07/20 Втр 15:52:52 1744002404
>>1743980
Насколько я помню, никак. Хидер ставится только в начале ресурса. Ты хочешь чего-то странного. Попробуй загружать картинку отдельно.
Аноним 07/07/20 Втр 16:55:25 1744046405
>>1744002
ну вот я и обращаюсь в отдельный пхп файл. там букввально 5 строк кода.
первым идет header('Content-Type: image/jpeg');
и затем уже 5 строчек с логикой и выводом... но сука у меня почему то блять пустая черная страница нахуй, убираю хедер и непонятный набор символом и всякой хуиты
Аноним 07/07/20 Втр 17:29:07 1744090406
Аноним 07/07/20 Втр 18:47:56 1744137407
>>1744090
да с этим я уже разобрался. рендерю <a href=preview.php><img src=preview.php></a> где лежит код на рендер жпг из шаблона. хуй знает где об этом спрашивать. то ли в жс треде то ли здесь. как мне к этой хуйне прикрутить fancybox ? он массивом рендерит мне пикчи, и те что норм пикчи с ним нормально отрабатывается. а с этим проблемы - он просто в новой вкладке открывает.
Аноним 07/07/20 Втр 19:39:37 1744201408
>>1744046

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

"непонятный набор символов" - это как раз данные картинки, представленные в виде текста.
Аноним 07/07/20 Втр 20:24:27 1744270409
>>1743476
Хекслет. Но освоить всю программу будет сложно.
Аноним 07/07/20 Втр 21:30:41 1744356410
Аноны, чет наткнулся на код такого плана
class Bar{

public $elolquen_collection;

public function Foo(){

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

}
Аноним 07/07/20 Втр 21:41:51 1744369411
>>1744270
>Хекслет
Это триггер для местных. Щас подрыв будет
Аноним 07/07/20 Втр 22:41:10 1744428412
Аноним 07/07/20 Втр 22:47:22 1744433413
>>1744428
Бля, спасибо, я тупой. Знал и забыл.
Аноним 08/07/20 Срд 00:15:42 1744485414
Аноны, а как можно сидеть 6-10 часов в день за обучением чего-либо? Читал тут сегодня, на 2 часа хватило. Мб тайм менеджмент какой-нибудь?
Аноним 08/07/20 Срд 01:23:20 1744531415
>>1744485
Тащемта никаких секретов тут нет, когда жрать нечего будет то будешь и по 15 часов сидеть.
Аноним 08/07/20 Срд 08:25:44 1744664416
>>1744485
>>когда жрать нечего будет то будешь и по 15 часов сидеть
И нихуя это не даст. Можно за неделю и Кнута ебануть - только толку то?
Когда жрать нечего будет - нужно будет кабанчиком скакать по местам трудоустройства.
Аноним 08/07/20 Срд 08:25:51 1744665417
>>1740160
А в базе колонки тоже columnName писать? Не знаю как в laravel просто. Может вы там пишете, что у класса ClassName аттрибут attributeName равен колонке attribute_name в таблице class_name?
Аноним 08/07/20 Срд 09:32:30 1744700418
>>1744201
я же говорю разобрался. но теперь другая проблема >>1744137
Аноним 08/07/20 Срд 15:41:07 1745092419
Аноны, на ларе запилил магазин товары делятся на категории, с админкой (где можно добавлять категории, товары, свойства товаров), с корзиной в которую добавляются эти товары, с конечным расчетом результата и подтверждением заказа , при котором отправляется инфа заказчику на почту. Еще сделал подписку, если товара нет, но появится - покупателю придет уведомление на почту.
Еще какие то вещи туда вкорячил. И небольшой сервис на ноде впридачу через API примитивное работает.
Делал по гайду, но погрузился глубоко, кое что сам уже переписал/дописал. Отдельные моменты на фронте переписал на AJAX.
На джуна тяну? Думаю начать активно рассылать резюме в разные конторы, и продолжать пилить этот магаз, запиливая новые фичи.


Аноним 08/07/20 Срд 16:07:10 1745124420
>>1745092
>На джуна тяну?
Я два с половиной года уже ебашу бэкендики для мобильных приложух и до сих пор этот вопрос себе задаю.
Аноним 08/07/20 Срд 16:14:49 1745132421
>>1743696

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

>>1742616

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

Аноним 08/07/20 Срд 17:19:48 1745210422
>>1745190
>Выходит что нужно пристроить еще и какой-то ORM: DataMapper или ActiveRecord, верно?

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

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

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

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

Через пдо можно автоматом гидрировать данные в указанный класс, вот только если у тебя в таком классе будет конструктор то гроб кладбище пидор
Аноним 08/07/20 Срд 17:25:28 1745216423
>>1745190
Мб тебе поможет то, что TDG нехуй рассматривать вообще как паттерн, а как одну из вариаций репозитория.
Аноним 08/07/20 Срд 18:03:18 1745243424
Capture d’écran[...].png 84Кб, 843x195
843x195
У человека с пикрилейтед все работает, у меня нет.
Could not normalize object of type "Моя сущность", no supporting normalizer found.
Я тоже прописал через аннотации группу.
Ок я пробую более ручным способом: инжектирую NormalizerInterface: та же самая ошибка.
В чем проблема?
И нахуя этот оверинжиниринг, если мне сериалайзер и нормалайзер придется самому писать все-равно?
Аноним 08/07/20 Срд 18:21:24 1745253425
Как правильно читать документацию? От начала и до конца или по необходимости(когда уже пишешь на фреймворке или языке)? Есть предположение что можно пробежаться по возможностям и примерам кода (Не вчитываясь для чего это нужно, кроме заголовка), а если и используешь в проекте, то почитать подробнее.
Аноним 08/07/20 Срд 19:01:09 1745288426
Screenshot2020-[...].png 67Кб, 1332x317
1332x317
в тред отписывается снова >>1737932 - кун
дошел до момента регистрации и авторизации. по доке сделал composer require laravel/ui и затем php artisan ui vue --auth
все создалось и в том числе пуи прикладываю на пике . но проблема в том что при переходе на ту же вкладку register возвращается 404 ошибка. куда копать? в чем проблема? версия ларки 7.6.1 если что
Аноним 08/07/20 Срд 19:01:40 1745289427
>>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 заставляют их делать публичными для своей внутренней магии.


Аноним 08/07/20 Срд 19:06:27 1745293428
>>1745124
В конторе? За какой прайс?
Аноним 08/07/20 Срд 20:52:02 1745337429
>>1745132
>Если ты про отправку HTTP-запросов к сторонним веб-серисам, то для этого есть несколько способов: начиная с функции file_get_contents и расширения curl, и заканчивая библиотеками вроде Guzzle.
Спасибо
Аноним 08/07/20 Срд 21:27:39 1745360430
допустим в БД есть запись,что у анона есть 100баксов.
и таких анонов много.Как посчитать процет по вкладу?
в каждом личном кабинете должен быть скрипт,который выдирает эти 100 баксов считает и записывает заново новое значение с процетами?
Аноним 08/07/20 Срд 21:35:40 1745362431
почему доктрина идет отдельно от фреймворка?
Аноним 08/07/20 Срд 21:53:55 1745377432
>>1745362
Все идет отдельно от фреймворка. Что в симфони https://github.com/symfony , что в ларавеле https://github.com/illuminate .
Умные люди давно поняли, что фреймворк это просто набор компонентов и надо иметь возможность эти компоненты менять при необходимости.
Аноним 08/07/20 Срд 22:21:28 1745393433
>>1745092
Рассылай.
Гайс, чуть более полу года работаю в конторе. Я по палате считаюсь уже сильным и опытным, но контора слабоватая по уровню. Как понять что ты уже прошел уровень джуна? Пытаться проходить собесы на мидла?
Последнее время хочу пересесть на Symfony (паттерны, все дела). Сейчас на проектах у нас Yii и Laravel, и если второй просто медленный, то yii - просто уже заебал своими костылями. Сильно ли тяжелей найти работу конкретно на этом фрейме в снг? Или лучше не пытаться и сразу смотреть в сторону европы (английский на уровне документации/тз, активно подтягиваю)?
Аноним 08/07/20 Срд 22:40:26 1745424434
>>1745393
Ну расскажи какие "костыли" тебя в Yii заебали. Расскажи какие "паттерны" ты будешь писать когда пересядешь на симфони. По твоему ответу будет ясно созрел ты для миддла или нет.
Аноним 08/07/20 Срд 22:50:35 1745443435
как пхп использует ядра процессора?
Аноним 08/07/20 Срд 23:02:51 1745452436
>>1745424
>Ну расскажи какие "костыли" тебя в Yii заебали
Тяжело расширить приложение согласно DDD. Конкретно у меня сейчас похожий таск и я нормально так поебался. Нет внятной ОРМ, не применяются большинство практик новых фреймворков. Вот только вчера выкатили патч который позволил в экшенах тайпхинтить DI зависимости - до этого такое делалось трейтом. И таких вещей можно перечислять довольно таки много. Я не говорю что yii хуевый, я считаю что он хорош для своего времени (которое уже вышло).
>Расскажи какие "паттерны" ты будешь писать когда пересядешь на симфони
Не понял вопроса. Как можно писать паттерны? Их можно реализовывать. И реализуются они не для того чтобы "смотри я сделал", а если задача требует. Да и я имел ввиду то, что Symfony у меня символизируется с хорошим и правильным сложным кодом, а не то что там используют паттерны, а в приложениях не на Симфони - нет.
Аноним 08/07/20 Срд 23:27:06 1745472437
Господа, подскажите пожалуйста.
Как правильно работать с Magento2 на локальной машине? Если сбрасывать кеш каждый раз, то разработка идет очень долго, по 5 минут ждешь когда он там все файлики создаст (Docker, ssd).
Частичный сброс чуть помогает, вместо 5 минут - 2,5, но это все равно очень долго. Поправил-задампил-посмотрел в бразуере х 5 - уже минут 15-20 прошло.

Есть ощущение, что делаю что-то не правильно.
Аноним 09/07/20 Чтв 00:22:01 1745515438
137052597120733[...].png 59Кб, 1600x900
1600x900
Если использовать docker-compose для локальной разработки на винде то проблем нет - все заебись наглядно и по полочкам нахуй. С ебаным бубунтой начинаются анальные ласки. Заходишь такой в bash, создаешь, например, файл миграции бд - он создается, но юзер у ннего root. Phpstorm: ой не могу отредактировать файл. Пиздец блять.
Думаешь ща докер облегчит жизнь под линупсом - а получаешь хуй за воротник. Притом гуглил эту хуйню - каждый год кто-то отписывается о том, что ебется, в той или иной степени, с разрешениями файлов, которые создаются в контейнере.
Аноним 09/07/20 Чтв 01:26:50 1745556439
>>1745515
>Заходишь такой в bash, создаешь, например, файл миграции бд - он создается, но юзер у ннего root.
Под рутом создаешь.

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

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

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

>каждый год кто-то отписывается о том, что ебется, в той или иной степени, с разрешениями файлов, которые создаются в контейнере
Каждый год? То есть ты за несколько лет не освоил как менять права на файлы? И как бы внути контейнера никто ничего не создает вручную.
Аноним 09/07/20 Чтв 02:04:51 1745578440
>>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.
Аноним 09/07/20 Чтв 02:52:36 1745596441
>>1744485
Да запросто - когда тебе интересно, то не устаёшь почти. Можно и сутки просидеть.
У меня, например, постоянно вся ночь как пару часов пролетает.

По ощущениям это как будто новую видеоигрушку изучаешь, но горазло интереснее потому, что это не примитивная игровая система для детей, а норм матан.
Аноним 09/07/20 Чтв 02:53:56 1745598442
>>1744665
В таблицах - через подчёркивание всегда пишут. Можно даже ключи массива так писать.
Аноним 09/07/20 Чтв 03:09:59 1745601443
>>1745556
Использование линукса на десктопе - говноедство. Если у тебя проблемы с пониманием системы "для ламеров" то ты просто очередной мамкин хакер и к серверу на линуксе тебя на пушечный выстрел не стоит подпускать.
Аноним 09/07/20 Чтв 07:42:08 1745616444
>>1745601
У меня есть опыт с обеими ОС. Тоже самое могу сказать, юзать винду - есть говно. Ты не осилил разобраться как менять права, какие тебе сервера? ОС за тебя ничего не делает и не должна.
Аноним 09/07/20 Чтв 07:59:30 1745623445
изображение.png 165Кб, 281x266
281x266
>>1745556
>Под рутом создаешь.
>То есть ты за несколько лет не освоил как менять права на файлы?
Боже...
С помощью exec / run запускаешь йоба скрипт, который генерирует тебе нужный файл / файлы
Ламерскя винда:
Вертишь из-под винды файлом как хочешь. Сидишь программируешь
Божественный десктоп линупс:
Ой а у тебя юзер не тот))0 И что с того что ты запустил композ не от рута? Мне похую ваще. Иди на форумы и ищи решение. Ах да смари тут у меня ошибка вылетает - глянь логи и опять на форумы) Сидишь администрируешь
>За это они лишаются другого. Если при установке программа происходит вылет, - ничего нельзя сделать. Если синий экран - ничего нельзя сделать. Любая нештатная ситуация в винде - это тупик.
Самый популистский текст, который я читал за последнее время. администрировать линупс сервак !== разрабатывать себе очко под линупс десктопом



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

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

Если вы будете называть аттрибуты кэмелкейсом, то вы быстро в Вангу превратитесь.
Аноним 09/07/20 Чтв 09:28:49 1745646448
>>1745616
Причем тут права, пердоля? Они в обеих системах несложно ставятся.
И да - юзать виндут на серверах это говноедство. Точно такое же как и линуксы на десктопе.
Аноним 09/07/20 Чтв 09:33:32 1745649449
>>1745645
ООП пиши верблюдом, процедурку через подчеркивание. Спрашивать почему так не имеет смысла - пхп более 20 лет и так сложилось исторически.
Аноним 09/07/20 Чтв 09:39:05 1745654450
>>1745638
За сколько сделаешь
Аноним 09/07/20 Чтв 10:23:31 1745680451
>>1745596
удвваиваю этого. особенно ахуенно изучать если мелькают нихуевые перспективы как плод твоих изучений
аноны, кто нибудь работал с джумлой? нужно сайт перенести с 2.5 на 3.8. и проблема в том что до переноса надо сделать дамп всех внутренних файлов. доступа к фтп у меня нет, левые расширения которые сделают все за меня тоже не ставятся. как можно вытянуть файлы то ?
Аноним 09/07/20 Чтв 10:24:54 1745682452
>>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
Аноним 09/07/20 Чтв 10:48:37 1745702453
>>1745682
>если человек пишет хуйню, то следить за ним нужно вне зависимости от того на чем проект.
ну хуй его знает. лично я даи пару знакомых с других галер когда нам дают говнопроект на какой то говенной самописной cms где написаны такие костыли и велосипеды со стандартнами 2012 года это я щас уже про фронтенд то у тебя как то волей неволей нет мотивации писать что то нормально и адекватно и поэтому ты пишешь хуйню. а когда нормальный проект - то и смысл писать нормально и адекватно появляется
мимокрок
Аноним 09/07/20 Чтв 11:02:04 1745709454
>>1745702
Лично я за легаси говно берусь только с условием написания нормального кода. Если легаси мешает писать нормально, то выкидывается нахуй и переписывается по человечески. Если такой подход работодателя не устраивает, то пусть поищут говночиста попроще. Хоть какое-то самоуважение надо иметь.
Аноним 09/07/20 Чтв 11:25:56 1745722455
>>1745680
>ахуенно изучать если мелькают нихуевые перспективы
>то нибудь работал с джумлой
Сорян, не удержался)
>. доступа к фтп у меня нет,
Это хуево. Да даже если и есть доступ только к фтп это тоже хуево.
Если есть возможность залить туда какой нить йоба шэлл который сможет все за архивировать. Но если там картинок на пару гигов то земля тебе пухом.
Аноним 09/07/20 Чтв 11:36:24 1745725456
>>1745722
>Сорян, не удержался)
знаю, поэтому сразу после галеры сижу копаю ларавель с реактом чтобы свалить с этого днища побыстрее. сейчас уже до админки дошел, надеюсь к осени свалю на нормальное место
Аноним 09/07/20 Чтв 12:30:10 1745764457
>>1745601
>Использование линукса на десктопе - говноедство.
Поясни мне как сделать аналог i3wm на винде (желательно без анального дроча), и я с радостью пересяду на винду
Аноним 09/07/20 Чтв 13:40:27 1745834458
>>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. И на что мне обижаться то, местами даже благодарен за ответы. Я понимаю что до черточки мидла не дотягиваю, да и эта черточка от конторы к контре разнится.
Аноним 09/07/20 Чтв 14:36:34 1745887459
>>1745654
А ты за сколько в первый раз сделал?
Аноним 09/07/20 Чтв 14:48:55 1745915460
>>1745834
>>за 20 в месяц в разьебаном войной городом
Непризнанные республики на востоке Незалежной?
без политоты, но я бы нашим ебаным боярам в ебальники бы нассал, за то что эти пидоры развернули в Украине, тупо за их шкурный интерес
>>Для меня зп мидла это, ну, от 40-50
А у вас вообще вакансии есть такие?

мимо-шел


Аноним 09/07/20 Чтв 14:53:53 1745924461
>>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к зп, взял и переехал. Война это очень веский повод оттуда съебать.
Аноним 09/07/20 Чтв 15:04:19 1745942462
>>1745915
>А у вас вообще вакансии есть такие?
Нет.

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

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

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

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

>Ну это только твоя проблема
А я ее на кого то скинуть пытаюсь или че? Хули ты такой токсичный?
Аноним 09/07/20 Чтв 15:07:04 1745948463
image.png 34Кб, 400x332
400x332
Сап, короче такая тема, есть простой массив с организациями — $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++;
}
}
В итоге он записывает только последнее значение (Описание), че делать?
Аноним 09/07/20 Чтв 15:31:04 1745978464
>>1745942
>Ну так я его и юзаю. У нас часть кода на нем, часть на чистом rawSql.
С его помощью можно построить практически любой запрос, за исключением наверное CTE и рекурсивных, и то скорее всего можно наебенить. Даже можно получать связи из разных баз данных. Схуяли ты решил что нельзя строить сложные запросы непонятно.

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

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

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

>А я ее на кого то скинуть пытаюсь или че? Хули ты такой токсичный?
Ты агришься на хуйню. Побереги нервы для собесов, вот там у тебя очко подгорит.
Аноним 09/07/20 Чтв 15:51:41 1746008465
аноны переношу сайт с одного хостинга на другой и происходит проблема что сайт с редиректился много раз и не пашет нихуя даже адмиинка. в чем проблема может быть? в .htaccess ? т.к. я с https переношу на http
или как то по ебанутому перенес?
>>1745725 - кун
Аноним 09/07/20 Чтв 15:56:41 1746012466
что такое аттрибуты?
Аноним 09/07/20 Чтв 15:56:56 1746013467
>>1745978
>>Побереги нервы для собесов, вот там у тебя очко подгорит.

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

мимо-гулял
Аноним 09/07/20 Чтв 15:57:48 1746015468
>>1746012
Очень редкие животные, живут в глубоких норах и грызут корни
Аноним 09/07/20 Чтв 16:12:19 1746037469
Аноним 09/07/20 Чтв 16:15:00 1746041470
>>1746013
ого, значит я не один такой спортсмен кто перекатился в погромач
мимо ммашник
Аноним 09/07/20 Чтв 16:23:17 1746049471
>>1746041
Альфа-самцу везде дорога, херочки текут, не то что от всяких задротов
Аноним 09/07/20 Чтв 16:25:28 1746053472
>>1746037
ты мне попроще объясни
Аноним 09/07/20 Чтв 17:25:19 1746120473
>>1746041
Принял, на созвоне, обнимаю в клинче :3
Аноним 09/07/20 Чтв 17:27:22 1746121474
Снимок экрана ([...].png 477Кб, 1366x768
1366x768
я вернулся
Аноним 09/07/20 Чтв 17:47:35 1746138475
>>1745978
>можно построить практически любой запрос
Хочу получить выборку с условием по связям. В ларавел так точно можно и в api ищется за минуту. В yii я до сих пор такую штуку не нашел.

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

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

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

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




Аноним 09/07/20 Чтв 17:52:39 1746143476
>>1746138
Вот нравятся мне люди которые спокойно могут отвечать, не скатываясь в апломб.

мимо-шел
Аноним 09/07/20 Чтв 18:04:45 1746160477
>>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])
Аноним 09/07/20 Чтв 18:13:12 1746172478
>>1745948
>$org[$org_id] = [
Переопределение в цикле. В последней итерации у тебя $org[0] = [5 = 'описание] Нужно $org[$org_id][$counter]
Аноним 09/07/20 Чтв 18:21:58 1746183479
>>1746121
Молодец. А давай теперь давай, реализуй _init().
Аноним 09/07/20 Чтв 18:23:15 1746186480
>>1746183
давай лучше про конструкторы поговорим
Аноним 09/07/20 Чтв 18:29:29 1746191481
>>1746186
>специальный метод - конструктор, который вызывается каждый раз при создании нового экземпляра класса (объекта) с целью инициализировать его, например установить значения свойств. Конструктор, как и любой другой метод может иметь параметры
что бы удобно установить к-л параметры при созд объекта
$user = new User("Джон", 33)
а можно сделать так,чтобы при создании объекта печатался текст с этими параметрами,а не вызывать потом метод с echo?
Аноним 09/07/20 Чтв 18:56:00 1746229482
>>1746191
Конструктор это просто функция, которая ничего не возвращает. Ты в ней можешь свой get_info вызвать после того как все поля заинитишь.
Аноним 09/07/20 Чтв 18:58:36 1746232483
Снимок экрана ([...].png 134Кб, 1366x768
1366x768
>>1746229
я вот так щас сделал
и заработало
Аноним 09/07/20 Чтв 20:04:20 1746296484
Аноним 09/07/20 Чтв 21:53:48 1746375485
Анончики, у меня такой вопрос возник.
Через конфиги апача сделал корневой папкой html/public. Как через .htaccess, находящийся в html/public, обратиться к файлу, который находится в html/src?
Подскажите, кто знает, пожалуйста.
Аноним 10/07/20 Птн 00:24:07 1746491486
>>1746375
Я не уверен что понял о чем ты, но путь так указывается. У тебя index.php в src лежит?
../src/file.extension
Аноним 10/07/20 Птн 06:23:44 1746567487
>>1746491
Нет. index.php тоже лежит в html/public. В индексе через роутер уже обработка запросов происходит. А мне нужно, чтобы к одному конкретному файлу можно было обратиться в html/src
Аноним 10/07/20 Птн 11:29:19 1746688488
кто нибудь тестил php8?
Аноним 10/07/20 Птн 11:33:03 1746693489
Аноны , подскажите мнение ваше по архитектуре, на работе нужно запилить.
Суть такая есть база, к ней нужно написать сервис отчетов.
Есть набор отчетов из базы, они разные.
Для каждого отчета должна быть своя форма ввода данных (диапазон дат и тому подобное, полей ввода может быть штук 5-10)
Ниже - будут выводиться данные полученные из базы.
Отчетов может быть штук 15.
Роутер у меня slim.
Как правильнее сделать - запилить класс Orders - в котором для каждого отчета будет свой отдельный метод?

Аноним 10/07/20 Птн 11:44:16 1746696490
>>1746567
Я на апаче не сижу, но RewriteRule должно помочь. Это чтобы например статику отдать какую то, я правильно понял?

Аноны, должен ли метод возвращать void? Или логичней вернуть true, даже если мне это true не нужно, а использование void - избегать?
Аноним 10/07/20 Птн 11:52:28 1746705491
>>1746694
Если у тебя нет рута для текущего урла, то это 404, показывай шаблон с 404
Аноним 10/07/20 Птн 12:13:57 1746735492
Снимок экрана ([...].png 147Кб, 1366x768
1366x768
Аноним 10/07/20 Птн 12:19:52 1746746493
>>1746735
Может поставишь ide которая сразу тебе покажет что в коде ошибка?
Аноним 10/07/20 Птн 12:23:49 1746752494
>>1746693
>запилить класс Orders - в котором для каждого отчета будет свой отдельный метод?
А сто отчетов - сто методов? Ты программист или где?
Сначала определись из чего состоит твой отчет. Из того что ты написал, а ты почти нихуя не написал, можно предположить такую структуру: https://3v4l.org/V6hSl
Создаешь простую форму редактирования отчета. И потом одним методом показываешь форму и выполняешь запрос.
Аноним 10/07/20 Птн 12:26:58 1746758495
>>1746746
Да тут иде не поможет, нужно поставить мозги, которые читать умеют.
Аноним 10/07/20 Птн 12:34:29 1746769496
>>1746746
>>1746758
а вы не поняли,что я так сделал намерено?
Аноним 10/07/20 Птн 12:37:14 1746773497
>>1746769
Нихуя! Красава. В след раз запости скрин как ты покакал, я теперь твой фанат.
Аноним 10/07/20 Птн 13:28:37 1746814498
>>1746752
>>А сто отчетов - сто методов? Ты программист или где?
А то!

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

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


Аноним 10/07/20 Птн 14:00:21 1746862499
>>1746752
И еще вопрос
В sql запросе есть такая часть

SELECT ...

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

AND p.lastName l - просто отсутствует, и выводятся все фамилии
Аноним 10/07/20 Птн 14:01:12 1746864500
>>1746814
Сейчас с подобной штукой работаю. Только у нас не отчёты а пдф генерируются для клиентов
Аноним 10/07/20 Птн 14:05:54 1746876501
>>1746862
п.с. как вариант я вижу такое:
в запрос передается или конкретная фамилия, или массив вообще всех фамилий, типа

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

Аноним 10/07/20 Птн 14:34:25 1746925502
>>1746862
SELECT * FROM table WHERE column = IF (? = '', column, ?);

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

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

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

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

В целом я придерживаюсь правила не повторять один и тот же код больше трех раз.
Аноним 10/07/20 Птн 14:40:35 1746933504
>>1746925
Дело осложнилось тем (не спрашивай почему так), что среди p.lastName может быть NULL, и соответственно когода я хочу вывести всех - то среди всех еще и NULL должен быть
Аноним 10/07/20 Птн 15:02:35 1746962505
>>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

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

Аноним 10/07/20 Птн 15:05:45 1746967506
>>1746862
Зачем ты пытаешься на sql сделать то, что можно не задумываясь сделать в php?
Аноним 10/07/20 Птн 15:06:58 1746969507
>>1746967
У тебя двадцать разных запросов, в которые нужно подставить параметры. Параметры могут быть, а могут не быть. Твое решение?
Аноним 10/07/20 Птн 15:53:13 1747049508
>>1746962
Чому то у меня не получилось нагуглить то что ты смог, спасибо.
Аноним 10/07/20 Птн 16:01:35 1747058509
Аноним 10/07/20 Птн 16:04:23 1747064510
>>1747058
И хули query builder? Билдить кто будет и где?
Аноним 10/07/20 Птн 16:20:33 1747084511
>>1747064
Ты ваще дегенерат? В коде блять. У тебя у каждого типа заказа свой набор полей, по ним и строй запрос, храни этот набор где хочешь, хоть в очке, хоть в жсоне
Аноним 10/07/20 Птн 16:40:17 1747106512
Ну вот и первый гвоздь в крышку гроба РНР

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 вроде тоже погибает. Ржавый никак не взлетает. Чо остаётся-то? Дотнет с С#?
Аноним 10/07/20 Птн 16:40:55 1747110513
>>1747084
Это я то дегенерат? Ты сам понимаешь че несешь? Ты сначала SQL записываешь в виде JSON, потом по этому JSON'у с помощью query builder'а опять строишь SQL. Пиздец, какой же долбоеб.
Аноним 10/07/20 Птн 16:47:16 1747123514
>>1747106
Сколько у тебя проектов на windows?
Аноним 10/07/20 Птн 18:17:07 1747192515
>>1746138
Не слушай этого токсика. Yii2 - высохшая какашка, забудь про нее, Laravel - это хуяк-хуяк и в продакшен, Symfony - для больших крутых проектов, живущих долгие годы.
Аноним 10/07/20 Птн 18:40:04 1747203516
>>1747192
Ты понимаешь что у symfony и у laravel есть версии? Если проект на симфони 3.* версии это точно такой же высохший кал.
Если бы все кто начинал свой проект знали что он большой и крутой никакие хуяк-хуяк и в продакшен не нужны были бы.
Из всего твоего пассажа правильно только "Yii2 - высохшая какашка". Остальное высер джуна, который нихуя разработки не видел.
Аноним 10/07/20 Птн 19:18:41 1747234517
>>1747123
Ты не понимаешь, что дело не в проектах?! PHP под Windows больше работать не будет... Я, например, на винде могу в соседних папках иметь php5, php7, и все разных версий. Очень удобно, знаете ли. Linux с докером такого удобства не даёт. Опять же, под спермой я распаковал архив с РНР и запустил его, мне не надо ебать себе мозги с зависимостями. Сечёшь, маленький?
Аноним 10/07/20 Птн 19:26:18 1747239518
>>1747203
Symfony - почти всегда выбор продуктовых компаний, имеющих свой зоопарк программистов, которые заинтересованы в работе с актуальными технологиями, поэтому по-настоящему древние версии фреймворка в продакшене практически не встретишь. В отличие от Yii2/Laravel, которые правят балом в аутсорсе, где версии пакетов фактически замораживаются после сдачи проекта, так что вероятность встретить легаси на ларке не так уж и мала.

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

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

>А вообще, иди нахуй
А вообще из того что пишешь можно сделать два вывода:
1) Ты никогда не работал в "большом крупном проекте"
2) Ты никогда не принимал решение какой фрефмворк в проекте использовать.
Аноним 10/07/20 Птн 20:10:53 1747278520
>>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.
Аноним 10/07/20 Птн 20:13:27 1747284521
>>1747234
>од спермой я распаковал архив с РНР
Если ты распаковываешь архивы с пхп то 8 версия тебе еще пару лет точно не пригодится. Майкрософт дали тебе wsl, пользуйся

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

Ты даже и близко не понял о чем я, ты изначально хотел руками писать под каждую вариацию свой запрос, а потом решил ебануть один огромный sql под все нужды, а долбоеб я?
Аноним 10/07/20 Птн 21:10:29 1747336522
>>1747284
>ты изначально хотел руками писать под каждую вариацию свой запрос, а потом решил ебануть один огромный sql под все нужды
Это ты нихуя не понял, но влез в разговор.

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

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

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

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

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


Вся суть.
Аноним 10/07/20 Птн 21:26:52 1747353525
>>1747336
>семечки для OLAP
>ебаться с git flow или что там у вас

Ясно, сисдамин в треде. Тебе рили наверное проще 100 методов разных сделать и потом поддерживать это следующие 3 года
Аноним 10/07/20 Птн 21:28:28 1747356526
>>1747350
Не ешь говна, есть проверенный временем php 4, не хипстерский, для олдов.
Аноним 10/07/20 Птн 21:29:28 1747358527
>>1747353
>Тебе рили наверное проще 100 методов разных сделать и потом поддерживать это следующие 3 года
В глаза ебешься? Я как раз против написания ста методов.
Аноним 10/07/20 Птн 21:30:07 1747359528
>>1747356
Это троллинг тупостью?
Аноним 10/07/20 Птн 21:42:14 1747374529
>>1747338
У тебя есть класс Бентли. Создаешь у него есть статический метод "показать фотку меня на фоне бентли". Теперь ты можешь флексить, не имея бентли. Тебе не обязательно иметь бентли, чтобы флексить перед знакомыми. Тебе не нужен гараж для него и не нужно тратиться на бензин.
Аноним 10/07/20 Птн 21:45:15 1747380530
>>1747358
Так у сись по другому не получится.

Ну если серьезно, то в твоём же примере
>Как в sql передать в даннном месте запроса AND p.lastName = all
можно просто не указывать WHERE lastname, и угадай КАК это можно сделать?
Аноним 10/07/20 Птн 21:48:19 1747385531
>>1747374
прикольный пример,но нихуя не понятно.
мне показалось,это чтобы создать класс,который имеет персональное право пользоваться своими методами и свойсвами без клепания кучи объектов.Или как?
Аноним 10/07/20 Птн 21:54:58 1747392532
>>1747385
Короче, поясняю не как детсадовцам. Есть класс, есть у него статический метод, этот метод это по сути обычная функция под неймспейсом класса, то есть ты можешь написать Money::format без создания инстанса Money. Нахуя это нужно? В пыхе чтобы не ебаться с конфигом композера (хотя там букваьно 1 строчку дописать), можешь так описывать вспомогательные функции. Еще юзкейс это создание объекта чтобы сэкономить 1 файл. Например конструктор класса принимает 10 параметров, а у тебя на входе просто массив данных с этими параметрами, ты делаешь статический createFromArray(fromSomeObject) или еще какое-то говно, и руками потом из входного массива передаешь в конструктор данные, возвращаешь self или static, тут уж как душа ляжет
Аноним 10/07/20 Птн 21:55:58 1747394533
>>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, ?);





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

>Сколько пхп кода нужно написать чтобы все три запроса преобразовать как ты предложил?
Ну на один запрос примерно вот столько
Аноним 10/07/20 Птн 22:04:58 1747408536
>>1747394
Можешь создать представления в SQL, селектить оттуда и не ебаться.
Аноним 10/07/20 Птн 22:06:06 1747412537
>>1747406
А на все? У парня, которому я помогал было 16 запросов. А будет больше. А аналитические запросы могут быть пизда здоровыми. И зачем весь этот пхп код, когда сам SQL может эти проблемы решить?
Аноним 10/07/20 Птн 22:07:39 1747416538
>>1747408
Дядя, в запрос нужно подставить параметр. А если этот параметр не задан, то нужно проигнорить условие. Спор о том как это лучше сделать с помощью пхп или sql.
Аноним 10/07/20 Птн 22:10:14 1747420539
Аноним 10/07/20 Птн 22:11:43 1747421540
>>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 , может зайдет
Аноним 10/07/20 Птн 22:15:40 1747426541
>>1747416
Данные получать запросами, красивости наводить php. Если ненужны фентифлюшки, то зачем пхп? Вот если честно, когда у меня спрашивают что не так с системой, мне запрос для анализа написать легче, чем в пхп страницу строить для них.
Аноним 10/07/20 Птн 22:21:47 1747433542
>>1747402
> Но при чем тут право?
ну как объясняют,что класс-это типа шаблон,а объект-готовое изделие,их можно наклепать кучи.А в этом случае класс как самостоятельный элемент в себе ,как целая прога,котору можно запустить.Ну это я так по тупому понял
Аноним 10/07/20 Птн 22:27:52 1747442543
>>1747421
Ты тред вообще не читаешь? Я прекрасно знаю как что делается в вебе и его окресностях. Я просто помогал другому анону правильно сделать сделать сервис построения отчетов, чтобы не писать тысячи строк кода. И тут набежали гении с query builder'ами, которые даже не удосужились разобраться о чем идет речь.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Аноним 11/07/20 Суб 00:42:52 1747602551
>>1747380
>>можно просто не указывать
>> WHERE lastname
Я не могу не указывать, точнее могу конечно, - дербаня sql как строку, но тогда генерация запроса, с учетом подстановки из вэб формы данных превращается в полный бардак, потому что водном запросе мне нужно иметь возможность получить и отдельные значения, и все значения + null не меняя самой строки sql запроса.
Аноним 11/07/20 Суб 00:48:13 1747610552
>>1746814

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

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

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

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

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

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

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

Аноним 11/07/20 Суб 00:52:48 1747617553
>>1747600
Спасибо за советы.
Построители запросов из ORM я юзать врядли буду, потому что под нужную задачу построить sql - запрос не самое простое дело. База в десятки миллионов записей в отдельных таблицах, а общее количество таблиц близко к 600, и всему этому говну лет 6,и спроектировано оно было как говорили более компетентные люди через сраку.
Иногда такие запросы выходят что хуеешь о того что это вообще работает. 20 объединений - норм тема.
Аноним 11/07/20 Суб 00:55:00 1747621554
>>1747610
>>- HTML в БД - это вообще ад, у тебя будет код построения отчета в файлах, а HTML с формой отдельно в базе. Забудь про такие идеи
Да в сущности я в серьез о таком не думал, слишком деревянно.
Аноним 11/07/20 Суб 00:57:37 1747624555
>>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 тут не решит проблему.
Аноним 11/07/20 Суб 01:33:44 1747660556
>>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 не поддерживает.

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

Аноним 11/07/20 Суб 10:32:51 1747780557
Чет не пойму как Gate в ларавел работает.
В сервис провайдере:

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

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

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

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

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

<?php

phpinfo();

Там где-то в начале будет написан путь к используемому php.ini.
Аноним 11/07/20 Суб 19:18:33 1748414561
php.png 2Кб, 427x43
427x43
>>1748397
вот я и создал этот php.ini который сейчас Loaded Configuration File
Аноним 11/07/20 Суб 19:28:02 1748417562
>>1748414

А сам файл php_mbstring.dll в папке PHP есть?
Аноним 11/07/20 Суб 19:34:51 1748423563
>>1748417
да, есть. проблему я решил. запустил через командную строку, там отображается ошибка подключения модуля. он почему то подключает по пути C:/php/ext а у меня установлен в С:/php7/ext я хз почему он берет именно такой путь и где это изменять, но все решилось переименовывание папки. Спасибо большое анон, что откликнулся
Аноним 11/07/20 Суб 20:00:03 1748446564
A как экранировать часть запроса к MySQL, чтобы он не окружался скобками? Например, чтобы всунуть его внутрь запроса LIKE '%:search%'? Подходящего PDO::PARAM_ вроде не нашел.
Аноним 11/07/20 Суб 20:09:04 1748457565
image.png 5Кб, 386x42
386x42
О, догадался
Аноним 11/07/20 Суб 22:02:40 1748571566
Аноним 11/07/20 Суб 23:18:53 1748661567
>>1748457
А если в $search будет что-то вроде '50%'?
Аноним 12/07/20 Вск 00:40:00 1748730568
>>1748661
Ну все, пиздец тогда.
Аноним 12/07/20 Вск 08:24:20 1748829569
>>1747192
Ну да, я работаю на симфони - и тока крупные проекты всё. Хотя не понимаю почему, я и на ларке писал, ну тоже годный фреймворк.
Но на симфони прям легко писать любые проекты, даже хоть обычный блог, симфа необязательно для крупного проекта.
Аноним 12/07/20 Вск 08:35:26 1748832570
>>1747617
Бери ОРМ с билдерами и не мучайся, и кэшируй просто. Доктрина справится с любым количеством запросов и джойнами. Если так хочется sql-запросы чистенькие, то можешь из доктрины их и забирать, она всё за тебя сделает.
Аноним 12/07/20 Вск 11:39:12 1748904571
>public function write(ShopProduct $shopProduct)
{
я так и не понял,что это.Где прочитать подробно?
Аноним 12/07/20 Вск 12:15:18 1748921572
Аноним 12/07/20 Вск 14:40:18 1749142573
>>1748904
Метод? В скобках - сервис-контейнер, DI. Нужный класс подключаешь его в use сверху, потом засовываешь его либо в конструктор, либо в метод, и пользуешься им через $shopProduct
Аноним 12/07/20 Вск 14:49:50 1749168574
>>1749142
В скобках - аргумент функции. Ну хорошо, что сейчас все поголовно знают о ДИ, но нахера этим знанием обычные аргументы то перекрывать? Хоть через ДИ его инжектнут, хоть ручками - это просто аргумент останется.
Аноним 12/07/20 Вск 16:56:07 1749370575
зачем нужно ООП?
как заготовка для другой проги или как огромная функция внутри проги?
Аноним 12/07/20 Вск 20:30:51 1749627576
Аноним 12/07/20 Вск 20:46:57 1749644577
>>1749370
Зачем нужны заглавные буквы?
Как заготовка для другого предложения или как огромные символы внутри предложения?
Аноним 12/07/20 Вск 22:42:30 1749739578
Аноны, как в ларавел сделать или в однгом роуте?
типа Route::get('/', MainController@Main);
типа Route::get('/main', MainController@Main);
только одной строкой
пробовал так
типа Route::get('/{main}', MainController@Main)->where('main', 'main|[""]');
ночет не получилось
Аноним 12/07/20 Вск 22:44:36 1749744579
>>1749739
лол, получилось так

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

ООП (объектно-ориентированное программирование) - это подход к написанию кода с помощью объектов. У объекта есть свойства и методы - функции для работы с объектом. Ну например, мы можем в магазине сделать объекты "Товар", "Скидка", "Заказ", у товара сделать свойства вроде "название", "цена", и метод "рассчитать стоимость со Скидкой".
Аноним 13/07/20 Пнд 00:32:55 1749810581
>>1731888 (OP)
(Сделать ответ на шапку)
Здравствуй ОП, можешь проверить задачку про расчет маршрута/навигатор/поиск пути https://ideone.com/q1Uk29 . Решал, не как было предложено подсказками рекурсией, а с помощью алгоритма Дейкстры.
Еще есть вопрос по алгоритму Дейкстры, соседние узлы рассматриваемого узла можно же можно рассматривать по порядку, независимо от того какой цены ребро ведет к ним? Я собственно так и делал.
А так же, я решил как было предложено в твоем учебнике с помощью рекурсии вышло более элегантно https://ideone.com/ukgSft . Прошу пожалуйста это тоже глянуть. Мне тут не совсем нравится моя рекурсия. Я хотел, чтобы варианты возможных путей возвращались только в конце работы функции по завершению всего стека вызовов. У меня же по иному, присутствуют промежуточные возвраты еще не всех вариантов.
Аноним 13/07/20 Пнд 08:35:28 1749957582
>>1749810
Чувак, скажи - я могу написать магаз, но вообще не умею в задачи на нохождение пути/расчет маршрута, подобные той что ты написал. Хочу понемногу приобщаться.
Это теория графов? С чего начать?
Аноним 13/07/20 Пнд 09:13:52 1749970583
>>1746172
Бля, большое спасибо!
Аноним 13/07/20 Пнд 12:04:37 1750054584
>>1748829
Симфа покрывают любой масштаб, потому что фреймворк построен на конфигурациях. Ларку с некоторыми оговорками можно понимать, как преднастроенный конфиг Симфони, когда выбраны определенные паттерны для решения определенных проблем.
Аноним 13/07/20 Пнд 12:07:45 1750057585
>>1750054
а можно на голом пыхе написать
Аноним 13/07/20 Пнд 13:56:04 1750147586
>>1750057
в нулевых так и писали
Аноним 13/07/20 Пнд 18:07:06 1750444587
как лучше установливать аргументы в методы,через сеттеры или назначив напрямую во время вызова через = ?
Аноним 13/07/20 Пнд 18:22:45 1750459588
Снимок экрана ([...].png 157Кб, 1366x768
1366x768
почему мой эксперимент провалился?
Аноним 13/07/20 Пнд 18:27:16 1750464589
>>1750459
сука
>так как статические методы вызываются без создания экземпляра класса, то псевдопеременная $this недоступна внутри метода, объявленного как статический.
Аноним 13/07/20 Пнд 18:49:24 1750494590
>>1750459
У тебя два раза public написано, и вообще ты какую-то хуйню творишь
Аноним 13/07/20 Пнд 18:55:32 1750502591
>>1750494
через self попробывать?
Аноним 13/07/20 Пнд 19:11:55 1750525592
>>1750502
Ты что пытаешься вообще сделать?
Аноним 13/07/20 Пнд 19:13:33 1750528593
>>1750525
>User("Oleg","Moskow",22)::get_date();
вот это или так нельзя?
Аноним 13/07/20 Пнд 19:16:52 1750534594
>>1750459

Статический метод вызывается так:

User::get_date();

Конструктор при этом не вызывается, $this использовать нельзя.

Почитай мануал повнимательнее.

Аноним 13/07/20 Пнд 19:20:08 1750536595
Снимок экрана ([...].png 153Кб, 1366x768
1366x768
>>1750534
я выше написал,что обосрался с this
я тогда вот это еще накодил
Аноним 13/07/20 Пнд 19:21:10 1750537596
>>1750528
(new User("Oleg","Moskow",22))->get_date();

Вот так только
Аноним 13/07/20 Пнд 19:24:02 1750540597
>>1750537
>>1750537
короче,че я понял-конструктор и класс со статикой не используют
Аноним 13/07/20 Пнд 19:43:02 1750571598
>>1750540
Лучше бы ты понял как документацию читать, тролль мамин
Аноним 13/07/20 Пнд 19:45:18 1750575599
>>1750571
с чего ты решил что я тролль?
Student list 13/07/20 Пнд 21:01:22 1750637600
raspidorilozapis.mp4 8643Кб, 1360x768, 00:01:54
1360x768
Аноним 13/07/20 Пнд 22:56:28 1750722601
>>1750637

Дизайн, конечно, интересный, но почему при ошибке заполнения формы она очищается? Неудобно же, все по второму разу вводить. Тут в уроке описан алгоритм, который позволяет подставлять в форму введенные ранее данные: https://github.com/codedokode/pasta/blob/master/forms.md

Код постараюсь чуть позже глянуть.
Аноним 13/07/20 Пнд 23:08:29 1750733602
>>1750722
>Тут в уроке описан алгоритм, который позволяет подставлять в форму введенные ранее данные
Что-то пропустил эту часть, сейчас сделаю.
Аноним 13/07/20 Пнд 23:54:42 1750760603
image.png 7Кб, 304x139
304x139
image.png 6Кб, 450x123
450x123
Кстати, как избежать вот такой ситуации? Гитхаб из-за дампа базы данных думает, что у меня TSQL проект.
Аноним 14/07/20 Втр 00:48:30 1750789604
>>1749957
Чувак, я даже близко не понимаю как написать магаз и вообще как сделать что-то близкое к реальности. Есть книга грокаем алгоритмы. Там есть глава, в которой сначала объясняются графы, поиск в ширину, а затем уже алгоритм дейкстры. Никакой мат. теории вообще. Там же и представлено решение, но на Python'е. Лично я это когда-то прочитал, перед решением задачи перечитал. Но, там задача объяснялась с направленными графами. Поэтому я еще глянул на википедию, там очень хорошо описан пример решения такой задачи, но при этом непонятный псевдокод. При решении задачи старался не заглядывать на реализацию на Python'e из учебника, чтобы самому набить шишек как следует.Сразу предупреждаю, там есть ошибка: "Алгоритм Дейкстры работает только с направленными ациклическими графами", так вот с направленными работает, и с ациклическими кажется тоже. Главное он не работает с графами с ребрами содержащими отрицательные веса, это уже другой алгоритм, там тоже все на основе графов.
Аноним 14/07/20 Втр 00:54:56 1750793605
>>1749957
>>1750789
фикс
Сразу предупреждаю, в учебнике есть ошибка: "Алгоритм Дейкстры работает только с направленными ациклическими графами", так вот с ненаправленными тоже работает, и с циклическими кажется тоже.
Аноним 14/07/20 Втр 16:34:54 1751332606
поменяйте пики на ОП посте
Аноним 16/07/20 Чтв 16:28:24 1753009607
Аноним 16/07/20 Чтв 20:44:01 1753237608
>>1753009
Потому что $number это новая переменная и в ней всего лишь копия данных из массива.
Чтобы поменять исходный массив нужно либо менять значения по ключу, либо получать в $number значение по ссылке https://ideone.com/xYnZhY
Аноним 16/07/20 Чтв 21:04:58 1753256609
как нажатием кнопки запустить к-л процесс на сервере?
это к кнопке надо привязать адрес скрипта?
Аноним 16/07/20 Чтв 22:17:35 1753313610
sample470ccce36[...].jpg 147Кб, 850x929
850x929
Ни имею опыта в кодинге. Можно ли быстро найти работу по php ?
Аноним 17/07/20 Птн 02:05:28 1753432611
>>1753313
Быстрее, чем в других языках (кроме может javascript), но велика вероятность её ужасного качества (и как заработка, и как места для технического роста, не говоря уже о карьерном).
Короче, внимательно следи, куда устраиваешься хотя лол без опыта пойдешь туда, где возьмут
Аноним 17/07/20 Птн 07:50:21 1753525612
>>1753256
В коде который обрабатывает форму пишешь в `python script.py` или функцию exec('python script.py'). И то и другое запустит консольную команду
Аноним 17/07/20 Птн 08:15:50 1753532613
>>1731998
создать в обработке адресов правило и перенаправлять запрос в нужное место, тренируйтесь на кошках - не сложно
Аноним 17/07/20 Птн 08:16:53 1753533614
>>1753532
правила создаются здесь /bitrix/admin/urlrewrite_list.php?lang=ru
Аноним 17/07/20 Птн 08:24:58 1753539615
Аноним 17/07/20 Птн 08:26:43 1753540616
>>1753256
по-разному, кури маны
Аноним 17/07/20 Птн 08:28:08 1753541617
Аноним 17/07/20 Птн 10:18:25 1753597618
image.png 3Кб, 492x34
492x34
image.png 4Кб, 358x34
358x34
Нормально ли так обращаться к методу другого класса?(пикча 1)
Если она установлена таким образом?(пикча 2)
Хочу понять как работает Information Expert в grasp.
Аноним 17/07/20 Птн 11:50:15 1753637619
Почему у меня такое ощущение, что у пыхера работодатель требует практически таких же знаний, как для фронтенд-макаки, плюс собственно пых, фреймворки и сопуствующее, но платит чуть не в два раза меньше чем фронтэндщику? Буду рад если развеете мое заблуждение ( если это заблуждение ).
Аноним 17/07/20 Птн 14:20:25 1753844620
15949703063870.jpg 17Кб, 899x34
899x34
>>1753597
Не нормально. Я не знаю где ты читал про грасп и инкапсуляцию, но в твоем примере никакой инкапсуляции нет и никаким принципам он не следует. Если проблемы с английским, то вот отличная статья на русском https://habr.com/ru/company/otus/blog/491636/ . Если коротко, то принцип такой: информация должна обрабатываться там, где она содержится.

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

Где содержится информация в твоем коде? Опять хуй его знает. В объекте файла? Нет нихуя, он как наташка скачет по хуйцам других объектов, разбрасывая свою информацию направо и налево. В объекте Ашотика, в который ты сеттишь файл-наташку? Опять нихуя, Ашотик у нас тоже дырявый. Он потрошит наташку, а все содержимое передает таким же дырявым друзьям. В итоге найдя где-то в твоем коде переменную "$name" невозможно сказать чье это, и в скольких полупидорах это уже побывало.
Аноним 17/07/20 Птн 14:47:02 1753875621
спа и пых дружат?
Аноним 17/07/20 Птн 15:15:28 1753909622
>>1753637
У меня может сложиться ощущение что мой член в твоей жопе. Но где же пруфы? Так что с ощущениями иди нахуй.
Аноним 17/07/20 Птн 15:25:01 1753915623
Аноним 17/07/20 Птн 15:43:48 1753928624
>>1753915
Попозже сделаю пулл реквест подробный. А для затравочки вот это:

(new DirectoryManager())->setDirectory($this->getDirectory())->create();

Как это читать? У тебя самого нет ощущения что что-то не так идет? Код это не головоломка, и пишется он для людей, и если он хоть какую-то важность имеет его будут читать. Почему нельзя написать просто?
$directory = $directoryManager->createDirectory($path), а лучше еще короче
$directory = Directory::create($path)
Аноним 17/07/20 Птн 15:52:42 1753936625
>>1753915
$fu = new FileUploader(); $fu->store();
Что случится? Тебе если для работы класса нужны разные параметры, то ты их в конструкторе определяй
Аноним 17/07/20 Птн 16:09:19 1753952626
>>1753909
Вот что я написал
>Буду рад если развеете мое заблуждение ( если это заблуждение ).
Твое заблуждение я развеять могу: в жопе у меня ничего нету, тебя я не знаю и вообще я один в доме. Где же пруфы? Я их ни у кого и не просил. А вообще, по твоему сообщению складывается ощущение, что ты реально контуженный, обиженный жизнью имбецил мысль о хуе в жопе - это не единственное твое заблуждение в жизни. Вообще сомневаюсь, что твой мозжечок способен породить что-то адекватное, если ты пишешь такую поебень.
Аноним 17/07/20 Птн 22:23:41 1754228627
изображение.png 776Кб, 1215x3449
1215x3449
изображение.png 705Кб, 1196x3053
1196x3053
>>1753637
Да вроде одно и тоже
Аноним 17/07/20 Птн 23:09:02 1754267628
>>1754228
Хуйня. Как минимум, адаптивную, резиновую верстку, vue.js ( если ларавель ) и какой-то css фреймворк абсолютно для любого php trainee в обязательных требованиях указывают, например.
Аноним 17/07/20 Птн 23:30:40 1754277629
>>1731888 (OP)
Как спроектировать базу интернет-магазина, как хранить картинки товаров?
Аноним 17/07/20 Птн 23:48:19 1754286630
Screenshot2020-[...].png 38Кб, 742x310
742x310
Screenshot2020-[...].png 15Кб, 643x287
643x287
Сап програмач. Пытаюсь освоить связи в ларке пока что один ко многим - к каждой статье привязана только одна категория
Так вот. Хочу создать 80 статей и к ним 7 категорий. Сидер статей вызывается раньше на 1 пике. Хочу реализовать такую фишку что сначала он создает их с null, а потом я обновляю мой category_id уже у ранее созданных моделей. Но при таком коде у меня по итогу получается: 80 статей с null, 87 категорий, и еще 80 с рандомными category_id до 87 естесн. Как такую залупу то фиксить? уже второй вечер мозги ебу
Аноним 17/07/20 Птн 23:55:09 1754289631
>>1754277
как вариант можешь развернуть себе голый опенкарт и глянуть как там база спроектирована и реализована
> как хранить картинки товаров?
создаешь таблицу с полями id, product_id привязываешь картинку к определенному товару, name записываешь туда название картинки в стиле abu.png
Аноним 18/07/20 Суб 02:33:15 1754364632
>>1753637
Ложное ощущение. Задачи у фронтенда и бекенда разные, стеки тоже разные.
Как правило спрашивают:
- Архитектуру (у бекенда на пхп это обычно мвц, у фронтенда обычно мвп с презентерами и всякие редаксы поверх)
- Язык (пехапе и жскрипт отличаются очень сильно, на самом деле)
- Экосистема (библиотеки, тп, без комментариев)
- Инфраструктуру (в твоём случае сервера и базы данных, в случае с фронтендом это особенности браузеров)

Как видишь, общее может быть только в архитектуре.

НО!
Как бекендщик, ты всё равно обязан знать фронтенд на начальном уровне, и это изи могут спросить. Во-первых, потому что пехапе часто используется для шаблонизации и в этом случае фронтенд вырожден, а вся логика происходит на бекенде. Во-вторых, потому что ты не должен звать мамочку, если тебе нужно что-то по-быстрому поправить на фронте.
Аноним 18/07/20 Суб 02:40:44 1754365633
>>1754286
Вызывая метод create, Eloquent создает 80 экземпляров сущности Article и сразу сохраняет их в БД. Затем ты создаешь 80 экземпляров и сохраняешь их вручную уже внутри коллбэка, поэтому и получается 160 статей. Я бы вызывал сначала сидер категорий, затем сидер статей, а то ты пытаешься присвоить статьям категории внутри коллбэка, но не создал еще ни одной. Коллекцию категорий можно получить вне коллбэка один раз (в текущей реализации ты делаешь 80 запросов в БД за одними и теми же категориями), затем передать в него при помощи use и доставать случайную категорию из коллекции методом random.
Аноним 18/07/20 Суб 05:35:44 1754391634
>>1754289
>привязываешь картинку к определенному товару
Где привязывать?
Аноним 18/07/20 Суб 13:31:55 1754502635
>>1754365
окей, убираю create тогда чтобы не создавались 80 статейй, и первым запускаю сидер категорий. а дальше как поподробней можешь расписать анон желательно с кодом чтобы из этих 7 категорий он мне ввыбрал рандомную и вставлял в каждую новую статью, а не создавал еще дополнительно 80 категорий
Аноним 18/07/20 Суб 13:33:07 1754504636
>>1754391
всмысле где ? иди учи sql раз такие вопросы появляются
Аноним 18/07/20 Суб 13:41:54 1754514637
вот допустим есть сайт.Там нужна админ панель.
а вход в админ панель как делать-через морду сайта или через сервер самого сайта,как вообще?
Аноним 18/07/20 Суб 13:42:06 1754515638
Аноним 18/07/20 Суб 13:45:25 1754521639
Ебать что бы вктится в это ваше пхп нужно знать все, это просто пиздец какой то, неужели все так пиздецки сложно на самом деле?
Аноним 18/07/20 Суб 15:25:41 1754659640
>>1731888 (OP)
Аноны, написал тут функцию для подсчета количества купюр, из предлагаемой суммы. Оцените, насколько сильно это говнокод.. Можно добавлять новые купюры, очко не ломается.

https://ideone.com/pEESRH
Аноним 18/07/20 Суб 15:37:59 1754678641
>>1754521
Что ты, все очень легко. Просто купи курс...
Аноним 18/07/20 Суб 19:41:51 1754896642
>>1754514

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

>>1754277

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

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

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

Хорошей идеей будет всегда сначала сохранять картинку на диск, а только потом в БД, тогда даже при ошибке загрузки в БД не будет ссылок на несуществующие картинки.
Аноним 18/07/20 Суб 20:06:03 1754909643
>>1750444

Аргументы передаются через скобки. Через конструктор или сеттеры в объект передаются те параметры, которые будут нужны много раз или нескольким методам (например, объект соединения с БД). Это описано в уроке про DI: https://github.com/codedokode/pasta/blob/master/arch/di.md

>>1753915

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

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

Также, ты зря ловишь исключение. У тебя тут ошибка:

> public function store() : File
> return $exception->getMessage();

Ты возвращаешь строку, а это делать нельзя. Не надо ловить исключение, пусть оно вылетает и пусть его ловит код выше, который знает, что с ним делать (например, показать пользователю). Твой класс ничего полезного с исключением сделать не может, ошибку вывести не может, значит не надо его ловить.
Аноним 18/07/20 Суб 20:06:50 1754910644
>>1753256

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

>>1748661

По идее знаки-спецсимволы % и _ надо экранировать, добавляя бекслеш перед ними: 50\%.

Аноним 18/07/20 Суб 20:41:39 1754948645
>>1754909
те такой подход
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
Аноним 18/07/20 Суб 21:02:38 1754957646
Аноним 19/07/20 Вск 11:47:07 1755310647
Аноним 19/07/20 Вск 14:21:17 1755351648
Почему мы всегда так умираем после бамплимита? По-моему нелогично как-то.
Аноним 19/07/20 Вск 20:36:22 1755543649
>>1755351
По моему очень символично. PHP же создан чтобы умирать.
Аноним 19/07/20 Вск 20:37:02 1755544650
>>1754896
>Обычно делают таблицу с информацией о картинках, и в ней, например, хранится имя картинки, размеры. А сами картинки лежат в отдельной папке или даже в дереве папок (например, разбитые по месяцам загрузки).
>
>Плюс в том, что эту таблицу можно связывать с другими таблицами (например, статьями), и видно, где какая картинка используется.
>
>Часто также при загрузке картинки сохраняют ее уменьшенные копии, на случай, если где-то нужны картинки меньшего размера.
>
>Хорошей идеей будет всегда сначала сохранять картинку на диск, а только потом в БД, тогда даже при ошибке загрузки в БД не будет ссылок на несуществующие картинки.
Спасибо
Аноним 20/07/20 Пнд 19:46:46 1756210651
image.png 7Кб, 647x153
647x153
>>1731888 (OP)
ОП из теории твоего урока по ООП пикрелейтед, тут, если не ошибаюсь стоит определить класс как абстрактный.
Аноним 21/07/20 Втр 13:33:17 1756701652
В чем прикол Zend framework?
Судя по названию он имеет отношение к создателямпереписывателям актуального интерпретатора, но почему его так боготворят?
Аноним 21/07/20 Втр 16:17:06 1756848653
в реал проектах бывает рекурсия?
Аноним 21/07/20 Втр 19:18:34 1757001654
Как проходит взаимодействие фронтендера и пыхера? Верстальщик делает мертвые страницы на html/css с js'om, после чего пыхер подтягивает этот макет к себе в проект, берет и перехуяривает там все шаблонизатором? Верстальщик потом что-то понимает в конечных шаблонах? Если ему надо что-то изменить, то он ведь редактирует шаблон, верно? Вангую что я какую-то лютую глупость сморозил, так как ньюфажина и вообще не представляю как всё происходит в реальной жизни.
Аноним 21/07/20 Втр 20:05:19 1757039655
<?php
if (isset($_POST)) {
echo"Имя:" . $_POST['name']." \n ";
print"Город:" . $_POST['city'];

}
почему не работает перенос строки,дажу Php_eol не помог
Аноним 21/07/20 Втр 20:29:23 1757059656
>>1757039
Так ты наверняка в html выводишь? Там <br> строку переносит, а не \n.
Аноним 21/07/20 Втр 20:31:43 1757063657
>>1757059
скрипт чисто пхп как в руководстве
Аноним 21/07/20 Втр 20:36:29 1757069658
>>1757063
Если ты смотришь из браузера, то ты всегда смотришь html. А в html твой \n превращается в арбуз.
Аноним 21/07/20 Втр 20:38:52 1757073659
>>1757069
для меня это не очевидная инфа(
Аноним 21/07/20 Втр 20:40:13 1757075660
>>1757073
Понимаю. Но ОП об этом в гайде написал точно.
Аноним 21/07/20 Втр 20:41:17 1757076661
>>1757075
я вписал "</br>" и все заработало
Аноним 21/07/20 Втр 20:46:36 1757082662
долбаный английский(
Аноним 21/07/20 Втр 22:16:30 1757178663
laravel
Аноним 22/07/20 Срд 13:37:06 1757571664
Аноним 22/07/20 Срд 15:55:56 1757687665
Делаю тестхаб от ОПа, и такой мой нубский вопрос: пилю поиск тестов по тегам, и возникла идея не делать запрос в базу с limit, а сразу взять все результаты выборки тестов по тегу и отправить их на клиент, и дальше уже js будет с ними разбираться (пагинировать или бесконечный скролл). Насколько это адекватно? Если представить, что найдется много тестов, то браузер сможет все корректно обработать?
Аноним 22/07/20 Срд 17:14:28 1757795666
Снимок экрана ([...].png 112Кб, 1366x768
1366x768
как сделать,что бы он не пропускал пустую форму?
Аноним 22/07/20 Срд 17:24:05 1757803667
ОП, глянь, пожалуйста, задачу про файлообменник

https://github.com/deadj/uppu

Из твоих прошлых замечаний не исправил:
>Здесь вместо массивов можно было бы попробовать сделать классы, для разных видов файлов, вроде VideoParams, AudioParams итд.
Мне всё же кажется, что массивы в данном случае лучше
>Вообще, для преобразования объекта в массив (и обратно) есть библиотеки вроде JSMSerializer. Может, она тебе тут пригодилась бы?
Кода для пребразования мало, и подумал, что пусть будет
>Используй lastInsertId() вместо
>foreach ($filesId as $id) {
> $filesArray[] = $this->filesTable->getFileThroughId(intval($id));
Потому что во время операции может быть добавлен другой файл, и id возьмётся не тот

Заранее спасибо тебе, ОП
Аноним 22/07/20 Срд 17:45:03 1757815668
Снимок экрана ([...].png 111Кб, 1366x768
1366x768
Аноним 22/07/20 Срд 18:15:16 1757846669
>>1757815
сука,все равно с одним полем пропускает
Аноним 22/07/20 Срд 18:22:08 1757857670
Снимок экрана ([...].png 114Кб, 1366x768
1366x768
вот теперь работает
Аноним 22/07/20 Срд 18:38:49 1757862671
>>1757857
только вот правильно ли я понял-
если emty 1 пуст то тру,2 тру,3 полон-их сравнивают,если хоть один тру(пустой)то будет сообщение ошибки
Аноним 22/07/20 Срд 19:05:44 1757882672
>>1731888 (OP)
ОП подскажи пожалуйста, в твоём уроке написано про область видимости protected следующее:
protected - внутри того же класса и всех его наследников (но не предков, так как предок не должен знать ничего о наследниках - помнишь?).

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

Тут вопрос о protected , доступ все таки разрешен к родительскому классу ?
Аноним 22/07/20 Срд 19:08:06 1757885673
>>1757857
а как сделать,чтобы строка не проходила в age?
Аноним 22/07/20 Срд 19:38:43 1757916674
Снимок экрана ([...].png 227Кб, 1366x768
1366x768
оцените говнокод
Аноним 22/07/20 Срд 19:47:26 1757921675
>>1757916
Можешь избавиться от and и повторений empty вот так:
!empty($name && $city && $age)
Аноним 22/07/20 Срд 19:48:40 1757923676
>>1757921
я на этот кусочек кода потратил почти 1.5 часа....
Аноним 22/07/20 Срд 19:55:36 1757927677
>>1757921
я еще думал конвертнуть age в число,а потом проверить его is_int, такой подход возможен?
Аноним 22/07/20 Срд 19:58:38 1757932678
>>1757927
Проверяй все. Правильный бекендщик не доверяет даже своим данным. Все проверяй на существующее значение, все касти в нужные типы, эйдж проверяй на отрицательность и граничные значения, валидность имени и города тоже нужно еще установить. С подключением.
Аноним 22/07/20 Срд 19:59:04 1757933679
Аноним 22/07/20 Срд 20:09:02 1757941680
Снимок экрана ([...].png 117Кб, 1366x768
1366x768
>>1757932
а что с городами,типа все Должны быть с Заглавной буквы?
Аноним 22/07/20 Срд 20:13:36 1757944681
а ,они должны быть не числами,точно
Аноним 22/07/20 Срд 20:48:32 1757974682
Снимок экрана ([...].png 124Кб, 1366x768
1366x768
короче получился такой монстр,везде предлагают что надо регулярные выражения,но случайно нашел Функции Ctype.
Со вторым if не получилось,попадал на пустую страничку
Аноним 22/07/20 Срд 22:18:28 1758037683
>>1757882

Доступ к protected есть у наследников и родителей, но из родителя обращаться к полям наследников (которых нет в родителе) - это ошибочный подход. Вот пример:

class Parent
{
public function test()
{
echo $this->x;
}
}

class Child extends Parent
{
protected $x = 1;
}

Здесь формально доступ к свойству $x разрешен, но код ошибочный, так как если мы создадим объект класса Parent, то в нем не будет свойства $x и произойдет ошибка.
Аноним 22/07/20 Срд 22:21:07 1758042684
>>1757974

Твой код содержит ошибку вот тут: $_POST['name']

В POST-запросе может и не быть поля name, или оно может быть массивом, а не строкой. Более безопасный и правильный подход - делать так:

$name = strval($_POST['name'] ?? '');


Аноним 23/07/20 Чтв 14:49:35 1758502685
>>1756848
>в реал проектах бывает рекурсия?
Дерево категорий само себя не построит.
Аноним 23/07/20 Чтв 17:01:12 1758591686
>>1757921
Зачем тут empty вообще? Не достаточно обычного логического преобразования? if($name && $city && $age).
Аноним 23/07/20 Чтв 17:02:36 1758592687
>>1758591
чтобы проверить наличие пустоты
Аноним 23/07/20 Чтв 17:04:55 1758595688
Аноним 23/07/20 Чтв 17:24:45 1758604689
Снимок экрана ([...].png 107Кб, 1366x768
1366x768
>>1757941
только щас понял,что отрицательные числа проходят.
перепилил
Аноним 23/07/20 Чтв 18:03:05 1758626690
>>1758595
Оператор объединения с null. Если в значении до знака ?? будет null, будет использовано значение после ??. И вместо использования strval() ты можешь просто привести значение к нужному типу так: $name = (string)$_POST['name'];
Аноним 23/07/20 Чтв 18:19:12 1758633691
Снимок экрана ([...].png 129Кб, 1366x768
1366x768
еще раз подправил.
критикуйте
Аноним 23/07/20 Чтв 18:25:28 1758640692
>>1758633
только вот,он не работает с кириллицей(
Аноним 23/07/20 Чтв 18:36:28 1758647693
а как проверить email?
Аноним 23/07/20 Чтв 18:37:27 1758649694
>>1758640
Впихни кодировку UTF-8 через header
Аноним 23/07/20 Чтв 18:57:37 1758677695
почему не работает?
Аноним 23/07/20 Чтв 18:58:05 1758679696
Снимок экрана ([...].png 142Кб, 1366x768
1366x768
Аноним 23/07/20 Чтв 19:03:55 1758688697
>>1758679
сука,все работает,но валидатор не пропускает заглавные буквы!
Аноним 23/07/20 Чтв 19:25:23 1758704698
>>1758649
>UTF-8 через header
php header('Content-type: text/html; charset=utf-8');
это не работает
Аноним 23/07/20 Чтв 19:45:58 1758720699
>>1758679
какая то херня с формой,то работает,то нет
Аноним 23/07/20 Чтв 20:14:18 1758751700
Не люблю верстку, есть ли готовые шаблоны, чтобы я только логику писал?
Аноним 23/07/20 Чтв 22:46:20 1758823701
Бандиты, какое IDE юзаете? Подумываю о более легковесной замене phpstorm, даже на ум ничего не приходит.
Аноним 23/07/20 Чтв 23:20:31 1758845702
Аноним 24/07/20 Птн 09:57:35 1759040703
Аноним 24/07/20 Птн 11:34:40 1759096704
>>1758704
А если рядом создать файл .htaccess и в нем прописать
AddDefaultCharset utf-8
Аноним 24/07/20 Птн 13:40:08 1759173705
>>1759096
удалил строку с Ctype и все заработало
Аноним 24/07/20 Птн 13:41:52 1759174706
>>1759173
но все равно,как отсечь строки с цифрами в имени и городе?
Аноним 24/07/20 Птн 13:56:01 1759184707
>>1759174
По-идее поможет функция preg_replace. ВОт пример из интернетов мог бы сам найти:
<?php
$str = 'Казахстан2Астана1Уральск';
$str = preg_replace('/\d/', '', $str);
echo $str;
Аноним 24/07/20 Птн 13:59:58 1759186708
>>1759184
я про регулярки читал,с первого захода нихера не понял,а ctype поставил и работает.Но он не понимает русского видимо и французский(с его черточками сверху)
Аноним 24/07/20 Птн 16:33:49 1759297709
анонсы, нужна ваша подсказка. скинули тестовое и вот я в затупе чет немного при проектировании. надо сделать свой портал типо студентов. и вот такое надо реализовать:
Группы, в каждую из которых входят определенные студенты
Студенты, каждый из которых принадлежит определенной группе
Предметы
Оценки студентов по предметам (у каждого студента может быть только одна оценка по одному предмету.
как я понял по итогу получается 4 сущности, но при этом 4 таблицы в бд. я ведь правильноо все понимаю?
Аноним 24/07/20 Птн 17:41:25 1759334710
>>1758823
VSCode с плагином PHP Intelephense (он так себе, но лучше не завезли).

>>1759186
Название города может состоять из непредсказуемого тобой сочетания символов, например 평양. Поэтому брось это, достаточно проверять, что у тебя строка: is_string($city). Так как это пользовательский ввод, полезно убирать случайные пробелы с боков: trim($city).
Аноним 24/07/20 Птн 17:44:53 1759338711
Аноним 24/07/20 Птн 17:52:27 1759344712
>>1759334
я ctype убрал,но тогда он пропускает имена и города с цифрами
Аноним 24/07/20 Птн 17:58:17 1759349713
>>1759334
если будет Oleg123 то is_string вернет 1(тру)
Аноним 24/07/20 Птн 18:36:50 1759383714
>>1759349
Ну да, цифры могут быть строкой =)

попробуй воспользоваться сайтом https://regex101.com/
и попробуй написать свою регулярку, которая пропускает только символы (в тест стринг много вариантов накинь)

^[\D]+$ попробуй разобраться в этой регулярке
Аноним 25/07/20 Суб 17:47:05 1760046715
изображение.png 7Кб, 397x429
397x429
А вот в гитхаб фиг вкатишься, даже языка пэхэпэ нет
Аноним 25/07/20 Суб 18:11:41 1760055716
я хочу PDO записать в одном файле,но хочу вход для переменных(которые пойдут потом в PDO) сделать там,где валидатор.
как это сделать?
Аноним 25/07/20 Суб 20:25:25 1760122717
Соцопрос из интереса.
В рабочих проектах по сколько строк кода у вас?
Аноним 25/07/20 Суб 22:26:10 1760186718
>>1760122
Из интереса можешь зайти на гитхаб и посмотреть рабочие и популярные проекты
Аноним 26/07/20 Вск 17:42:18 1760885719
аноны, как пересилить себя и начать делать тестовое? хочу срулить со одной галеры на другую. прислали пару тестовых. вроде бы более менее несложно и знакомо, но что то не могу просто и все. кажется будто обосрусь и провалю задачу, проебу время и тд, или же несправлюсь, или справлюсь но абы как. боюсь я кароче
как фиксить то такое ..?
Аноним 26/07/20 Вск 19:31:24 1760962720
Адекватно ли решение обработать все НЕ API запросы (например, пользователь напрямую обращается к URL тупо гет-запросом без ajax из закладок) одним контроллером, который рендерит SPA и в то что рендерится по типу рут элемента рядом добавить скрытый элемент с нужным URI? То есть заставлять пользователя делать еще один реквест уже от SPA.
Аноним 26/07/20 Вск 19:45:36 1760970721
>>1759297 - кун выходит снова на связь
возник такой вопрос. в задаче необходимо что бы при выводе я выделил отличников (все оценки 5) и хорошистов (оценки не ниже 4)\
так вот встал вопрос как мне такое реализовать? возможно ли это как то сделать в контроллере самой ларки или же надо как то с бд шаманить создавая отдельную таблицу хорошистов и отличников? анонсы помогите
Аноним 26/07/20 Вск 20:31:41 1760991722
>>1760970
А если бы тебе нужно было всех Ивановых выделить, ты и для них отдельную таблицу делал бы?
Аноним 26/07/20 Вск 22:18:22 1761066723
>>1760991
нет, но как тогда быть то лол? задачка с ивановыми то полегче будет
алсо, туплю над проектированием бд. делаю таблицу с оценками где будут три поляя это student_id, subject_id, mark. и вот такой вопрос: это же hasMany или hasManyThrough ?
Аноним 27/07/20 Пнд 05:15:57 1761195724
>>1761066
>задачка с ивановыми то полегче будет
if ($student->hasMarkLowerThen(4)) {
echo 'Пиздуй сапоги защищать';
} else {
echo 'Задрот, сиди дрочи свои уравнения';
}

Что сложного в этой конструкции?

>это же hasMany или hasManyThrough ?
Это зависит от твоей бизнес логики. Ты ж нихуя не рассказал и не показал. Я ебу как у тебя оценки работают? Я канеш могу сам все спроектировать, но тогда какое это обучение будет.
Аноним 27/07/20 Пнд 09:21:54 1761300725
>>1760970
Ларка и её орм это канеш хорошо, но попробуй сам запросы сначала написать, которые тебе нужны. А то такое ощущение, что ты не видишь целой картины. Вот логически, есть студенты, у студентов есть оценки, как выбрать всех студентов где оценка больше 3? То что у тебя там может быть несколько таблиц с джоинами это технические детали. Если задача непонятная или сложная, то попробуй её на более мелкие задачи разбить, сначала как выбрать студентов с оценками, потом как сгруппировать отличников и ударников, потом как это показавать в табличке в вебе и т.д.
Аноним 27/07/20 Пнд 12:02:07 1761412726
>>1761195
>Что сложного в этой конструкции?
а, то есть надо еще контроллер студента доработать добавив туда функции на проверки отличник/хорошист он или нет?
я думал это можно как то средствами ларки организовать
>>1761300
>Вот логически, есть студенты, у студентов есть оценки, как выбрать всех студентов где оценка больше 3?
ну это легко будет SELECT * FROM marks WHERE mark > 3;
но проблема то в том что мне надо вывести список студентов и при этом выделить отличников и хорошистов. я спрашиваю как это более менее организовать в одну переменную.
получить три экземпляра объекта (все студенты, хорошисты, отличники) то я могу. но потом будет ебала с их выводом в список через foreach в виде:
if in_array(student->id, $otl):
вывод его как отличника
eleif in_array(student->id, $hor):
вывод как хорошиста
else:
вывод как обычного студента
Аноним 27/07/20 Пнд 12:22:30 1761417727
>>1761412
>но проблема то в том что мне надо вывести список студентов и при этом выделить отличников и хорошистов. я спрашиваю как это более менее организовать в одну переменную.
Ну лично я бы не ебался, и задал эту логику в коде.

>if in_array(student->id, $otl):
Можно просто $student->isОтличникблять($subject_id): bool;
Аноним 27/07/20 Пнд 12:35:13 1761422728
Что значит требование в вакансии: Опыт работы со стеком LAMP?
Аноним 27/07/20 Пнд 12:49:34 1761431729
>>1761422
LEMP это linux, nginx, mysql, и php. Это значит что ты без проблем сможешь поднять какой-то сайт, создать юзера в базе, прописать конфиги в нгинксе, настроить права на папку, поднастроить php-fpm если нужно и т.д.
Аноним 27/07/20 Пнд 12:51:12 1761432730
>>1761431
>linux
А как вот это изучать, тупо брать и ставить на виртуалку или книги почитать лучше?
Аноним 27/07/20 Пнд 12:52:36 1761434731
почему негатив к mysql?
Аноним 27/07/20 Пнд 12:58:05 1761438732
>>1761417
>Ну лично я бы не ебался, и задал эту логику в коде.
ну так вот я и спрашиваю как мне эту логику в коде контроллера? задать
Аноним 27/07/20 Пнд 13:19:05 1761446733
>>1761438
Причем здесь контроллер? Это логика отображения. У тебя есть список студентов с оценками. Ты когда этот список отрисовываешь делаешь выделение отличников.

Если с такими простыми вещами так туго идет дальше будет совсем пиздец.
Аноним 27/07/20 Пнд 14:31:57 1761489734
>>1761446
да я знаю что простая, просто спрашиваю как элегантней всего ее решить. единсттвенное че пока пришло на ум это тот алгоритм описанный выше
Аноним 27/07/20 Пнд 14:33:43 1761491735
image.png 36Кб, 676x386
676x386
>>1731888 (OP)
Здравствуй ОП, подскажи пожалуйста по твоей задаче из уроков про ООП(пикрелейтед), не совсем понял, что от меня требуется здесь, а именно эти слова:
"В ходе ее решения у тебя может возникнуть желание определить, объект какого именно класса перед тобой."
Тут не совсем понял, я же когда создаю вопрос я же определяю к какому подклассу он относится. А так в остальной части программы, будь то вывод или проверка ответа, меня уже не интересует к какому подклассу относится мой вопрос. Само решение https://ideone.com/rrx9wj .
Аноним 27/07/20 Пнд 14:49:16 1761506736
ч.png 32Кб, 609x589
609x589
Какой вариант (варианты на картинке) считается боле правильным. А также нередки случаи, когда в функции (1- ый вариант) все равно вызывается как echo printText1 ), при том, что вывод уже прописан в самой функции, это норма ?
Аноним 27/07/20 Пнд 15:03:24 1761518737
Аноны, посдскажите как составить eloquent запрос такого плана.

Есть статья, статья определенной категории и у статьи есть комментарии. И у некоторых комментариев может быть поле parentId = null.

Я получаю статьи определенной категории:
$articles = Article::with('comments')
->whereHas('categories', function (Builder $query) use ($categoryId) {$query->where('slug', '=', $categoryId);})
//и далее я хочу что бы у каждой статьи $article в массиве comments были только те к которых parentId = null
И не пойму пока что как это сделать, не хватает знаний qloquent

Аноним 27/07/20 Пнд 15:05:23 1761521738
>>1760885
Ты тупой?
Страх фиксится смелостью. Превозмагай
Аноним 27/07/20 Пнд 15:10:41 1761530739
>>1761506
ну смотри, если в названии функции есть слово print, то ожидаемо что она будет выводить значение (echo, print), а ты делаешь возврат значения. тем самым можно сбить с толку других программистов, анон
>>1761521
спасибо за поддержку, анон.
Аноним 27/07/20 Пнд 15:11:25 1761531740
>>1761506
Ни один из вариантов. Функции должны обладать конкретным функционалом. Одна функция формирует строку, вторая выводит. И начни наконец использовать типизацию параметров и возвращаемых значений.
https://3v4l.org/M7ikB
Аноним 27/07/20 Пнд 15:32:32 1761549741
>>1761518
->with(['comments' => function($query) { $query->whereNull('parentId'); }])

Ну типа знаний не хватает, ок. Но это же блядь первое что должно было тебе в голову прийти.
Аноним 27/07/20 Пнд 15:47:59 1761557742
>>1761549
сука, бля, вот вообще нахуй вылетело из головы про условия в жадных загрузках. Я чет заклинился на вариантах where или whereHas.
Спасибо за ответ!
Скажи а другой вариант можешь предложить фильтраци комментс?
$articles = Article::with('comments')
->whereHas(...)
//и тут уже фильтрация comments
-> where( function ($query) {...});} )
->get()

Как в sql сделать это понятно - объединение и котором результирующие строки comments IS NULL.
А в eloquent я еще не совсем понимаю че там как в цепочке функций построителя запросов передается.


>>1761530
Ты сможешь!
Аноним 27/07/20 Пнд 15:49:16 1761559743
>>1761557
>>Скажи а другой вариант можешь предложить фильтраци комментс?
Это для того что бы я понял как в построителе запроса можно фильтровать строки в связанных таблицах
Аноним 27/07/20 Пнд 15:59:42 1761565744
>>1761557
Ты понимаешь разницу между with и has?
With означает что нужно подгрузить связи, это идет отдельным запросом. А has говорит что нужно отфильтровать исходные записи по связям и это идет в том же запросе.
Аноним 27/07/20 Пнд 16:33:24 1761595745
Анончики, подскажите уроки по Symfony годные. Или может ну его нахуй и Laravel?
Аноним 27/07/20 Пнд 16:35:30 1761597746
>>1761595
не лезь.
оно тебя сожрет
Аноним 27/07/20 Пнд 16:42:08 1761599747
>>1761597
Ну а куда деваться? Тебя сожрало?
Аноним 27/07/20 Пнд 16:52:17 1761608748
Аноним 27/07/20 Пнд 17:34:09 1761651749
>>1761608
Тогда скажи, как учил, пожалуйста
Аноним 27/07/20 Пнд 18:16:00 1761668750
пиздец мне горит с регулярок
Аноним 27/07/20 Пнд 19:56:10 1761738751
>>1761491

Имеется в виду, не надо в ООП коде писать код вроде

if (объект относится к классу A) {
делать одно;
} иначе {
делать другое;
}

Решение в общем верное, только лучше возвращать из функции проверки не строку, а значения true/false или числа 0/1. Так как тебе будет неудобно, например, считать баллы или число правильных ответов, если функция возвращает произвольную строку.
Аноним 27/07/20 Пнд 20:02:09 1761742752
Снимок экрана ([...].png 144Кб, 1366x768
1366x768
как работать с французским и немецкими языками?
Аноним 27/07/20 Пнд 20:09:24 1761751753
А могу я из вашего этого пэхапэ запускать мои любимые высеры на пиздоне?
Аноним 27/07/20 Пнд 20:12:14 1761756754
Аноним 27/07/20 Пнд 20:22:40 1761764755
>>1761742
Про маленькие буквы не забывай - [a-zA-Z]
Аноним 27/07/20 Пнд 20:28:05 1761772756
Аноним 27/07/20 Пнд 20:38:30 1761778757
>>1761764
блин,я про них забыл...
Аноним 27/07/20 Пнд 20:53:54 1761789758
Снимок экрана ([...].png 136Кб, 1366x768
1366x768
>>1761772
я по регуляркам больше половины нихера не понял.
На офф сайте читать это пиздец.
на других сайтах тоже по упоротому объясняют
Аноним 27/07/20 Пнд 21:58:57 1761839759
>>1761431
> nginx
Всмысле nginx?
Linux
Anginx
Mysql
PHP
Аноним 27/07/20 Пнд 22:06:02 1761849760
Кстати, насчет линукса. Как считаете, что можно ожидать от прекращения поддержки php в windows? PHP окончательно умрет? Просто уменьшится порог входа, и спрос на нормального пыхера возрастет? Нихуя не изменится?
Аноним 27/07/20 Пнд 22:10:02 1761853761
>>1761849
Дегродов, которые не могут поставить линукс хотя бы для работы это и правда отпугнет. В остальном ничего не изменится, под виндой его и так только отбитые наркоманы крутят и совсем нубики, которые даже в виртуализацию не могут.
Аноним 27/07/20 Пнд 22:43:21 1761877762
>>1761789

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

Флаг u включает поддержку Юникода, без него считай что работают только латинские символы, без кирилицы и без латинских символов с диакритикой.

\w в сочетании с флагом u значит "любая буква любого алфавита".

Далее, у символов Юникода есть свойства. Например: является ли символ буквой, цифрой, знаком препинания итд. С помощью конструкций вроде \p{L} можно искать символы с определенным свойством . Например, \p{Lt} ищет заглавные буквы любых алфавитов, а \p{Sc} - символы денежных знаков. А \P{Lt} - все, кроме заглавных букв.
Аноним 27/07/20 Пнд 22:49:35 1761879763
>>1761789

Кстати, твоя регулярка проверяет не то, что вся строка из латинских символов, а лишь то, что в строке есть хотя бы 1 латинский символ. Используй ^и $ чтобы проверить всю строку.
Аноним 28/07/20 Втр 11:26:27 1762122764
Как часто придется юзать ооп патерны? Конструкторы деструкторы, и прочую ооп мутатень? Стоит ли заострять на этой теме большое время?
Аноним 28/07/20 Втр 12:24:06 1762171765
Снимок экрана ([...].png 138Кб, 1366x768
1366x768
>>1761879
спасибо,сам бы я не смог.
перепелил еще раз.
вроде так яснее и практичней код выглядит
Аноним 28/07/20 Втр 12:24:44 1762172766
Аноним 28/07/20 Втр 12:32:06 1762174767
Снимок экрана ([...].png 138Кб, 1366x768
1366x768
у меня опять проблемы с регулярками.
что надо написать?
Аноним 28/07/20 Втр 14:16:17 1762242768
Сап аноны. Подскажите нуюу, у меня для моего проета на ларавел разрастается JS. Пока что я делаю как пидорашка - хуярю все в один файл. Но там уже много и не красиво.
По логике для разработки - нужно вебпаком каждый раз собирать бандл, и кидать его в паблик?
Так обычно делают?
Аноним 28/07/20 Втр 15:59:17 1762347769
>>1762174
Зачем ты and используешь? Во первых, лучше вместо него использовать &&. Во-вторых, тебе вообще не and нужен, a or, то есть ||. У тебя ж ошибка по регулярке будет только если все поля неправильны, ошибка по возрасту только если возраст одновременно больше 110 и меньше нуля, а ошибка заполнения формы только если не заполнены все поля.
И еще, зачем так злоупотреблять "!" не пойму. Что ты от этого получаешь? Ты вместо $age>110 пишешь !($age)<=110. Мало того что это читать невозможно, так ты еще и на 4 символа больше вводишь.
Аноним 28/07/20 Втр 16:02:12 1762349770
>>1762347
так инверсия же.чтобы печатать текст с ошибкой
Аноним 28/07/20 Втр 16:04:10 1762353771
>>1762349
Так инверсия ощуществляется сменой знака, блед. Это в строчке с проверкой возраста, о которой я написал.
Аноним 28/07/20 Втр 16:06:53 1762356772
>>1762347
и зачем ИЛИ,если должны соблюдаться оба выражения как тру
Аноним 28/07/20 Втр 17:45:54 1762416773
Снимок экрана ([...].png 120Кб, 1366x768
1366x768
а так?
Аноним 28/07/20 Втр 17:47:00 1762419774
Аноним 28/07/20 Втр 17:47:29 1762420775
>>1762419
echo "Ваше имя: $name. Вы из города $city. Вам $age лет(год)";
Аноним 28/07/20 Втр 19:02:31 1762512776
>>1762356
> У тебя ж ошибка по регулярке будет только если все поля неправильны
Аноним 28/07/20 Втр 19:38:13 1762532777
как на xampp запустить майскул через консоль?
Аноним 28/07/20 Втр 20:47:40 1762574778
>>1762532
В папке xampp есть батники с командами, mysql_start.bat, и тому подобные
Аноним 28/07/20 Втр 21:36:22 1762603779
>>1762122

Постоянно. Вот, посмотри для примера код интернет-магазина Магенто: https://github.com/magento/magento2

В конструкторах нет ничего сложного, да и в ООП в целом тоже.

>>1761434

Справшивай у тех, у кого негатив. Я против неё ничего не имею.

>>1760962

Так обычно и делают. SPA при запуске смотрит на текущий URL и подгружает что нужно. Но, конечно, это работает медленнее, чем когда сервер сразу отдает готовую страницу.

>>1760055

Не понял вопрос.
Аноним 28/07/20 Втр 21:40:40 1762607780
>>1757687

Зависит от количества тестов. Не проще ли сделать пагинацию на сервере, но увеличить размер страницы (например: 100 записей на страницу)? Пагинация делается как раз чтобы снизить нагрузку на БД, и не вытягивать данные, которые пользователь с большой вероятностью смотреть не будет. А ты предлагаешь, наоборот, вытягивать больше данных.

Если ты хочешь сделать переключение страниц без перезагрузки, то вообще не требуется писать код на JS и изобретать велосипед, просто берешь библиотеку вроде https://github.com/defunkt/jquery-pjax и она перехватывает клики по ссылкам, при этом ссылки остаются ссылками, их можно открыть в новой вкладке, работает история, закладки итд. То есть получается аякс здорового человека.

>>1757001

Бывает по-разному. Бывает, верстальщик отдает HTML-шаблоны, бывает, что он знает шаблонизатор и верстает код на нем, бывает, что он получает от бекендщика информацию об API.

>>1756701

Раньше был популярен, сейчас не так.

Аноним 28/07/20 Втр 21:41:26 1762609781
>>1754659

Имена переменных ужасные, из-за них трудно читать код. Вот как это читать:

> foreach($arr as $ri => $rv){

Там 3 ничего не говорящих названия. А если написать:

foreach ($bills as $value => $amount) // "для каждой банкноты с номиналом и количеством"

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

Также, ты прибавляешь по одной банкноте, но можно сразу вычислить количество, например если сумма равна 17000, то 5000-х банкноты надо 3 штуки, это очевидно, если поделить 17000 / 5000 = 3.4.
https://github.com/kydva/Student-list Аноним 28/07/20 Втр 21:42:15 1762610782
>>1750637

> elseif ($path == '/faker-83'){

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

При отдаче ошибки 404 надо еще отдавать в заголовках код состояния HTTP 404 (а не просто писать его текстом), чтобы роботы тоже понимали, что на странице ошибка.

Параметры соединения с БД стоило вынести в файл-конфиг, например, config.ini.

> $currentPage = $_GET['page'] ?? 1;

В такой конструкции стоит добавить intval()/strval для принудительного приведения к числу/строке.

Для проверки/установки авторизации стоило сделать класс-помощник с методами вроде getAuthUser/setAuthUser, который скроет в себе работу с куками и проверку хешей. Иначе придется копипастить однотипный код по контроллерам.

> $token = $_COOKIE['token'];
Тут стоит добавить ?? '', так как кука может и отсутствовать, и будет варнинг.

> $isThatFirstAttempt = ($student)? FALSE : TRUE;
Тут по моему переменная $student может быть не определена, и это вызовет варнинг. Включено ли у тебя отображение ошибок?

> //Сравниваем токен из формы и токен пользователя для защиты от XSRF уязвимости
> die("Возможно, вы злоумышленник.
Вообще, правильнее писать "вы жертва XSRF-атаки", хотя вероятнее, что пользователь просто почистил куки.

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

1) сделать интерфейс TableInterface (с методами getCount(FIlterInterface ), getRecords(FilterInterface, offset, limit) ), сделать чтобы STG его реализовывал и таким образом развязать классы друг от друга. Pager будет знать только о TableInterface, но не о STG. Это может быть непросто. Пример универсального пагинатора ты можешь найти в библиотеках Pagerfanta и KnpPaginator.
2) можно просто убрать функции получения записей из пагинатора и оставить ему только задачу расчета числа страниц и формирования ссылок

Ну или можно честно назвать пагинатор StudentPager.

> //Кстати, переменные, полученные с надежного источника, можно не биндить, верно?
В твоем случае источник этих переменных неизвестен, если смотреть только на код функции getStudents(). мы ведь не знаем (глядя на ее код), кто ее вызвал и откуда взялись эти переменные, и не можем оценить, безопасно ли их вставлять в запрос. И мы не хотим изучать весь код, чтобы это понять. Также, может завтра кто-то впишет в код вызов этой функции с аргументами, пришедшими от пользователя. Потому правильнее их передавать через плейсхолдеры, а так там имеется возможность для возникновения инъекции.

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

> // -А если в $search будет что-то вроде '50%'?
Можно заменять % и _ на \% и \_ (а \ -> на \\).

Константу STG::UPDATE правильнее было бы назвать METHOD_UPDATE, аналогично и с другими константами.

> return $result[0]; //В нулевом элементе $result находится количество записей
Там есть метод fetchColumn() для таких случаев.

> if (preg_match("/^[а-яА-ЯЁa-zA-Z0-9]+$/ui", $student->groupnum) == FALSE) {
Вообще, preg_match возвращает число совпадений (0 или 1), а не true/false.

> if ($isEmailOccupied==TRUE && password_verify($student->token, $studentWithThatEmail->tokenhash)==FALSE)
Это сложная и не совсем очевидная логика. Тут, конечно, проще было взять в качестве идентификатора студента токен, так как он не меняется, в отличие от email.

Так, в общем неплохо сделано.
Аноним 28/07/20 Втр 21:44:01 1762614783
>>1749810

Сделано неплохо.

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

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

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

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

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

Например, она может принимать: (карта соединений, цель, пройденный путь как список точек) и возвращать: (оптимальный путь до цели как список точек). А расчет времени можно сделать отдельной функцией (принимающей карту и список точек) и этим упростить код.
Аноним 28/07/20 Втр 21:45:27 1762616784
>>1762174

Символ ^ имеет особое значение только в начале регулярки, у тебя же он в середине и обозначает сам себя. Советую потщательнее изучать регулярки и тестировать свою регулярку, например на regex101.
Аноним 29/07/20 Срд 02:36:40 1762823785
image.png 41Кб, 790x659
790x659
Аноны, почему в конце приклеивается еще один хороший человек?
Аноним 29/07/20 Срд 08:47:47 1762914786
Здравия. Хочу начать учить пыху, раньше учил питун, но понял что на нем нет работы на начальных этапах. Фриланса почти нет на нем.
Вопрос, что и в каком порядке мне учить чтобы заработать хотя бы на дошик? Я так понимаю чтото типа html + css + php + wordpress, на последнем акцент для фриланса. Что мне делать чтобы качать реальные скиллы, которые помогут заработать? Какой стек посоветуете? Мне много не надо, даже 20-30к хватит. Везде ебаные инфоцыгане ссут в уши, как дела обстоят на самом деле?
Аноним 29/07/20 Срд 09:38:21 1762924787
>>1762914
>Что мне делать
Учи теорию и практикуйся - так будешь закреплять полученные знания, если в ладах с английским, то поищи в очевидных местах курс The Complete Web Developer Course 2.0 или как-то так, даст тебе массу практики и портфолио 15 проектов!.
Если туго с английским, то поищи курс Webformyself | PHP-Мастер. От теории до собственной CMS интернет-магазина (2018) - даст теорию и собственно практику, воды мало, сейчас его прохожу, заходит куда лучше, чем книги О\'рилли, в них очень много воды.
Народ еще рекомендует ITVDN | PHP Developer (2015-2020) - там якобы и воды мало и все области описаны, даже фреймворки Yii 1 и 2 версии, который помирает потихоньку, однако их еще не смотрел, может быть на самом деле обстоят дела иначе.
Аноним 29/07/20 Срд 11:36:49 1762982788
>>1762823
У тебя он заменяет все что нашел, нашел 2 раза => добавил хорошего человека два раза
Аноним 29/07/20 Срд 14:13:44 1763194789
Стоит с nodejs на laravel перекатываться? Мне нужно чисто чтобы апишки писать для реакта
Аноним 29/07/20 Срд 14:34:20 1763227790
Аноним 29/07/20 Срд 16:23:05 1763402791
>>1763227
Там нихуя не работает как ожидаешь и всё через одно место, плюс вечные траблы с пакетами для ларавел, которые пытаешься подключить в этот люмен. Если тебе для апи не нужен шаблонизатор и сессии, то просто отключи их и не используй. Причин юзать этот люмен вообще никаких нет.
Аноним 29/07/20 Срд 16:30:57 1763415792
>>1763227
У меня с ларавел был опыт, еще до ноды. Там авторизация и аутентификация из под коробки была, на ноде с этим пердолиться надо
Аноним 29/07/20 Срд 18:08:45 1763530793
image.png 3729Кб, 1951x2753
1951x2753
Сап, что за книгу скажете?
Там пыхыпы5, вместо пыхыпы7
Стоит читать?
Аноним 29/07/20 Срд 18:15:08 1763544794
>>1759297 - снова репортинг ин
на этот раз ебусь со связями ManyToMany
имею вот такие вот вещи на руках https://ideone.com/wYtARZ
делаю страницу с отображением отдельного предмета. соответвенно мне надо вывести всех студентов и оценки по нему, средний балл за предмет среди всех студентов.
обращаюсь к таблице marks где имеется следующая структура: subject_id, student_id, mark
мой запрос который я написал возвращает мне все без проблем, но только проблема в том что блять он возвращает мне просто айди предмета, оценку студента, айдишник студента, а мне нужно при помощи связи получить его другие данные которые относятся к студенту и соответвенно через него загрузить к какой он группе относится реализовал ранее через метод 1 ко многим при выводе конкретно группы юзаю $group->load('students') и он подгружает мне всю связь где я могу уже обратиться к деталям каждого студента
так вот аноны, как это более грамотно сделать? надеюсь понятнно расписал. второй день ебусь с этим уже. куча сумбура в голове
Аноним 29/07/20 Срд 18:23:33 1763554795
>>1763530
В последних изданиях уже пэхэпэ-7, актуально, но читать лично я осилил лишь 350 страниц, половину короче, очень много воды.
Аноним 29/07/20 Срд 23:11:30 1763784796
>>1762823

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

Ты можешь вбить свою регулярку и строку на regex101, там подсветятся совпадения.
Аноним 30/07/20 Чтв 02:05:31 1763880797
Аноним 30/07/20 Чтв 04:45:36 1763919798
>>1762924
Спасибо. Все сохранил. Буду изучать.
На верстку и JS стоит поднажать? На сколько это нужно php прогеру?
Я плохо понимаю дерево развития прогеров, конкретные специализации. Фронтенд допустим это htlm css js и фреймворки, php это не фронтенд?
Аноним 30/07/20 Чтв 07:50:57 1763942799
>>1763919
Поищи в гугле backend roadmap
Аноним 30/07/20 Чтв 09:13:19 1763969800
>>1763544
ну же анон, подскажи
Аноним 30/07/20 Чтв 10:30:16 1764024801
averagemarks.jpg 658Кб, 2600x3527
2600x3527
>>1763969
Подсказываю.
Берешь бумажку, ручку и рисуешь кто на ком стоял и с кем связан. По каждому юз кейсу.
Потом проектируешь модель для отображения нужных данных.
И только после этого проектируешь базу.
Ну и еще было бы нехуйно научиться излагать свои мысли, твой поток сознания просто неприятно читать.
Аноним 30/07/20 Чтв 14:07:31 1764279802
Есть вопрос ньюфажный. У меня ПК в локалке зовется 192.168.1.3. когда я запускаю сервер на локалхосте, по этому айпи я могу подсоединиться с других девайсов. А вот если у меня несколько виртуальных хостов, типо a.localhost, b.localhost и так далее, мне как к ним подсоединиться с другого девайса ( если они все на одном порте )? И вообще может есть способ организовывать это покрасивее?
Аноним 30/07/20 Чтв 14:59:50 1764358803
>>1764024
>И только после этого проектируешь базу.
ну так база то спроектирован, все связи на месте, я спрашиваю как это реализоваь средствами фреймворка . я могу решить эту проблему в лоб обратившись к определенной таблице и джойнами из других сделать нужную мне выборку. но смысл ? я же не юзаю средства фреймворка, а пишу чуть ли не голый sql запрос
>Ну и еще было бы нехуйно научиться излагать свои мысли, твой поток сознания просто неприятно читать.
этто да, не отрицаю
Аноним 30/07/20 Чтв 15:38:19 1764376804
>>1764358
Значит хуево спроектирована.
Короче это бесполезный разговор. Хочешь чему-то научиться - инструкцию я тебе дал. Рисуй схему, пости, а дальше будем думать.
Или можешь дальше ждать, что кто-то в треде за тебя все сделает.
Аноним 30/07/20 Чтв 16:07:49 1764388805
какой смысл в 1 <=> 2; вернет -1 ?
Аноним 30/07/20 Чтв 17:07:30 1764440806
>>1764388
Да. Удобно в сортировочной функции юзать, например.
Аноним 30/07/20 Чтв 19:35:02 1764535807
image.png 704Кб, 1280x720
1280x720
Всем чмоки в этом чатике.

В связи с большим кол-вом работы я разыскиваю людей которые неплохо разбираются в PHP и смежных темах (HTML/CSS/JQuery etc), а проще говоря - веб-разработчиков.

Чем мы занимаемся:

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

Кто нужен?
Нужен кадр который умеет в ПХП/хтмл/жс на уровне среднем или пониже/повыше, отпетые профессионалы и совсем уж начинающие - извините.
Будет плюсом опыт работы с Laravel или наличие возмозжности осилить.
Будет большим плюсом если хорошо умеете в верстку и смыслите в этом направлении - такого человека очень нехватает.
Само собой SQL (Postgres/MySQL), умение задеплоить свое/чужое.
Умение гуглить, куда без него то.
Кроме вышеописанного мной очень приветствуется открытость, честность и смелость (для решения ранее невстречавшихся задач).

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

Здесь отвечать не смогу, отсутствует свободное время.
Пиши в @zzzzrabotabot, рассказывай что умеешь, что делал. Полноценное CV разумеется ни к чему, но кто ты и что ты - понимать необходимо.
Аноним 30/07/20 Чтв 19:59:18 1764544808
поля и столбцы в БД одно и тоже?
Аноним 30/07/20 Чтв 20:34:22 1764559809
>>1764535

Ясно-понятно, ищите будущих сокамерников. Не знаю, кто на это согласится.
Аноним 30/07/20 Чтв 20:42:47 1764565810
Аноним 30/07/20 Чтв 23:14:56 1764633811
>>1764279

Тут есть пара вариантов:

1) ты можешь на других устройствах добавить имя хоста в файл hosts:

a.example.com 192.168.1.3

И тогда можно будет писать http://a.example.com/

2) ты можешь поднять сайты каждый на своем порту и заходить на них с номером порта в адресе, например http://192.168.1.3:8000/
Аноним 30/07/20 Чтв 23:16:48 1764634812
>>1764279

3) вместо того, чтобы руками прописывать домены в hosts, ты можешь установить DNS сервер на том же 192.168.1.3, настроить его как основной на всех устройствах и тогда они будут к нему ходить за разрешением имен доменов.
Аноним 31/07/20 Птн 00:02:36 1764649813
>>1764565
>>1764633
>>1764634
Спасибо за ответы. Кстати, почему-то уже не 192.168.1.3, а 192.168.1.6. Не знал что этот адрес меняется. Алсо, значит ли это что у меня в сети 5 девайсов минимум?
Аноним 31/07/20 Птн 01:11:07 1764665814
>>1764649

Это зависит от настроек роутера и ПК. Если у тебя в настройках ПК стоит "получать автоматически" (гугли DHCP), то адрес запрашивается у роутера и выдается им. Если ты хочешь постоянный адрес, то надо сделать следующее:

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

Аноним 31/07/20 Птн 03:50:17 1764695815
>>1763942
Так PHP это бекенд?
Я уже совсем запутался
Зачем пхп учат? кем потом работать?
Аноним 31/07/20 Птн 04:46:56 1764701816
>>1764695
Тоесть я что имел ввиду. Получается без JS, PHP не нужен работодателю. И наоборот.
Значит надо учить и то и другое? На чем упор делать?
Аноним 31/07/20 Птн 05:52:15 1764708817
У меня есть пара вопросов.
Допустим у нас есть человек, 20 лет. Ну и с 9 классами образования, к примеру.
Его стек:
1. PHP - 4/5
2. JS - 3/5
3. HTML, CSS - 2/5
4. SQL и т.д - 1/5

Возьмут ли его на работу с такими навыками, в какую нибудь ИТ-компанию? Какая вообще средняя планка знаний/навыков для такой работы?
Аноним 31/07/20 Птн 05:54:43 1764709818
>>1764708
>4/5
>3/5
Ты себя сильно переоцениваешь. С таким вопросом очевидно, что у тебя максималка 1/5 только по одному из этих навыков.
В веб студию какую-нибудь возьмут. Из того, что ты перечислил, даже если бы цифры были правильные, без сопутствующих технологий это врядли даже джун.
Аноним 31/07/20 Птн 06:15:58 1764717819
>>1764709
>Ты себя сильно переоцениваешь.
Эмм, что? Ты где увидел что я говорю про "себя"? Сам сочиняешь?
Аноним 31/07/20 Птн 07:28:15 1764726820
Последний раз говнокодил на пхп году в 2008 форум.
Про фронты, беки, фреймворки, аяксы, жквири, реакты, хуякты, ангуляры, ноды, вуежс не знаю ВООБЩЕ ничего. Поверхностно знаю синтаксис (но не сам язык) жс, но больше ничего.
Хочу чисто для себя перевкатиться. Где-нибудь можно найти туториалы совсем для даунов, чтобы хотя бы начать понимать, как это всё работает?
Аноним 31/07/20 Птн 07:46:53 1764731821
Аноним 31/07/20 Птн 08:29:02 1764744822
Аноны как от сортировать результаты sql запроса по ASC, но так чтобы эта сортировка работала только для тех строк где значение поля не NULL, а там где поле равняется NULL сортировка была по умолчанию, т.е. DESC.
Сейчас запрос выглядит как:
SELECT id, name, count, date FROM table ORDER BY date ASC
В некоторых строках поле date имеет NULL и разумеется они оказываются в результате сверху, а надо их отправить вниз.
Аноним 31/07/20 Птн 09:35:33 1764768823
Аноним 31/07/20 Птн 09:49:56 1764777824
>>1764768
Умный самый? Сходи потеряйся. Если я было бы так просто я не задал бы вопрос.
Аноним 31/07/20 Птн 10:10:16 1764787825
sin-sobaki.PNG 223Кб, 2163x1389
2163x1389
>>1764777
Сходил тебе на ебало, дегенерат.
Аноним 31/07/20 Птн 10:42:37 1764797826
>>1764787
Еще раз тебе повторю. Сходи потеряйся все стандартные способы, связаные с is not null полностью исключают из запроса нули, а мне их оставить надо.
Аноним 31/07/20 Птн 10:49:22 1764801827
>>1764797
Ебанины кусок, ты хоть первую же ссылку читал?
Аноним 31/07/20 Птн 11:06:10 1764807828
>>1764801
Получилось, спасибо за помощь, анон.
Аноним 31/07/20 Птн 13:16:32 1764885829
Screenshot2020-[...].png 70Кб, 852x424
852x424
>>1764376
я и не думаю и не жду что кто то в треде за меня сделает. я уже просто который день сижу и ломаю голову что же сука не так и как мне сделать по человечески и чтобы все работало как надо и средствами фреймворка.
>Значит хуево спроектирована.
а как иначе? или я чего то бля не понимаю? имею на руках пока что только то что на пике
Аноним 31/07/20 Птн 13:31:57 1764909830
Аноним 31/07/20 Птн 14:03:33 1764929831
>>1764885
Читай по слогам. Сна-ча-ла на-ри-суй схе-му то-го что нуж-но о-то-бра-зить. По-том соз-дай мо-дель. По-том про-е-кти-руй ба-зу.

Ты блядь дом с крыши строишь. Структура хранилища должна удовлетворять юз кейсы, а не юз кейсы должны натягиваться на от пизды придуманную структуру.
Аноним 31/07/20 Птн 14:54:42 1764972832
>>1764929
все. принято. работаю
спасибо, анон
Аноним 31/07/20 Птн 16:46:13 1765068833
id как лучше организовать?
в отдельную колонку? или привязать к имени людей?
Аноним 31/07/20 Птн 17:18:44 1765081834
>>1765068
Просто порядковым номером, первый зарегистрировавшийся - нулевой и т.д.
Аноним 31/07/20 Птн 17:25:35 1765086835
>>1765081
те к имени?и инкримент тоже к нему?

а вот как понять 2 предлож
>. The signed range is -32768 to 32767. The unsigned range is 0 to 65535.
Аноним 31/07/20 Птн 17:39:59 1765093836
изображение.png 16Кб, 1009x196
1009x196
>>1765086
Вот так вот у меня в гостевой книге реализовано
Аноним 31/07/20 Птн 17:41:40 1765096837
>>1765093
я пока хардкорно через консоль
Аноним 31/07/20 Птн 17:43:27 1765101838
>>1765096
Практикующие люди говорили, что консоль никто не пердолит, в отличии от пхпМайАдмин
Аноним 31/07/20 Птн 17:45:27 1765105839
>>1765101
ну учат во всех туторах через консоль
Аноним 31/07/20 Птн 20:01:43 1765208840
как записать флоат или децимал в БД?
Where m is the total digits and d is the number of digits after the decimal.
Аноним 31/07/20 Птн 20:38:43 1765236841
>>1765101
пма в 2020 тоже никто не юзает, есть датагрип.
Аноним 31/07/20 Птн 21:47:40 1765257842
>>1765208

DECIMAL - это точный тип. Он сохраняет столько цифр, сколько было указано при создании таблицы.

FLOAT/DOUBLE - это приближенные типы. Они сохраняют только 8 и 14 значащих цифр, остальное округляется.
Аноним 31/07/20 Птн 22:08:30 1765261843
>>1765257
нихера не понял.
как напри мер записать 3.14?
Аноним 01/08/20 Суб 08:10:55 1765373844
Аноны, наведите на инфу - как в Ларавел осуществить проверку аутентификации юзера когда я отправляю аяксом JSON на нужный мне роут?
Сессия по очевидным причинам отпадает. csrf-token в fetch body я передаю.
Смотреть в разделе аутентификация API?
Аноним 01/08/20 Суб 08:22:11 1765376845
>>1765373
п.с.
Тупой вопрос - роут на который с клиента падает JSON - его можно назвать API?
Аноним 01/08/20 Суб 08:58:39 1765381846
Аноны, как вкатиться в ООП шаблоны? Я Зандстру скачал - там куча инфы про шаблоны, но как понять когда куда применять эти шаблоны. Глаза разбегаются.

Может взять два-три каких то основных ООП шаблона, и пробовать их применять к месту и не очень к месту?
Какие посоветуете? Как поступить?
Аноним 01/08/20 Суб 09:33:37 1765394847
>>1765381
Не с той ты литературы начал изучать шаблоны. Скачай книгу: грокаем алгоритмы. Попытайся вникнуть, потом уже читай другие. Ну и конечно же смотри ютуб уроки по шаблонам.

ты б ещё начал изучать шаблоны по книге банды четырёх, лол
Аноним 01/08/20 Суб 16:53:12 1765627848
>>1764744
>а там где поле равняется NULL сортировка была DESC
Не бывает такого.
>а надо их отправить вниз
А вот это уже понятнее.
SELECT t1.* FROM (SELECT id, name, count, IFNULL(date, 'NULL') date FROM `table`) t1 ORDER BY t1.date ASC

Правильнее будет union использовать
Аноним 01/08/20 Суб 17:21:32 1765661849
>>1765627
>Правильнее будет union использовать
А че не рекурсивный запрос с временной таблицей? NULL то ты проебал, кста. В пхп коде что тоже твой псевдо 'NULL' чекать?
Аноним 01/08/20 Суб 18:08:48 1765721850
>>1765373
Дополню, в общем использую "Аутентификация API" трабла в том что когда присоединяю к защищаемому роуту middleware('auth:api') - то по идее гвард аутентификации проверяет роут, и он проверят. Так как роут не срабатывает.
Фигня в том что я не пойму где описан код в ларавел когда гвард auth:api отклоняет запрос. В провайдерах и мидлвэйрах найти не могу блин.
Кто сталкивался, подскажите пожалуйста
Аноним 02/08/20 Вск 13:47:09 1766153851
И еще в принципе общий вопрос, но в частности по ларавел. Есть API роут, аутентификацию првоеряет auth:api . У объекта user есть поле api_token.Как это токен передать при логине клиенту передать?
Этот токен же при ajax запросе должен передаваться на сервер, где хранить этот токен (или его хэш допустим) - в расметке html? В сессии?
Вот залогинился пользователь в системе, сессия , все дела. И на одной страничке у меня ajax который требует пройти проверку аутентификаци.
Аноним 02/08/20 Вск 13:47:53 1766154852
>>1766153
Бля , как уебок пишу
Аноним 02/08/20 Вск 14:16:37 1766189853
>>1762610
Большое спасибо что нашел время и посмотрел
>сделать интерфейс TableInterface (с методами getCount(FIlterInterface ), getRecords(FilterInterface, offset, limit) ), сделать чтобы STG его реализовывал и таким образом развязать классы друг от друга. Pager будет знать только о TableInterface, но не о STG. Это может быть непросто. Пример универсального пагинатора ты можешь найти в библиотеках Pagerfanta и KnpPaginator.
Горю желанием это сделать, Pagerfanta вроде достаточно простой ( если не смотреть на готовые классы адаптеров ). Можно поподробнее о FilterInterface? Он должен как-то скрыть всякие параметры типо поиска и т.д?
>Это сложная и не совсем очевидная логика. Тут, конечно, проще было взять в качестве идентификатора студента токен, так как он не меняется, в отличие от email.
К сожалению, совсем тебя не понял. Это же фрагмент кода проверки валидности эмайла. Токен тут вроде как и является идентификатором, ведь я проверяю, не совпадает ли токен юзера, который хочет ввести уже существующий эмайл, с токеном владельца этого эмайла. Ведь это, возможно, сам владелец просто редактирует свои данные. Как это по-другому реализовать?
>Так, в общем неплохо сделано.
Спасибо) А то я после того как залил сюда гитхаб, посмотрел на другие варианты реализации этой задачки, и дико закомплексовал. У меня по сравнению с ними вообще ни ООП нету, ни MVC. Все еще не верю что это делали люди на такой же стадии обучения, как я. Хотя на самом деле мне очень не понравилось это ООП головного мозга

Всё остальное пофиксил ( ну еще класс авторизации не сделал, сейчас нету времени особо ). Особенно я удививился с того, что при логическом преобразовании несуществующей переменной она не просто превращается в false, а еще и вызывает варнинг. Заглянул в логи, всё в варнингах. Я думал что пхп не такой строгий в этом деле.
Аноним 02/08/20 Вск 14:32:05 1766205854
Алсо, когда перейду к хостингу файлов, его на Slim лучше всего делать? Меня привлекает вариант собрать свой фреймворк из компонентов Symfony ( стильно ведь, модно, молодежно ), но что мне нужно оттуда? Вообще смотреть всё что может минимально пригодиться и подтягивать в проект?
Аноним 02/08/20 Вск 15:06:53 1766254855
>>1766205
Скорее всего это делается так:

Нужна форма для загрузки - установил бандл форм и httpfoundation (для запросов),
Нужна запись в бд - скорее это будет бандл орм (доктрин)
и т.д.
Аноним 02/08/20 Вск 18:02:57 1766427856
чем char отличается от varchar?
Аноним 02/08/20 Вск 19:45:36 1766570857
Аноны, кто нибудь знает хорошую диаграму по которой будет понятно очередность того как в ларавел все идет. А то в общих чертах я типа понимаю. Но вообще - нет.
Аноним 02/08/20 Вск 19:59:24 1766574858
>>1766153
Бампану вопрос свой, переформулировав.

Я хочу что бы мои ajax-запросы (допустим дозагрузка комментариев) были доступны только залогиненным пользователям. Хочу сделать именно через проверку мидлвэйром auth:api.
И хотя мне сейчас кажется что я фигней маюсь - в моем случае нет необходимости мои ajax запросы проверять средствами api аутентификации. Для api аутентификации на сервере должен быть соответствующий контроллер и роут login - что бы клиент получил api_token.
Для контроля подгрузки комментариев строить api аутентификацию избыточно получается.



Аноним 02/08/20 Вск 20:30:12 1766602859
>>1766570
Google => Laravel life cycle, и ищи схемы на свой вкус =)
Аноним 03/08/20 Пнд 00:16:06 1766727860
>>1766427

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

https://dev.mysql.com/doc/refman/8.0/en/char.html
Аноним 03/08/20 Пнд 09:47:50 1766891861
Посоны, кто-нибудь разбирается в в doctrine dbal ?
Как тут у них можно намутить connection timeout ?
Вот тут написано что можно передавать опции:
https://www.doctrine-project.org/projects/doctrine-dbal/en/2.10/reference/configuration.html
у меня есть немного странный код из \Badoo\LiveProfiler
там используется так :
->setConnectionString('mysql://profiler:xxx@192.168.10.11:3306/profiledb?charset=utf8')

как опцию connect timeout передать? замучался ваще.
Перепробовал разное и нифига.
Аноним 03/08/20 Пнд 10:56:45 1766924862
>>1766891
Лол, а никак. Ну, по крайней мере, не меняя код этой баду параши никак. Пиздец, весь этот профайлер реклама безопасного секса SOLID и tell dont ask. Вместо того чтобы передать connection снаружи петучи создают его внутри. Единственный варик для тебя - это самому прописать что нужно, отнаследоваться и поменять код создания коннекшена. Ну или ждать когда они твой issue прочитают и поправят свой говнокод.
Аноним 03/08/20 Пнд 11:29:31 1766943863
сап, погромач, студент-портал-ларавель кун снова на связи. до этого генерил студентов через стандарт фабрику в виде 'name' => $faker->name. сейчас разбил на first_name, midle_name, last_name соответственно. хочу засидить middle_name при помощи $faker->middleName. Гугл сказал что такое есть только в русской локале. поменял в config/app.php локаль на 'faker_locale' => 'ru_RU'. и при сидинге получаю: Unknown formatter "middleName". В чем мб проблема ? хочу провернуть эту хуйню чтобы потом через ларавель accessor вывести нормальное человеческое ФИО.
Аноним 03/08/20 Пнд 11:54:15 1766964864
>>1766891
но там написано, что pdo options они воспринимают в URL.
какой синтаксис у многих опций? Они же смогли передать сharset.

>Ну или ждать когда они твой issue прочитают и поправят свой говнокод.

дело в том, что сам badoo на pinba2 по UDP профилирует. Им по большому счету насрать на эту проблему.
Странный проектик. Я его выбрал потому что он показался Сильно проще чем pinba2, но фактически засада наклевывается. и еще в pinba2 нет UI.

Как все нормальные пхпшники поступают? Это ведь абсолютно необходимый каждому среднему проекту софт. Нельзя осборать программиста просто так. Нужно аргументировать где именно плохо. Причем , плохо именно в живом продашне.
Аноним 03/08/20 Пнд 12:25:38 1766992865
>>1766891
Функция setConnection(Connection $Conn)
Аноним 03/08/20 Пнд 14:06:45 1767171866
>>1766992
спc! выглядит как то что надо.

Сам не полезу в этот проект. У меня погроммисты есть...
Аноним 03/08/20 Пнд 18:49:14 1767589867
посоветуйте годный гайд для новичков по БД.
Оф сайты майскула и маруси-это пиздец,постоянно надо гуглить.
Знания у меня рваные получаются,не везде толково объясняют,а вот инфы по этой теме просто вагон надо разобрать
Аноним 03/08/20 Пнд 19:45:51 1767620868
>>1767589

Тебе стоит искать уроки не только по MySQL, а просто по SQL. Так как язык запросов в MySQL на 90% это стандартный SQL, и еще на 10% это диалект MySQL. А вот мануал MySQL как раз и объясняет, что из SQL поддерживается, а что нет.
Аноним 03/08/20 Пнд 21:25:52 1767705869
Аноним 03/08/20 Пнд 21:26:37 1767707870
>>1765381

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

Например, у библиотеки работы с формами Symfony Form есть события PRE_SUBMIT, SUBMIT и POST_SUBMIT - на них можно подписаться, чтобы что-то делать с формой. Но в твоем собственном коде этот паттерн Observer не особо нужен, так как ты и так можешь вписать нужный код.

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

Ты можешь попробовать изучить компонент Symfony Form, например, там кое-какие паттерны используются на практике. Он, правда, может быть сложноват для начинающего.
Аноним 03/08/20 Пнд 21:27:24 1767708871
>>1765261

Не очень понял, что значит "как записать"? Какой запрос написать? INSERT INTO table (x) VALUES(3.14), этот запрос вставит число в таблицу.

>>1765086

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

>>1764544

Не очень правильно говорить поля таблицы, правильнее столбцы или колонки.

>>1762242

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

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

А потом уже можно вебпак подключить, чтобы в продакшене грузить только один файл, а не кучу маленьких.
Аноним 03/08/20 Пнд 21:28:33 1767710872
>>1766189

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

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

А если мы хотим именно пагинатор, который умеет считать число страниц и выбирать данные, то придется заморочиться. Интерфейс TableInterface нужен, чтобы обобщить выборку данных из разных источников (ведь это может быть даже не БД, а, например, источник-массив), а FilterInterface - чтобы обобщить условия выборки (например, поиск по определенному слову).

Хотя PHP язык гибкий, и мы можем обойтись без FilterInterface, просто не указывая тип перед этим параметром: function getCount($filter). Тогда TableInterface получается такой:

interface TableInterface
{
public function getCount($filter): int;
public function getRecords($filter, int $offset, int $limit): iterable;
}

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

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

Я имел в виду немного другой порядок поиска, используя токен как идентификатор: SELECT ... WHERE email = :email AND token != :token. Но да, получается почти то же самое, что у тебя.

> Мне ООП не понравился.

А ты посмотри на реальные проекты вроде Symfony Form (средняя сложность), или Magento (большая сложность). Там все на ООП. Без него, наверно, было бы еще неудобнее писать.

Аноним 03/08/20 Пнд 21:34:39 1767719873
>>1766189

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

$result = $studentTable->search('иван'); // или ...->selectAll();
$pager = new Pager($result, $maxPerPage, $currentPage);
echo $pager->countPages();
var_dump($pager->getRecords());

Или хотя бы так:

$pager = $studentTable->search('иван');
echo $pager->countPages();

Так тоже неплохо смотрится.
Аноним 03/08/20 Пнд 21:40:46 1767725874
>>1767708
> Какой запрос написать? INSERT INTO table (x) VALUES(3.14), этот запрос вставит число в таблицу.
когда создаешь таблицу с колонками,нужно указать тип данных и описание в скобках.Так как описать 3.14?
Аноним 03/08/20 Пнд 21:52:31 1767737875
>>1767725
колонка
number DECIMAL(3,2)?
Аноним 03/08/20 Пнд 22:16:05 1767756876
>>1767725

Выбираешь, сколько ты будешь хранить цифр всего и сколько после запятой. Допустим, у нас 4 цифры после запятой и от 1 до 6 перед. Всего, значит, 10 цифр. Получается тип DECIMAL(10, 4).

Или ты можешь решить, что тебе хватает точности приближенного FLOAT который сохраняет 7-8 значащих (крайних слева) цифр, независимо от положения запятой, и тогда получается тип FLOAT.
Аноним 04/08/20 Втр 02:06:13 1767856877
Хочу написать парсер, но парсинг сайта требует селениум, а брать запросы апи через приложение на андроиде я не умею.

Как можно подсмотреть апи в приложении? Достаточно ли открыть через Apktool приложуху и походить по коду, или может ваершарк какой-то поставить и посмотреть урлы, которые, вероятно, будут по https?
Аноним 04/08/20 Втр 02:25:54 1767868878
>>1731888 (OP)
Здравствуй ОП, можешь проверить пожалуйста задачу про компанию «Вектор» https://ideone.com/y7Z1eZ , пока еще без дополнительных условий про антикризисные меры, так как насобиралось и без этого много вопросов.

Сначала приняв сотрудника как отдельную сущность(объект), возникла проблема в их создании, потому как создание 10 работников уже долго, а что если работников будет 100, это займет как минимум 100 строк кода. Как мне показалось, тут нужна какая-то функция или может метод, которая будет создавать сразу требуемое кол-во работников с нужной нам профессией и рангом. Применительно к моей программе я эту функцию представлял как-то так https://ideone.com/R836D5 , в этой функции проблема, в том, что каждую итерацию в ячейку массива кладется ссылка на один и тот же объект, а не создается новый. Еще я попробовал вариант, добавив свойство - количество в класс сотрудников, что-то вроде этого (на примере одного департамента) https://ideone.com/56lUEc , оно работает, но выглядит некрасиво.

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

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

Тут была возможность класс департамент сделать как абстрактный и сделать 4 подкласса департаментов, но я подумал тут этого никак не надо, ведь все департаменты имеют одинаковые методы.
Аноним 04/08/20 Втр 09:33:37 1767943879
>>1767868
Я не ОП, но мне кажется что можно сделать так:

В департамент создаешь работников, и чтобы не писать так:
>$purchEmp = [$me1, $me2, $me3, $me4, $me5, $me6, $me7, $me8, $me9, $me10, $me11, $me12, $me13, $me14, $ma1, $ma2, $me15];

Можешь сделать метод в департаменте чтобы получить всех.
$purchasing->getEmployees();

А добавлять их так:
$purchasing = new Department();
$purchasing->addEmployee(new Manager(1));
или сразу много в add =)

Я думаю хранить это можно как массив объектов.
Аноним 04/08/20 Втр 11:29:16 1767999880
такой еще вопрос-валидатор нужен как при регистрации так и при входе на сайт.
чтобы не дублировать и там и там,надо написать один валидатор и подключать его и там и там с помощью include?
Аноним 04/08/20 Втр 16:10:12 1768294881
есть файл .gitignore с содержанием:
*
!media/
и все. допустим я добавил в директорию новую папку static и соответственно в гитигнор так же впихнул !static/
но блять при этом добавленную папку коммитить и пушить я все равно не могу. че за хуйня и как фиксить такое?
Аноним 05/08/20 Срд 21:52:03 1769413882
А можно ли в такой или похожей конструкции
>$a = isset($b) ? $b : null
В случае негативного результата проверки не записывать null в $a, а просто ничего не делать? Хотелось бы вместо null писать undefined, но так нельзя.
Аноним 06/08/20 Чтв 00:20:53 1769491883
>>1769413

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

Если речь о массивах, где элемент может отсутствовать, то можно использовать ??, например:

$page = intval($_GET['page'] ?? 1);

Если же речь о каком-то другом случае, то можно еще делать так:

$a = $b > 0 ? $b : $a;

Аноним 06/08/20 Чтв 00:22:06 1769493884
>>1768294

Гит управляет не папками, а файлами. Создай любой файл в папке, например .gitkeep и коммить его.
Аноним 06/08/20 Чтв 00:30:52 1769497885
>>1758823
>Подумываю о более легковесной замене phpstorm
Зачем?
Аноним 06/08/20 Чтв 00:47:10 1769501886
>>1767868

> Как мне показалось, тут нужна какая-то функция или может метод,

Можно сделать функцию для этого. Она может принимать параметры сотрудника и создавать их в цикле через new $profession, либо принимать "образец" сотрудника и клонировать его с помощью оператора clone. clone создает новый независимый объект, копируя в него все свойства оригинала.

> Еще я попробовал вариант, добавив свойство - количество в класс сотрудников

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

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

Агрегация:

$dep = new Department;
$company->addDep($dep);

Композиция:

$company->createNewDep(....);

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

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

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

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

По коду:

> public $departments;
Лучше бы сделать это свойство закрытым и менять его только через методы класса. Вроде addDepartment. Это называется инкапсуляция - сокрытие внутреннего устройства класса от внешнего кода.

Функции лучше бы назвать в стиле "сделатьЧтоТо", начиная название с глагола. Не companyEmployees, а countEmployees.

$companyECof лучше было назвать $total.

Имена свойств объектов пишутся с маленькой буквы.

> private $rankCoeff = [1, 1.25, 1.5];

Здесь можно было использовать private const.

В Работнике лучше было сделать абстрактные методы вроде getDefaultCoffee(), чтобы наследник был обязан их переопределить. А так у тебя в коде нет требования указать зарплату и потребление кофе при наследовании.

Аноним 06/08/20 Чтв 04:35:14 1769542887
Не опасно ли хранить в сессии user_id и обращаться к нему, как к действительному user_id текущего пользователя?

Например, пользователь правильно ввел логин и пароль, вошёл на сайт и записалась сессия:
$_SESSION["user_id"] = 3474;

Не опасно ли обращаться к этой сессии, например, для выполнения запросов к БД, типа:
UPDATE user SET last_visit = NOW() WHERE user_id = $_SESSION["user_id"]

Может ли пользователь переписать значение user_id в сессии?
Аноним 06/08/20 Чтв 17:42:27 1770074888
>>1731888 (OP)
ОП, проверь Вектор - https://ideone.com/06qnUR сделал с антикризисными мерами.

Пробовал создавать новые объекты vector через сlone, не получалось (данные были одинаковы во всех остальных после применения антикризисных мер), пришел к сериализации.
Аноним 06/08/20 Чтв 21:31:16 1770291889
Screenshot8.png 5Кб, 633x230
633x230
Screenshot9.png 11Кб, 791x549
791x549
если я только сейчас решил вкатиться в пхп, посидел подрочил гайд часик и встал на этом задании то я дурак и мне не стоит пытаться?
чувствую себя таким глупым, вы бы только знали...
Аноним 06/08/20 Чтв 21:52:09 1770313890
>>1770291
Все что в кавычках - строка. Вычисления убирай из них и конкатенируй ( строку с числами точкой => "string" . 1+1 ).

Можешь полистать тред, некоторые тоже не могли эту задачу решить.

А так, если хочешь научиться - научишься.
Аноним 06/08/20 Чтв 22:55:39 1770366891
Screenshot10.png 12Кб, 783x538
783x538
>>1770313
я наверное еще слишком глуп, так что не понял тебя, анон
но я таки нашел решение, правда я не понимаю почему гайд так составлен, именно это упражнение совсем без каких-либо пояснений, ни слова о $result, на самом деле просто тебе говорят что вот, ты же можешь сделать цикл со строчками х=1 х=2, ебани таблицу умножения
или просто я тупой, ну хоть не остановился так рано, и то радует
Аноним 06/08/20 Чтв 23:40:15 1770383892
Аноним 06/08/20 Чтв 23:49:43 1770388893
image.png 42Кб, 1066x599
1066x599
Аноним 07/08/20 Птн 00:27:20 1770397894
>>1770388
Я бы хуеплетов, которые нестрогое сравнение используют, сам бы прикопал, метра на два.
Аноним 07/08/20 Птн 00:29:17 1770399895
>>1770388

Лучше бы жаловаться в баг-трекер, мне конечно интересно было это прочесть, но я не разработчик PHP и помочь не могу.
Аноним 07/08/20 Птн 00:32:22 1770401896
>>1770397
К чему ты это высрал?
Аноним 07/08/20 Птн 00:34:54 1770403897
Аноним 07/08/20 Птн 00:38:33 1770405898
>>1770403
Конечно заменю. Выпну всех пидормотов, а на их место посажу грамотных парней, которые перед сравнением приводят типы.
Аноним 07/08/20 Птн 00:44:10 1770410899
>>1770405
Ты не выглядишь умнее, когда настаиваешь на исключительно строгом сравнении. Это известная "хорошая практика" так делать, но как и любой инструмент, должен применятся с пониманием, почему так. Я, например, про кейсы, где нестрогое сравнение полезно и его нельзя заменить строгим, в той же ларке так пишут. Ты пока как попугай повторяешь мантру, пытаясь сойти за "серьёзного" кодера, а на выходе "пук-пук".
Аноним 07/08/20 Птн 00:48:13 1770412900
>>1770410
Согласен, возможно есть случаи, когда нестрогое сравнение может быть полезно. Но ты такой код не пишешь. Нет в повседневных задачах программиста таких случаев. В 99.9999% случаев нужно сравнивать строго.
Аноним 07/08/20 Птн 00:51:54 1770416901
>>1770412
>Нет в повседневных задачах программиста таких случаев.
У тебя мало опыта для таких громких заявлений, без обид. К примеру, сравнение объектов обычно делается через loose тип, можешь сам погуглить почему. Работа с объёктами - это редкость?
Аноним 07/08/20 Птн 01:17:18 1770421902
>>1770416
Ты сравниваешь объекты через type juggling и высираешь про мой недостаток опыта? Удачи сравнить через == две модели из того же eloquent и потом гдать что из скрытых полей ломает сравнение.
Там где вы, нубасы, и десятка проектов не видевшие, читаете "о, нихуя как удобно" я вижу "баги", "непредсказуемое поведение", "поменяй тут и все посыпится".
Аноним 07/08/20 Птн 01:22:52 1770422903
>>1770421
Я вот про это и писал, ты выдернул отдельный кейс, с которым ты работал, и попытался натянуть его на свой аргумент. Кейсы, где такое сравнение уместно, тебе не попадались. Это и есть типичный случай "знаю мало, заявляю много".
Аноним 07/08/20 Птн 01:26:12 1770424904
>>1770422
Я утверждаю, что тебе ни разу в жизни не приходилось писать код, в котором обязательно нужно использовать нестрогое сравнение.
Если это не так, то приведи пример типичного кода, в котором можно использовать только нестрогое сравнение.
Аноним 07/08/20 Птн 01:27:58 1770425905
>>1770421
Сначала объясни твой крик про некорректное сравнение через "type juggling".
Вот как ты сравниваешь объекты? В двух ситуациях:
1. По значениям.
2. По идентичности.
Разумеется, интересует решение без "type juggling".
Аноним 07/08/20 Птн 01:34:50 1770426906
>>1770425
Ты можешь быть уверен что сравнение будет работать корректно только если знаешь что сравниваешь. Программист, который захочет поменять твой объект не может знать где и как ты потом эти объекты сравниваешь. ActiveRecord Это только усугубляет, добавляя кучу своих полей к объекту. Любое изменение в такой ситуации = потенциальный баг, который очень сложно поймать ведь никаких сообщений об ошибке ты не увидишь.

Во первых для сравнения нужно определить что вообще можно сравнивать. Это как минимум интерфейс Comparable или что-то вроде. Во вторых разумеется для каждого объекта нужно индивидуально определить какую его часть нужно сравнивать, иногда достаточно Id, а иногда других полей. Когда все это сделано никакие изменения объекта не сломают твое сравнение, оно железобетонно.
Аноним 07/08/20 Птн 01:39:19 1770430907
>>1770426
Что-то ты поплыл. Для синьйора с десятками проектов это странно, не иметь опыта со сравнением объектов окромя работы с бд (где сравнивать объекты вообще нахуй не надо).
Аноним 07/08/20 Птн 01:41:23 1770432908
Аноним 07/08/20 Птн 14:42:45 1770932909
>>1736634
Охренеть, голос разума, да на программаче. Я не верю своим глазам сейчас понабежит толпа сумасшедших yii-шников, которые будут рассказывать, насколько оно там всё не загнивает, неотвратительно сделано и тд
Двачую на все сто, php в 2020 - это только symfony либо laravel, других сравнимых по качеству вещей пока не появилось
Аноним 07/08/20 Птн 14:48:36 1770938910
>>1770410
Да правильно всё он говорит. Нестрогое сравнение = сравнение с автоматическим "магическим" приведением типов. "Магия" в этом случае означает "черт его знает, что там будет", что не способствует стабильности того, что ты напишешь.
Если хочешь нормально сравнивать абстрактные штуки - то ты не пишешь строгое сравнение, ты определяешь, как ты будешь это сравнивать, т.е. как числа, строки, даты или что-то ещё, это не уменьшит гибкость, но даст тебе гарантию того, что у тебя вдруг строка не воспримется, как 16-ричное число, лол.
Т.е. вместо `$a == $b` правильнее писать `(int)$a === (int)$b`, так ты определяешь способ сравнения.
мимо
Аноним 07/08/20 Птн 19:30:17 1771293911
>Я имел в виду немного другой порядок поиска, используя токен как идентификатор: SELECT ... WHERE email = :email AND token != :token. Но да, получается почти то же самое, что у тебя.
Так у меня в базе соленый хэш токена находится, как я его через != проверю? Они же вроде каждый раз другие. И кстати, я сейчас заметил невероятно тупую вещь: у меня в STG для проверки того, занят ли эмейл, был отведен отдельный метод, являющийся полной копипастой метода выдачи студента по эмайлу, только с преобразованием в булевый тип в конце. Наверное я это писал в очень сонном состоянии, хех. Теперь, после его удаления, даже если бы я мог реализовать предложенный тобою способ, для этого нужно было бы создать новый метод.
>>1767719
Так и сделал. Действительно хорошо выглядит, позволило удалить из STG метод получения количества записей по запросу, а также любые использования limit и offset. Хотел ввести еще FilterInterface ( чтобы не передавать множество одинаковых параметров в пагинатор, LinkShaper и STG ), но не сделал потому что ты мне за него особо не ответил, а я сам тупенький и не могу нормально представить как это должно выглядеть. Что должно быть прописанным в этом интерфейсе? Поля, соответствующие набору фильтрующих параметров, а также методы их получения? А зачем тогда интерфейс, если есть смысл создавать только один такой класс?

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

Еще создал класс LinkShaper, так как не очень красиво было при каждом вызове метода getLink передавать в него 500 переменных. Помимо этого, он теперь очень хорошо расширяемый: если появится какой-то новый сортировочный параметр, его необходимо добавить только в поля и конструктор, и всё будет отлично работать. Вот только я это сделал достаточно странным и диким способом: за сортировочный параметр считается любое свойство класса, начинающееся на "current", и автоматически записывается в http_build_query() под названием, которое следует после "current" ( поле currentSortColumn='rate' запишется как ?sortcolumn=rate ). Думаю, на реальном проекте меня бы за подобное палкой по горбу ударили.

И еще, кое-что очень важное для меня:
Когда я увидел что практически во всех остальных реализациях этой задачки контроллеры - это классы с методами, которые непонятно откуда вызываются, то нехило так удивился. Сначала подумал что сделал все абсолютно неправильно, но перечитал твой гайд, где прямым текстом написано, что классы для контроллеров делать не требуется, и с облегчением вздохнул. Но почему тогда все эти люди сделали через классы, если об этом даже упоминания нету? Странно. В реальных проектах контроллеры таки всегда на классах? Где об этом почитать хоть? Просто я все еще очень слабо понимаю как оно все работает.
Аноним 07/08/20 Птн 22:19:23 1771431912
какая есть библиотека помимо стандартной пдо для работы с БД?
Аноним 08/08/20 Суб 00:48:08 1771524913
>>1770938
Ты не понял о чём речь. Вопрос был про ситуации, когда == нельзя заменить на ===, например при сравнении объёктов на идентичность их значений. Человек сказал, что таких ситуаций не бывает, на что ему ответили, что бывают, просто ты с таким не сталкивался.
Аноним 08/08/20 Суб 00:59:59 1771531914
>>1771524
Ты опять выходишь на связь, хуипутало? Тебе человек русским языком поясняет почему нельзя так сравнивать объекты. Это даже не непрофессионализм, это блядь тупость непроходимая.
Аноним 08/08/20 Суб 01:11:13 1771537915
>>1771531
Так покажи как сравнивать, ты пока только пиздишь.
Аноним 08/08/20 Суб 01:15:53 1771538916
>>1771537
У тебя от стекломоя зрение испортилось?

>Во первых для сравнения нужно определить что вообще можно сравнивать. Это как минимум интерфейс Comparable или что-то вроде.
>Во вторых разумеется для каждого объекта нужно индивидуально определить какую его часть нужно сравнивать, иногда достаточно Id, а иногда других полей.
>Когда все это сделано никакие изменения объекта не сломают твое сравнение, оно железобетонно.
Аноним 08/08/20 Суб 01:18:36 1771540917
>>1771538
Ну ладно, давай проще пойдём. Вот есть бытовая ситуация: у меня два объёкта с датами, я хочу сравнить, одинаковы ли эти даты. Я это делаю через ==. Как синьйор с десятками проектов, опиши мне, почему так делать нельзя и как сделать правильно.
Аноним 08/08/20 Суб 01:43:06 1771549918
>>1771540
Как сеньор тебе поясняю https://3v4l.org/TCN3V нужно определиться блядь что ты сравниваешь. Если объекты, то это одно дело, а если даты, то другое.
Проще и интуитивно понятнее, когда у объекта есть функция, которая может его сравнить с другим объектом https://3v4l.org/MGspP
Аноним 08/08/20 Суб 01:49:19 1771550919
>>1771549
Я не вижу тут ответа, только виляние от него. Ты же сам в своём примере показал правильную отработку ==. Если бы тебе дали таск сравнить даты, а ты бы сравнил только "Y-m-d H:i:s" тебя бы обоссали, а ты применил == и нашёл различие. Охуеть, у тебя подсознание тебя самого исправляет.

Видимо ты уже устал под вечер после десятков проектов, я тебя больше сильно грузить не буду, только простой вопрос остался: чем в вышеназванном случае (сравдение двух объектов с датами на идентичность значений) плохо сравнение через ==?
Аноним 08/08/20 Суб 01:55:17 1771552920
>>1771550
>Я не вижу тут ответа, только виляние от него
Иди нахуй зеленый. Я тебе все расписал как делать правильно https://3v4l.org/MGspP

>только простой вопрос остался: чем в вышеназванном случае (сравдение двух объектов с датами на идентичность значений) плохо сравнение через ==?
Даты одинаковые, а сравнение через == показывает что даты разные. Желаю тебе и таким как ты долбоебам дебажить такие косяки по недельке в месяц, может мозгов прибавиться.
Аноним 08/08/20 Суб 02:00:01 1771553921
>>1771552
>Даты одинаковые, а сравнение через == показывает что даты разные
Ты таски в своих десятках проектов тоже так же через жопу читаешь? Нужно сравнить объёкт на идентичность всех значений, а не конкретного поля. Спишем это на усталость, ты много работал, понимаю.

>Желаю тебе и таким как ты долбоебам дебажить такие косяки по недельке в месяц, может мозгов прибавиться.
== как раз позволяет избежать бага, т.к. подсвечивает разность объектов.

Тяжело тебе будет в профессии с такой упёртостью.
Аноним 08/08/20 Суб 02:06:59 1771555922
>>1771553
>Ты таски в своих десятках проектов тоже так же через жопу читаешь? Нужно сравнить объёкт на идентичность всех значений, а не конкретного поля
>>1771540 >Вот есть бытовая ситуация: у меня два объёкта с датами, я хочу сравнить, одинаковы ли эти даты
Гнилой ты хуесос.


Аноним 08/08/20 Суб 02:10:31 1771559923
>>1771555
А часовой пояс это не часть даты, дебил?
Аноним 08/08/20 Суб 02:16:52 1771561924
Аноним 08/08/20 Суб 02:17:59 1771562925
Аноним 08/08/20 Суб 02:21:49 1771564926
>>1771562
И хули ты мне пытаешься показать, еблан? При создании объекта итак видно какие пояса используются.
Аноним 08/08/20 Суб 02:30:35 1771568927
>>1771564
У тебя проблемы с отслеживанием нити разговора?

1. У тебя спросили, почему нельзя сравнить через == два объекта с датами.
2. Не найдя аргументации, ты, маневрируя, вскукарекнул, что показывает одинаковые даты >>1771553
3. Тебя ткнули носом, что даты разные, ты провалил простейшее джуновское задание.
4. Обосравшись, продолжаешь вилять.
Аноним 08/08/20 Суб 02:33:20 1771569928
>>1771549
Поддвачну этого в вашем споре. Притом глупом.
Тоже сеньор с десятками проектов.
Аноним 08/08/20 Суб 02:34:16 1771570929
>>1771568
Дегенеративное хуйло, ты бредишь что-ли? Вот это блядь разные даты?
2020-08-07T12:16:34-11:00
2020-08-07T12:16:34-11:00
Аноним 08/08/20 Суб 02:34:54 1771571930
Аноним 08/08/20 Суб 02:37:19 1771572931
>>1771571
И нахуй мне твоя ссылка, дефиченто? Две даты в формате ISO 8601, где они блядь разные?
Аноним 08/08/20 Суб 02:38:13 1771573932
image.png 42Кб, 898x530
898x530
>>1771572
Перешёл на троллинг тупостью?
Аноним 08/08/20 Суб 02:43:27 1771574933
>>1771573
И что блядь поменялось, еблан? Ты где-то используешь дату в таком формате? Хватит вилять жопой, все было сделано по твоему тз, с использованием международного, сука, формата даты. Вытаскивай мой хуй из своего рта и пиздуй фиксить свой говнокод, пока тебе тимлид пизды не выкатил.
Аноним 08/08/20 Суб 02:46:09 1771575934
>>1771574
>сравнивает даты
>не проверяет часовые пояса
>синьйор десятки проектов
Таки ты выбрал троллинг тупостью. Ну удачи.
Аноним 08/08/20 Суб 02:48:14 1771576935
>>1771575
>2020-08-07T12:16:34-11:00
>не проверяет часовые пояса
>-11:00
Обтекай.
Аноним 08/08/20 Суб 02:49:18 1771578936
Аноним 08/08/20 Суб 02:54:39 1771580937
>>1771578
Хватить крутить жопой. Это название часового пояса, оно не имеет никакого влияния на дату, на дату влияет только поправка.
Аноним 08/08/20 Суб 02:55:22 1771581938
Аноним 08/08/20 Суб 02:56:29 1771582939
Аноним 08/08/20 Суб 03:04:10 1771585940
>>1771580
>оно не имеет никакого влияния на дату
Ты так скозал? А если меня интересует конкретный часовой пояс. Бывают сезонные разницы между поясами, когда в одно время разница сходится, а в другое - нет. Это довольно грубая ошибка не проверять разницу часовых поясов, обычно за такое с исптытательного задания выпроваживают. Но ты опытный, видимо просто забыл так сделать.
Аноним 08/08/20 Суб 03:12:09 1771586941
>>1771585
Если время расходится, то даты будут разными, долбоеб.
Аноним 08/08/20 Суб 03:15:10 1771588942
>>1771586
Прочитай ещё раз внимательно, а то глупо выглядишь.
> Бывают сезонные разницы между поясами, когда в одно время разница сходится, а в другое - нет
Сегодня у тебя время сошлось - а через полгода не сойдётся, и ты пизды получишь за говнокод. Хотя пизды ты получишь ещё на стадии ревью, если ты с таким вообще сталкивался.
Аноним 08/08/20 Суб 03:18:57 1771589943
>>1771588
Так блядь если оно не сойдется, то даты разные. Мы блядь это и проверяем. Я тебе, дураку об этом и талдычу. Я то блядь как раз с этим сталкивался, и со сменой часовых поясов, и с изменением поправки в часовом поясе.
Аноним 08/08/20 Суб 03:24:05 1771591944
>>1771589
Хватит жопой вертеть, я уже устал ссать на тебя за твою тупость. Ты написал код, который выдаёт даты как одинаковые, хотя через месяц этот же код может показать, что даты разные. Что это пример говнокода тебе уже написано здесь >>1771588 и здесь >>1771585

В отрыве от конкретного примера ты все-равно обосрался, было задание сравнить две сущности, ты, долбоёбина, сравнил только конкретные поля этих сущностей.
Аноним 08/08/20 Суб 03:32:19 1771594945
>>1771591
>Ты написал код, который выдаёт даты как одинаковые, хотя через месяц этот же код может показать, что даты разные.
Вот две даты. В формате ISO 8601. Они одинаковые или разные, придурок?
2020-08-07T12:16:34-11:00
2020-08-07T12:16:34-11:00

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

>>1771540
>Вот есть бытовая ситуация: у меня два объёкта с датами, я хочу сравнить, одинаковы ли эти даты

Хватит пиздеть, я читать умею. Ты написал о сравнении двух дат, даже не объектов. И написал, что ты сравниваешь даты используя возможность сравнения полей объектов. Я тыкнул тебе в нос, что РАЗНЫЕ объекты могут представлять ОДИНАКОВЫЕ даты. Ты маневрируешь ебалом по луже мочи уже два часа.
Аноним 08/08/20 Суб 03:34:30 1771595946
>>1771594
>В формате ISO 8601
Где тебя просили сравнивать даты в этом формате? Тебе за формат вообще ни слова не писалось. Засунь свою отсебятину себе в жопу.
Часовой пояс - это свойство сущности даты, набей себе на лбу, т.к. твоей тупорылой памяти хватает на 3 минуты.
Аноним 08/08/20 Суб 03:35:54 1771596947
>>1771595
>2020-08-07T12:16:34-11:00
>Часовой пояс - это свойство сущности даты
>-11:00
Очередной круг по луже мочи.
Аноним 08/08/20 Суб 03:40:10 1771598948
>>1771596
>>1771573
Решил в дурачка косить? Третий раз мокаю тебя в твою же мочу. Не надоело?
Аноним 08/08/20 Суб 03:45:24 1771600949
>>1771598
Название часового пояса не меняет дату, дату меняет поправка часового пояса. Два разных часовых пояса могут иметь одинаковую поправку и указывать на одинаковую дату. Пиздец ты дегенерат.
Аноним 08/08/20 Суб 03:46:32 1771601950
>>1771600
>Два разных часовых пояса могут иметь одинаковую поправку и указывать на одинаковую дату.
А могут и не иметь, дебил. Тебя в это здесь носом ткнули >>1771591
Аноним 08/08/20 Суб 03:47:46 1771602951
>>1771601
Так мы блядь для того и сравниваем, идиот, чтобы проверить имеют или не имеют.
Аноним 08/08/20 Суб 03:50:54 1771603952
>>1771602
Ещё раз повторяю, ты высрал код, которые называет даты одинаковыми, т.к. их поправка - одинаковая. Но через полгода у одного пояса поправка изменится, а у второго - нет, а ты уже признал эти даты одинаковыми. Если бы сравнивал через ==, то смог бы заметить баг, а так тебе приходится как ужу на сковороде вертеться, чтобы свой обсёр скрыть.
Аноним 08/08/20 Суб 03:54:22 1771604953
>>1771603
Пиздец ты ебанутый. Ну узнал ты что названия часовых поясов разные, а дальше ты что будешь делать? Даты то ты не знаешь, все равно нужно будет даты сравнить.
Аноним 08/08/20 Суб 03:59:03 1771605954
>>1771604
>а дальше ты что будешь делать
Откуда мне знать, что заказчик будет с этим делать. Он хотел быть уверен, что даты абсолютно одинаковые, а ты ему подсунул бомбу замедленного действия. Захочет он через ровно через полгода с этой даты прислать месседж ровно 6 утра, а там уже 7:00, потому что тупорылый еблан забыл сравнить часовые пояса.
Аноним 08/08/20 Суб 04:01:08 1771606955
>>1771605
>Откуда мне знать, что заказчик будет с этим делать
Хуипутало у тебя в тз написано:

>>1771540
>Вот есть бытовая ситуация: у меня два объёкта с датами, я хочу сравнить, одинаковы ли эти даты
Аноним 08/08/20 Суб 04:01:54 1771607956
>>1771606
Что ты успешно и зафейлил. Мы вам перезвоним.
Аноним 08/08/20 Суб 04:04:14 1771608957
>>1771607
А у тебя получилось "нет, мы не можем доставить товар, потому что хуй знает мож через пол года часовые пояса поменяются", хотя даты абсолютно одинаковые. Сразу видно, что ты, черт, никогда в жизни с датами и часовыми поясами не работал.
Аноним 08/08/20 Суб 04:06:56 1771609958
>>1771608
Дурачёк, если бы ты проверил часовой пояс и знал бы как работает та же datetime, то смог бы точно сказать, а не
>хуй знает мож через пол года часовые пояса поменяются
Жалкий тупой вертлявый говнокодер ссу на тебя за твою упёртость и тупость.
Аноним 08/08/20 Суб 04:13:06 1771610959
>>1771609
Я отлично знаю как работает DateTimeImmutable. Только по твоему DateTime уже можно понять, что ты код даже пол года не пишешь еще.
Аноним 08/08/20 Суб 04:18:06 1771612960
>>1771610
>Я отлично знаю
Твои высеры выше по треду и говнокод говорят об обратном. Пока ты жалкий вертлявый кодерок, залезший в очень глубокую яму мочи от своей упёртости и тупости.
Аноним 08/08/20 Суб 04:20:48 1771613961
>>1771612
Ну написать что-то конкретное такой дегенерат как ты конечно же не способен.
Аноним 08/08/20 Суб 04:24:39 1771615962
>>1771613
Я тебя уже десять раз макнул в твоё же дерьмо выше по треду. Тебе остаётся только жопой вилять, ведь кроме тупости ты ничего высрать не смог, а признать свою тупость тебе сущность говнокодера не позволяет.
Аноним 08/08/20 Суб 04:33:26 1771616963
>>1771615
>Дурачёк, если бы ты проверил часовой пояс и знал бы как работает та же datetime, то смог бы точно сказать, а не "хуй знает мож через пол года часовые пояса поменяются"
Давай про вот это конкретно. Что тебе даст тот факт что названия часовых поясов разные? Тебе нужно сравнить даты. Как ты узнаешь что сдвиг одного из часовых поясов потом поменяется? Давай, по фактам. Конкретно.
Аноним 08/08/20 Суб 04:40:05 1771617964
>>1771616
Ты же сказал
>Я отлично знаю как работает DateTimeImmutable
Там в мануальчике всё написано, открой его в первый раз и почитай. Опять на пиздеже попался. Как меня твой пиздёж заебал. Тыкаешь тебя в говно, а ты только жопой вертишь. Ты не способный к диалогу, не способный к обучению. С такими коллеги не здороваются за руку а эйчары вносят в чёрный список, чтобы ни дай бог в команду попало такое тупорылое вертлявое говно.
Аноним 08/08/20 Суб 04:41:51 1771618965
>>1771617
Ты на вопрос отвечать будешь? Если нет, то слив защитан, свободен.
Аноним 08/08/20 Суб 04:44:10 1771619966
>>1771618
>Там в мануальчике всё написано, открой его в первый раз и почитай
Аноним 08/08/20 Суб 04:46:37 1771620967
>>1771619
Да, да. Если все так просто, то че ты ты нам в тренд не скопируешь нужную строчку? Это же изи, и в споре подебишь и меня сольешь. Но ты этого не сделашь. Никогда. Беги отсюда, роняя кал.
Аноним 08/08/20 Суб 04:49:21 1771621968
Аноним 08/08/20 Суб 04:50:51 1771622969
>>1771621
Конкретно, что это даст в нашей ситуации, вот тут как это применяется. >>1771616
Аноним 08/08/20 Суб 05:11:00 1771625970
15913781481030.webm 2434Кб, 640x360, 00:00:22
640x360
>>1771621
Ахахах. Ты реально думал что я не зайду туда и не проверю? Ты просто выбрал случайное место в мануале, который тут вообще никаким боком? Ебать ты долбоеб, земля те пухом. Наебал, проверяй.
08/08/20 Суб 10:02:41 1771657971
Пиздос вы ебаната два. Наговорили за ночь 60 постов, при том что средний постинг после переката - 2 в день.
08/08/20 Суб 10:03:13 1771658972
>>1771657
после бамплимита, тобишь
Аноним 08/08/20 Суб 10:11:46 1771660973
>>1771621
какой же у пхп туториал гавеный
Аноним 08/08/20 Суб 12:59:20 1771708974
>>1771625
А ты заходил? Там ясно показан пример где DST случается. Если бы ты открыл и осилил прочитать, не позорился бы снова.

Список таймзон может тут посмотреть со всеми сдвигами https://www.php.net/manual/en/timezones.php
Аноним 08/08/20 Суб 13:55:25 1771741975
>>1771708
Ну случается и хули? Ты реально думал что я нстолько тупой что не пойму как ты меня хочешь наебать?
У нас два объекта с датой, нам нужно узнать одинаковые ли в них даты. Ты сравнил объекты по полям и выяснил что названия часовых поясов у них разные. Что дальше? Что тебе дает эта информация? Даты равны или не равны?
Причем здесь DST если в часовом поясе может просто поменяться поправка: MSK до 2011 был +3, до 2014 +4, а после 2014 опять +3. Я все это отлично знаю, потому что в 2016 мне пришлось делать нехуевый рефакторинг из-за таких долбоебов как ты.
Аноним 08/08/20 Суб 14:19:44 1771766976
>>1771741
Продолжаешь жопой вилять. Ты назвал одинаковыми две даты с разными часовыми поясами, т.к. их поправки одинаковые, но даты нихуя не одинаковые.
Если в один день к одной дате прибавить 24 часа и к другой ты получишь в одной 4 утра, в другой - 5. Снова макаю тебя в говно твоей невнимательности и тупости >>1771621


>Причем здесь DST если в часовом поясе может просто поменяться поправка: MSK до 2011 был +3, до 2014 +4, а после 2014 опять +3
Как ты можешь таким тупым быть. Сделай себе привычку гуглить, прежде чем открывать свой тупой рот, ещё макаю тебя говном в мануал: https://www.php.net/manual/en/timezones.php
Здесь все поправки регулярно обновляются. Читай мануал, сука, не смей отвечать снова, прежде чем не прочитаешь весь док.
Аноним 08/08/20 Суб 14:35:52 1771785977
>>1771766
>Если в один день к одной дате прибавить 24 часа и к другой ты получишь в одной 4 утра, в другой - 5
Ты понимаешь, что прибавив 24 часа ты получаешь ДРУГУЮ дату? Исходные даты равны, а +24 часа не равны.

И что это меняет в момент сравнения, придурок? Я десятый раз повторяю свой вопрос:
Ты сравнил объекты по полям и выяснил что названия часовых поясов у них разные. Что дальше? Что тебе дает эта информация? Даты равны или не равны?

>Здесь все поправки регулярно обновляются.
Ты внатуре ебанутый? Ты в своем сравнении эти поправки не учитываешь. Сегодня даты равны, а через год не равны. Это твои же слова, идиот. Хватит срать себе в штаны.
Аноним 08/08/20 Суб 14:44:17 1771798978
>>1771785
Я понял, тебе слишком сложно понимать сложные термины и слова. Давай как дурачку попроще объясню:
У тебя был таск: сравнить две даты и сказать, одинаковы ли они. Тебе дали две даты с одинаковым значением поправки, но с разных часовых поясов. Ты отвечаешь клиенту, что даты одинаковые. Для тупого ещё раз растолкую: если две сущности одинаковы, то они одинаковы во всех свойствах и значениях. Клиент затем производит некоторую манипуляцию с обеими датами, например прибавляет 24 часа, ожидая увидеть одинаковые результат, ведь ты ему уже сказал, что даты одинаковые. Но результат получился разный, ведь стажёр-даунёнок проигнорировал разность часовых поясов. Клиент охуевает с твоей тупости, ссыт тебе на лицо и вышвыривает с подвала шараги, где ты надеялся за еду получить стажировку.
Аноним 08/08/20 Суб 14:47:35 1771805979
>>1771798
Ой дурааак. Для этого блядь и нужно использовать иммутабельные даты, сын собаки. Ты когда дату меняешь, то новый объект получаешь, даунито. Новую блядь не "сущность", а Value Object. На кого я свое время потратил, бляя. Ясно.
Аноним 08/08/20 Суб 14:53:48 1771818980
>>1771805
Ты не меняешь дату, та сравниваешь их и говоришь одинаковы или нет. Кто и когда будет их менять тебя не ебет, от тебя просили элементарную логическу проверку. Ты не можешь даже в основы логики если (x = y) то (x + 24) = (y + 24). Это школьная программа, где-то 4-й класс. Как ты вообще про php узнал с такой умственой отсталостью.
Аноним 08/08/20 Суб 14:56:13 1771828981
>>1771818
Какой же ты еблан. Охуенно сравнил, черт.
$x = 3;
$y = 3;
isEqual($x + $y) = true
$x += 2;
isEqual($x + $y) = false
Аноним 08/08/20 Суб 14:59:22 1771839982
>>1771828
К чему ты это высрал? Какой нахуй $x += 2; Читай внимательнее мой предыдущий пост, пиздоглазая маня.
Аноним 08/08/20 Суб 15:05:58 1771855983
>>1771839
Я тебе дураку показываю, что дату можно поменять как хочешь и результат будет разный. Ты сам-то этот мануал читал? Даже блядь если "+24 hours" вместо "PT24H" добавить, то другой результат будет, членосос.

Для этого блядь и сделаны иммутабельные даты. Изменяя дату ты получаешь новый объект, который опять надо сравнивать.
Аноним 08/08/20 Суб 15:10:09 1771865984
>>1771855
Иди нахуй блять, даун, мнящий себя синьором, не может в банальные логические операции из начальной школы. Как же ору с твоей тупости, прям лицо отечественного кодинга. Тебе уже со всех сторон показали где ты обосрался, но ты продолжал глубже и глубже погружаться в свой кал. Ты неспособен к анализу, к логике. Ты ущербный, с тобой нет смысла вести диалог и тратить время. Удачи.
Аноним 08/08/20 Суб 15:25:27 1771900985
>>1771865
Съеби нахуй, пиздобол. Я тебе тысячу раз уже объясянл что это не "простая" логическая операция. Что нужен специальный метод, с кучей условий и проверок. Даты до 2014 нужно сравнивать с одной поправкой, а после с другой, перевод времени может иметь значение, а может не иметь.
А твое == нихуя не дает. Ну не равны объекты и дальше что? Сравнение объектов дает один результат, а сравнение дат другой. То что эти результаты случайно совпали ничего не говорит.
Самое хуевое, что по ходу выяснилось что ты с датами никогда не работал. Не удивлюсь если ты вообще не работал. Ну хоть поржал с дауна.
Аноним 08/08/20 Суб 15:29:17 1771913986
>>1771900
Нет, это простейшая операция. Тебе давали два аргумента и просили на выходе ответ равны они или нет. Ты обосрался раз, не зная, как работать с датами, обосрался со знанием школьной математики, сейчас просто по кругу бегаешь тралируя тупостью.
Аноним 08/08/20 Суб 15:33:44 1771931987
>>1771913
Да, да. Простейшая, примеров не будет. Срыгни уже.
Аноним 08/08/20 Суб 15:35:49 1771941988
>>1771931
Примеров выше по треду было достаточно. Ты утёрся, пытаясь оправдаться за свою тупость в их решении.
Аноним 08/08/20 Суб 15:39:46 1771945989
>>1771941
>Конкретный вопрос
>Сам должен знать
>Повторяю вопрос
>В мануале читай
>Повторяю вопрос
>Все уже сказано
>Повторяю вопрос
>Ссылка на случайную строку в мануале
>Повторяю вопрос
>Примеров выше по треду было достаточно. Ты утёрся, пытаясь оправдаться за свою тупость в их решении.
Охуенно работал с датами, долбоеб.Я тебя сдетектил не сразу, конечно. Но все-таки сдетектил. Съеби, нубас.
Аноним 08/08/20 Суб 15:42:12 1771946990
>>1771945
По делу сказать нечего, мань?
Аноним 08/08/20 Суб 15:43:36 1771948991
>>1771946
>простейшая операция
>примеров не будет
Съеби.
Аноним 08/08/20 Суб 15:45:30 1771950992
Аноним 08/08/20 Суб 15:48:28 1771957993
>>1771950
Я об этом же. Примеров не будет. Съеби.
Аноним 08/08/20 Суб 15:55:10 1771965994
>>1771957
У тебя же с памятью проблемы, дай ка макну тебя в твоё говно снова.
Вот ты обосрался с элементраной задачей сравнить две даты >>1771561

Вот ты обосрался со знанием основ логики и математики >>1771818

Если после первого обсёры ещё можно было выйти с чистой совестью, признав свою тупость и исправившись, но ты решил срать в ту же яму, в которую себя закопал, и выставил себя дурачком, не знающим даже школьной программы. Максимум кек.
Аноним 08/08/20 Суб 15:58:08 1771969995
>>1771965
Конкретный пример, в котором полезно сравнение через == . Я уже двадцать раз писал: Ну сравнил ты объекты и они не равны, и хули из этого следует? Как это применить? Менять объекты пока не совпадут? Конкретный пример приведи.
Аноним 08/08/20 Суб 16:09:39 1771994996
>>1771969
Ох хо, это ты так задним числом принял свою тупость, зря ты только жопой вертел 80 постов.

>Конкретный пример, в котором полезно сравнение через ==
У тебя уже был пример, сравнить две даты на одинаковость. Ты говна поел, ещё хочешь?
Аноним 08/08/20 Суб 16:18:33 1772003997
>>1771994
Ну и кто ту верти жопой?
Я про сравнение объектов с датами и говорю. Ты сравнил два объекта с разными названиями часовых поясов. Они не равны. Что дальше? Как это использовать? Какая польза от такого сравнения? Конкретный пример.
Аноним 08/08/20 Суб 18:01:28 1772087998
>>1771969
>Конкретный пример, в котором полезно сравнение через ==
Вот тебе попроще пример:
Есть приём заказов на некую вещь с опциями (лежит объектом в заказе). Если позиции и опции новых заказов совпадают (сравнением через ==) с уже имеющимися, то количество в текущих заказах инкрементируется, вместо добавления аналогичного. Из-за особенностей цеха подготовка одной позиции в зону отгрузки практически аналогична подготовке сотни тех же позиций.
Аноним 08/08/20 Суб 18:13:38 1772093999
>>1772087
>Вот тебе попроще пример
Я о том и говорю, что даты это сложный пример и простым == тут не обойтись.

Ты понимаешь, что если я добавлю в "позицию" или "опцию" новое поле, то оно может сломать все сравнения? Если ты напишешь функцию, которая сравнивает конкретные свойства "позиции" и "опции", а не "объекты", то все станет проще и надежней. Станет понятно что сравнивается, станет безопасно изменять объекты.
Аноним 08/08/20 Суб 18:21:45 17720991000
>>1772093
Я вижу с примером ты согласен, уже прогресс. Ты можешь кодить как тебе угодно. Где-то лучше сделать так, где-то иначе, поэтому сознательно ограничивать себя в инструментарии только потому, что ты где-то прочитал про "нетрушность" некого метода, даже если решение полностью удовлетворяет запросу бизнес-логики (например, позиции и поля меняются редко и в контролируемых условиях) и является более простым - непрофессионально.
Аноним 08/08/20 Суб 19:10:19 17721261001
>>1772099
>Ты можешь кодить как тебе угодно
== это просто говнокод, вот и все. Ты пишешь хрупкий код для того чтобы сэкономить на эфемерной "простоте". А потом этот код быстрее выкинуть, чем исправить.

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

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

Последний вопрос. Ебанько, ты вообще работал в проекте где было больше двух программистов?
Как ты вообще это себе представляешь? Написал код, а сравнение в другом месте чет сломалось, продажи не идут. Надо пойти спросить того долбоеба, который его пол года назад писал че там в объектах нужно сравнивать, а че не нужно. Хватит высирать что-то о профессионализме, козы плевок.
Аноним 08/08/20 Суб 19:29:11 17721381002
>>1772126
>Говнокод всегда хуже
Долбоёб, не способный сравнить две даты, поясняет за говнокод, посмотрите на него.

>ты вообще работал в проекте
Ты даже в проекте как таковом судя по твоим высерам не работал, ибо не можешт представить ситуации, где нужно группировать объекты по идентичности их значений.
Аноним 08/08/20 Суб 20:09:24 17721671003
>>1772138
Какой же ты скользкий хуесос.

Это ведь так просто написать. С датами работал, с пацанами работал. Делали А, Б, В. Даты сравнивали вот так, вот так получалось.

Но ты кукаретик, который нихуя кода не видел. Ты ссышь, что попадешься на пиздеже. И правильно ссышь - у меня глаз наметан. По мелким оговорочкам я уже давно понял что ты не программист нихуя.
Аноним 08/08/20 Суб 20:22:58 17721791004
>>1772167
Я тебе привёл очень простой пример доступный для твоего понимания. Ты что-то перданул, что изменение атрибутов в позициях что-то там сломает, так и не поняв, что если атрибуты на входе поменяются, то они поменяются у всех объектов и сравнение как раз пройдёт как надо благодаря ==, а если бы ты сделал сравнение по конкретным атрибутам, то у тебя бы похерился твой "надёжный" код.
Если же у тебя планируется динамическое изменение названий атрибутов в задеплоеном коде то боже упаси к такому говнотворчеству вообще притрагиваться. Я не знаю в какой ты параше учился, что там это было нормой, где на говноархитектуру натянули говнокод. Отрыжка курсов на ютубе поясняет за надёжный код.
Аноним 08/08/20 Суб 20:43:07 17721961005
>>1772179
Как же приятно тебя, хуесоса, макать в говно https://3v4l.org/mp2Hr
Ой, не равны.
Как же так, я ведь всего лишь поле добавил. А? Неужели где-то в коде какой-то долбоеб использовал == ? Беда какая, ну тогда желаю рака пизды этому дауну.

Кстати опять вильнул очком от прямого вопроса.
>Ебанько, ты вообще работал в проекте где было больше двух программистов?
Аноним 08/08/20 Суб 20:49:04 17722011006
>>1772196
Конечно не равны, ведь в них значения разные, дурачёк. Ты сравнил объекты по значениям и получил правильный ответ. Ору как ты, умственно отсталый, хотел кого-то макнуть, но сам поел причмокивая своё собственное.
Аноним 08/08/20 Суб 20:59:42 17722041007
>>1772201
У тебя был класс с двумя полями. Ты сравнивал объекты этого класса через == .
Я добавил третье поле createdAt. Не для сравнения, а для своих целей, я вообще не ебу что эти объекты где-то сравниваются, ведь это происходит неявно.
Твое сравнение перестало работать. Потому что ты, хуесос ленивый, не прописал явно что ты сравниваешь.

Кстати в третий раз вильнул очком от прямого вопроса.
>Ебанько, ты вообще работал в проекте где было больше двух программистов?
Аноним 08/08/20 Суб 21:47:52 17722231008
первая бетка вышла
Аноним 09/08/20 Вск 00:30:18 17723411009
>>1772093

Наличие функции сравнения, увы, не защищает от ситуации, когда в объект добавляют поля, но забывают добавить их в функцию сравнения. Хотя, конечно, это лучше чем ничего.
Аноним 09/08/20 Вск 07:17:23 17723981010
Аноны, сейчас пытаюсь для себя в пхп разобраться с милвэйрами.

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

$middleware1 = new Middleware1;
$middleware2 = new Middleware2;
$middleware3 = new Middleware3;


$middleware1->linkWith($middleware2)
$middleware2->linkWith($middleware3)

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

Вообще в пхп классы можно в массиве перебирать?

И реквестирую по мидлвэйрам инфы какой нибудь.
Аноним 09/08/20 Вск 11:44:12 17724721011
>>1772398
>Вообще в пхп классы можно в массиве перебирать?
Да, можно.

>И реквестирую по мидлвэйрам инфы какой нибудь.
В laravel - https://laravel.com/docs/7.x/middleware
Или набери в ютубе middleware php
Аноним 09/08/20 Вск 12:35:12 17724941012
>>1772472

>>Да, можно.

Как это сделать? Чет я затупил
Аноним 09/08/20 Вск 14:39:38 17725961013
Блядь, не понимаю паттерн "фабричный метод", код конечно понимаю, но блядь зачем паттерн нужен, и в чем его приемущества - не понимаю.
Аноним 09/08/20 Вск 14:52:54 17726091014
Аноним 09/08/20 Вск 15:37:56 17726271015
сап погромач. сейчас чтобы разобраться с политиками ларки решил сделать себе такую задачку и реализовать ее: простой чек лист с тремя группами юзеров (т.е. пользователь, модератор, и соответственно админ) как я понял будет в основном такие сущности: юзер, роли, (связаны между собой промежуточной таблицей ManyToMany), списки и чек листы (в каждом списке выпадает список дел с чек боксами с указанием выполнен/невыполнен) и это тоже должно быть связано как я понял тоже ManyToMany. так вот я хочу так же прикрутить фишку чтобы модератор мог менять количество доступных этих списков у юзера и чтобы например больше 3 он создать не мог. так вот: как такое реализовать то?и еще думаю прикрутить фишку чтобы админ мог банить людей видел в треде тут кто то писал про такую возможность и запретить типо доступ. такое и вправду возможно? алсо, хотелось бы услышать ваши общие советы по тому как я это спроектировал и как лучше можно было бы сделать
Аноним 09/08/20 Вск 15:53:10 17726331016
Аноним 09/08/20 Вск 15:58:25 17726391017
>>1772633
Ну во первых это так и работает https://ideone.com/kiF4Vk
А во вторых писать так не стоит, это лютый говнокод.
Аноним 09/08/20 Вск 17:29:12 17727061018
А всякие длинные статьи на сайтах и прочее тоже просто в базе данных хранятся?
Аноним 09/08/20 Вск 18:10:38 17728271019
>>1772639
>>А во вторых писать так не стоит, это лютый говнокод.
Да я и не собираюсь. Это вариации на мидлвэйры в JS, там они строятся на сохранении next в замыкании у очередного мидлвэйра. В пхп конечно иначе. Полезу я в pimple, смотреть как оно работает.
Аноним 09/08/20 Вск 18:11:46 17728281020
>>1772706
Да в базах. Бинарные файлы (картинки и т.п.) хранятся на диске, с сохраненным к ним путем.
Аноним 09/08/20 Вск 18:21:02 17728351021
>>1772827
Pimple тут не причем.
Тебе нужно почитать PSR-15 https://www.php-fig.org/psr/psr-15/ и его реализации типа этой https://github.com/middlewares/psr15-middlewares

Ну я бы еще посоветовал почитать дебаты о самом PSR-15, как выбирали и почему он выглядит именно так, а не иначе. Это если осилишь конечно.
Аноним 10/08/20 Пнд 09:31:21 17731361022
>>1772835
Нихуя не могу понять с какого угла начать изучение вех этих стандартов.
Ща смотрю в исходник slim , и пока вижу только очень общую картину. мидлвэйры, объекты реквест, респонс - все немного в кучу.
Аноним 10/08/20 Пнд 10:12:48 17731541023
>>1773136
Ненавижу это состояние, когда сидишь, и тупо не знаешь с чего начать.
Аноним 10/08/20 Пнд 11:58:02 17732261024
>>1773154
Читаю я исходник slim, app.php - и чувствую себя максимально тупым ублюдком. Понятно только в очень туманном, приближенном контексте. Сука я тупой. Буду копротивляться в нем каждый день по часику-два.
Аноним 10/08/20 Пнд 17:20:40 17734201025
>>1773226
Бля, ну ты же сам написал список, над чем здесь тупить?
App (+ container), Middleware, Request, Response.
Первое - это само приложение, отвечает за конфигурацию.
Второе - прослойка перед вызовом конкретного хендлера.
Потом хендлер который принимает request и должен вернуть response.
Всё простое как палка, реквест стучится в index.php, там руками конфигурируется приложение, руками же вызывается request из пехапешных глобальных переменных и руками же вызывается его обработка, потом точно так же руками вызывается рендер ответа.
Минимум магии.
Аноним 10/08/20 Пнд 19:04:12 17735121026
>>1772398

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

Обертка (middleware) может выглядеть так:

function middleware($input, $fn)
{
// меняем аргумент
$input = $input + 10;
// вызываем исходную функцию
$result = $fn($input);
// меняем результат
$result = $result - 10;
return $result;
}

При этом таких оберток можно добавить несколько. В веб-фреймворках middleware работает с запросом и ответом.

Например, middleware может делать:

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

Попробуй написать такое middleware: оно дописывает в конец страницы время ее генерации.
Аноним 10/08/20 Пнд 22:12:01 17736331027
>>1773420
>>1773512
Не хватает понимания как собрать все это в кучу.

объект реквест - создается в контейнере зависимостей?

респонс видимо создается в момент выполнения обработчика?

как вкорячить мидлвэйр не понимаю, я пока еще и не понял как их реализуют в пхп.

Тупо практический пример бы где все это в очень простом виде реализовано. Но это я дохуя хочу конечно.
Аноним 10/08/20 Пнд 22:14:15 17736391028
>>1773633
Батхертчу от того что мне нравится прогинг, все интересно. но я так дохуя не понимаю. И нихуя написать не могу по нормальному.
Пишут же люди фреймворки с красивым кодом, бладж.
Аноним 10/08/20 Пнд 23:10:47 17736671029
image.png 52Кб, 717x613
717x613
А что мне делать если я использую не весь Symfony, а только компоненты? Сервер выдает 404, наверное потому что я не могу подключить этот ваш annotations. Впрочем, я бы больше удивился если бы это работало, у меня всё таки кроме этого класса больше ничего и нету
Аноним 10/08/20 Пнд 23:24:58 17736771030
Впрочем, с routes.yaml ситуация не лучше. Наверное, надо предварительно что-то где-то прописать, чтобы пых знал что ему делать. Не полезет же он сам в routes.yaml, не вытянет оттуда информацию и не попетляет по маршруту. Куда я только ввязался, ньюфажек...
Аноним 10/08/20 Пнд 23:31:33 17736801031
Вроде что-то понял. Я, дурень, не ту документацию читаю. Надо ж по компонентам. Я думал отличия нету, но похоже что есть
Аноним 10/08/20 Пнд 23:39:21 17736831032
>>1773633

> объект реквест - создается в контейнере зависимостей?

Его создает Слим, вот что написано в доке: http://www.slimframework.com/docs/v4/objects/request.html

> Your Slim app’s routes and middleware are given a PSR-7 request object that represents the current HTTP request received by your web server.

Насчет Response есть 2 подхода - когда его создает фреймворк и когда его должен создать сам обработчик и вернуть. Здесь объект создает фреймворк, а обработчику требуется только его заполнить и вернуть.

По middleware здесь есть пример с кодом: http://www.slimframework.com/docs/v4/concepts/middleware.html#closure-middleware-example

Оно добавляется методом $app->add().
Аноним 10/08/20 Пнд 23:44:56 17736841033
>>1773680

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

Тут вроде это описано: https://symfony.com/doc/3.4/components/routing.html

Аноним 11/08/20 Втр 12:43:01 17739301034
image.png 143Кб, 1360x768
1360x768
image.png 44Кб, 656x393
656x393
>>1773684
Спасибо. Наткнулся на ютубе на вариант исполнения с 1 пика. Это распространенная практика что-то самому в реквест пробрасывать? Вообще, мне этот вариант совсем не нравится, я бы сделал что-то по типу 2 пика, и не нужно подключать слишком много сторонних тяжеловесных библиотек. Что я теряю?
Аноним 11/08/20 Втр 14:58:56 17742451035
1.jpg 62Кб, 270x270
270x270
на собеседовании дали вопросы. Как бы вы ответили?
> Вопрос №1 Достоверно известно, что некоторый API периодически отваливается по таймауту или с 5хх ошибкой. Аналогов нет, заменить данный сервис нечем. Использование этого API критически важно для асинхронных задач внутри приложения. Что будем делать? Какие библиотеки и паттерны будем использовать чтобы минимизировать потери и повысить стабильность приложения?

>Вопрос №2 В ответ на входящий вебхук приложение должно сделать несколько запросов в БД, пару запросов к стороннему API, вернуть 200OK в ответ на вебхук вне зависимости от результатов вышеперечисленных запросов. Сервис, дергающий вебхук, требует чтобы ответ пришел в течение трех секунд. Что будем делать?
Аноним 11/08/20 Втр 18:46:56 17745631036
image.png 133Кб, 1360x768
1360x768
>>1773930
Хм... Оказывается можно не придумывать велосипед и вообще почти ничего не делать: насоздавать пустых классов, в их конструкторы впихнуть другие пустые классы, и всё будет абсолютно так же работать. Вот это настоящая магия, прямо какой-то конструктор сайтов wix.com. Теперь понятно почему сеньйорам на пыхе платят как кассирам в пятерочке.
Аноним 11/08/20 Втр 19:30:19 17745851037
>>1774245
Отвечай что этим жадным хуеплетам нужно выбрать язык, подходящий под их задачи. А со своим reactphp пусть сами ебутся.
Аноним 12/08/20 Срд 08:09:03 17748811038
>>1774245
Собес на джуна надеюсь?
Аноним 12/08/20 Срд 08:37:24 17748841039
>>1774881
Собеседование на Джуна фронтэнд
Аноним 12/08/20 Срд 09:46:10 17748931040
>>1774884
Со стороны кажется что в этом вашем фронтреде уже потолочек не слабый.
Или это тиривиальные задачи?
Аноним 12/08/20 Срд 09:46:37 17748941041
>>1774893
>>потолочек
Порог входы имел ввиду
Аноним 12/08/20 Срд 14:18:18 17750921042
Чего ждать от работодателя после отклика на hh?
Аноним 12/08/20 Срд 14:27:03 17751051043
>>1775092
В жопу ебать станет.
Аноним 12/08/20 Срд 16:02:17 17751961044
анон, поясни мне по хардкору за restful api. сейчас прислали делать тестовое на ларке/симфони/йии2 где надо вот реализовать полностью эту парашу (регистрация/авторизация + CRUD методы для пары хуевин). как я понял в контексте ларки это гонять все не через обычный routes/web.php а через routes/api.php и при этом из контроллеров возвращать просто json формат. но вот встал такой вопрос: как все это толком настраивать дебажить и тп? толку оттого что мне вернется json хуйня а не конкретный view.blade.php с переменной где я ее могу распарсить как то ? через постман чтоли такое все слать или на фронте гонять все это через реакт/вуе и слать/брать в апи контроллеров? хотя такой вариант маловероятен, вакансия то бэкенд разраб, про фронт и жс слов не было ни в вакансии, ни на собесе
Аноним 12/08/20 Срд 16:27:48 17752291045
>>1775196
А тесты тебе на что?
Аноним 12/08/20 Срд 16:33:01 17752341046
>>1775229
окей, тесты я сделаю, но только тогда вопрос: как мне делать нормальное то юзер френдли приложение?типо эти галерщики будут проверять мой код через тесты, а не то что захотят сами зайти куда то мышкой покликать и тд?
Аноним 12/08/20 Срд 16:42:12 17752381047
>>1775234
Куда блядь мышкой кликать в апи?
Аноним 12/08/20 Срд 17:35:26 17753041048
>>1775238
понял. анон, можешь накидать каких нибудь гайдов/статей по данной тематике? а то видимо все еще не до конца въезжаю в тему
Аноним 12/08/20 Срд 17:54:50 17753341049
Аноним 12/08/20 Срд 18:51:44 17754101050
>>1775196
Примерно тоже самое делаю, но для себя. Сервис на ноде стучится в лару по апи, и все такое. По самому обмену данными все нормально. Туда сюда json гоняю. В ларавел удобно апи стороить с помощью ресурс контроллера.
Только вот я завтыкал с апи-аутентификацией. Которая встроена. Там как прмиер дается работа с мидлвэйром auth:api
И я никак не могу найти класс/мидлвэйр и т.д. который отвечает за его работу.
Ты как реализуешь аутентификацию?
Аноним 12/08/20 Срд 18:52:29 17754121051
>>1775410
п.с.

приложуха на ларе - сорт оф магазин. Нода может получать данные, и их изменять.
Аноним 12/08/20 Срд 19:43:03 17754431052
>>1775334
спасибо анон
>>1775410
пока что никак. там половина тз это веб, а половина - апи. и это я понял неожиданно только когда прошла половина срока. у меня пока ничего не написано, ничего не реализовано, и дальше чет хз в како направлении двигаться. хоть ты, анон, накидай чтоли может какие материалы курил для этого, или примеры кода чтоли
Аноним 12/08/20 Срд 20:17:24 17754641053
>>1775443
Контроллеры ресурсов погляди:
https://laravel.su/docs/6.x/controllers
api постротить позволяют очень легко.
А вообще если вообще ларавел не знаешь то жестко будет, роуты, контроллеры, eloquent. ТАм есть об что поебаться.
Я ларакаст смотрел, и доки читал, месяц-полтора. И по итогу не могу понять где гвард аутентификации блядь пасется.


Аноним 12/08/20 Срд 20:29:53 17754701054
>>1775464
да проблема то как раз в том что раньше обычно и делал все через ресурсные контроллеры и гонял их через web.php. сейчас только надо как то продумать и реализовать чтобы не возвращалась хуйня не return view('cocks')->with('cocks', $dicks) где я уже вывожу это в blade, а просто Response. конкретно вот интересует типо как мне это отлавливать и дебажить и как слать запрос. раньше я мог зайти по роуту articles/228/edit и знал что в контроллер мне прилетит данные по определенному article и я их тупо бля видел. как я понял в апи в апи надо только методы delete, update, store реализовывать
хуй знает че делать
Аноним 12/08/20 Срд 21:02:47 17754901055
>>1775470
В сущности почти так же все делается.
Только клиент отправляет json в там где body есть.

А сервер отвечает жсоном в контроллере по роуту
типа:

$allProducts = Product::all();
return response($allProducts); //ларавел сам конвертирует коллекции в json автоматом

Что бы видеть, если я правильно тебя понял, что падает на апи роут и что допустим модель возвращает - я дебажу через фасад Log в лог.

Аноним 12/08/20 Срд 21:56:59 17755281056
>>1775490
>если я правильно тебя понял
да все верно. как я понял еще можно постманом пробовать или же через test restful api service в шторме
алсо, нашел такую статью на русском https://laravel.demiart. сру/create-rest-api-with-authentication/
насколько тут код устаревший и тп ? сейчас стоит 7.24
Аноним 12/08/20 Срд 21:59:41 17755321057
>>1775528
блять, еббаный абу, мискликнул отправку.
так вот по поводу устаревшего кода хочу добавить что у меня твой вариант ответа и вариант ответа в стиле return response()->json($allProducts, 200); абсолютно идентичны в плане вывода
Аноним 15/08/20 Суб 20:54:48 17783521058
>>1775532
Знаешь анон, я начал ковыряться в исходниках аутентификации Ларавел, так как я нихуя не понимал как оно работает. Пару дней страданий, и я похоже почувствовал дзен всей этой структуры с интерфейсами, тайпхинтами возвращаемых экземпляров и все остальное ООП которое тас есть.

Это правда прозрачно и пиздато, нужно только погрузиться глубже.
Но по началу ад какой то - нихуя не понять что, куда, откуда, хуева туча папок в исходниках. Короче стало очень интересно читать код.
Аноним 16/08/20 Вск 00:02:42 17784771059
>>1778352
и ты три дня на это въебал? сейчас вот разобрался как раз с обычной частью, завтра накидаю политик поверх того что сделал и буду ковыряться в апи =/
Аноним 16/08/20 Вск 08:05:00 17785701060
>>1778477
Я в этом нуб просто, это считай первый опыт ковыряния во фреймворке и в ООП вообще.
Ну три не прям три по 8 часов в день конечно.Я проебывался знатно, и больше в стену смотрел.
Но вообще концентрации и усилий потребовало. На бумажку выписывал что чего по очереди вызывает.
Сейчас своего кастомного гварда пишу, ну и соответтсвенно кастомного ЮзерПровайдера, чисто для теста. Когда поймешь - все так просто оказывается.

Аноним 17/08/20 Пнд 11:42:05 17793311061
что значит много стрелочек и методов в одной строчке?
Аноним 17/08/20 Пнд 12:50:47 17793701062
>>1779331
обращение ко многим методам =)
Аноним 17/08/20 Пнд 13:10:42 17793891063
валидатор надо вынести в отдельный файл и подключить к файлу регистрации и входа на сайт?
Аноним 17/08/20 Пнд 14:41:31 17794731064
Аноним 17/08/20 Пнд 15:13:05 17795101065
>>1779331
Каждый из методов возвращает $this, то есть объект из которого первоначально была вызвана цепочка.
Аноним 17/08/20 Пнд 15:14:22 17795131066
>>1779510
Можно и другой объект возвращать, из того как он описал как это выглядит и то и то может быть. Ну главное там объект.
Аноним 17/08/20 Пнд 17:03:58 17796381067
>>1779331
Ну одна стрелочка что-то возвращает. Из результата можно вернуть ещё что-то, если оно там есть.
Ну типа a->b->c->d - это на самом деле
foo = a->b
foo = foo->c
foo = foo->d
Аноним 17/08/20 Пнд 18:03:53 17797011068
Собираюсь делать файловый хостинг на компонентах Symfony. Уже более-менее разобрался с http-kernel, httpd-foundation, dependency-injection, routing, twig. Что еще подтянуть можно? Цель - поверхностно пощупать symfony, чтобы иметь о нем какое-то представление, так как после этой задачи буду углубляться в ларавель. Наверное, стоит взять доктрину и symfony forms? Алсо, почитал доки Symfony Filesystem, подскажите пожалуйста в чем его смысл. Я увидел лишь копирование уже существующих, встроенных в пхп методов, под теми же названиями.
Аноним 17/08/20 Пнд 18:34:41 17797281069
>>1779701
Если ты просто хранишь файлы на диске, то да это просто обертка над существующими методами.
Но как только ты решишь перенести свои картиночки на CDN или в AWS S3, то тебе придется переписать весь код сохранения. А в Symfony Filesystem есть готовая абстракция, и работа с файлами происходит всегда одинаково, вне зависимости от того где фалы хранятся.
Почитай вступление тут https://symfonycasts.com/screencast/symfony-uploads/flysystem
Аноним 17/08/20 Пнд 22:22:00 17799191070
>>1779728
CDN-то при чём? В случае с ним ссылки на файлы попросту оборачиваются ссылки в домен cdn'а ну и далее он сам всё проксирует.
Было: gay.com/anal/123.jpg
Стало: gaycom.cdn.com/anal/123.jpg
Аноним 18/08/20 Втр 20:15:49 17808101071
>>1778352
и как же прочувствовал? сейчас делаю простую регистрацию типо Route::post('/register', 'Auth\RegisterController@register');
в сам контроллер помещаю https://ideone.com/iu8H82
в итоге ловлю блять Argument 1 passed to App\\Http\\Controllers\\Auth\\RegisterController::registered()
гугол говорит типо юзай use Illuminate\Http\Request; дай и сама ошибка так же говорит
но блять он трейте же и так юзается, хуле ему не нравится? нахуй заново то подключать? ваще пиздец
Аноним 18/08/20 Втр 22:12:54 17809281072
>>1779728
Спасибо за ответ, подтягивать не буду тогда. Symfony Forms тоже похоже что подтягивать не буду - с валидатором поиграться не выйдет особо, аякс не очень понятно как к этому делу прикузьмичивать, так еще и оказалось что компонент Translation к нему обязательный при использовании Twig.
Аноним 18/08/20 Втр 22:31:49 17809531073
>>1780928

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

Вообще, тут ничего сложного нет. Тебе в аяксе надо:

- проставить в форму присланные значения
- вернуть список ошибок

Первое делается так:

$form->submit($data); где $data - массив значений

Можно проставлять значения отдельных полей хоть руками: $form->get('name')->submit('Ivan');

Второе делается обходом дерева формы и сбором ошибок через $form->getErrors(). Ошибки преобразуешь в нужный формат и отдаешь. Учти, что ошибки могут быть как в самой форме, так и в каком-то из ее элементов, потому надо обходить все дерево со всеми детьми.

https://github.com/deadj/uppu Аноним 19/08/20 Срд 01:07:19 17810621074
>>1757803

composer.lock принято коммитить, чтобы у всех разработчиков были одинаковые, проверенные версии зависимостей. В БД стоит прописать внешние ключи для связей между таблицами (для полей comments.parentId, comments.fileId).Немного странно, что comments.fileId имеет тип VARCHAR, а не INT (не ссылается на id файла). Обычно в таких случаях ставят ссылку именно на id, так как он меньше и он является первичным ключом таблицы.

> parse_ini_file('init.ini');

Лучше использовать тут __DIR__, иначе файл ищется в текущей директории процесса PHP (а не рядом с dbConfig.php), и кто знает, чему она может быть равна.

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

> $this->filesTable = new FilesTable($db);

Класс FilesTable стоило сделать сервисом, то есть засунуть в контейнер Слима, и получать из него. А то в коде часть классов в контейнере, а часть нет. Как-то нелогично. GearmanClient тоже в контейнер стоило засунуть.

> return $this->view->render($response, '404.html');

При отдаче страницы 404 надо отдавать еще код HTTP статуса 404, чтобы роботы тоже понимали, что такой страницы нет.

> $dataForView = array(
> 'filesData' => array(
> 'nameId' => $file->getNameId(),
> 'name' => $file->getName(),
> 'link' => $file->getLink(),

Тут проще передавать во view объект $file и в шаблоне уже вызывать его методы.

Одинаковые части в шаблонах (например, шапка) стоит реализовать с помощью наследования от базового шаблона (еще его называют layout). В Twig есть такая возможность.

> <img id="imgFile" src="/{{ filesData.link }}" width="350">
Тут лучше использовать max-width, а то маленькие картинки будут увеличены. Ну и по-хорошему, стоит генерировать уменьшенные превьюшки для экономии трафика.

> <ul class="dataNames">
> <ul class="dataValues">
Тут не логичнее ли было применить тег table и сверстать как таблицу?

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

> $uploadIsDone = "null";
Это стоило сделать константой вроде File::STATUS_DONE. Типы файлов тоже сделать константами.

> $nameId = preg_replace('~files\\/\\d{2}_\\d{2}_\\d{2}\\/~ui',"", $link);
> $nameId = preg_replace('/[.]\\S*/', "", $nameId);
Эти преобразования путей стоило вынести в функцию, а не размазывать по коду. Есть же функция createFilesLink, можно сделать и обратную.

> private function convertArrayIdToString
Тут не проще было использовать встроенную функцию implode() вместо цикла?

> public function getFilesArrayThroughId(string $stringId): array
Тут было бы правильнее передавать массив id и уже внутри FilesTable конвертировать его в строку. Это ответственность TableDataGateway, знать синтаксис SQL и формировать список, а не отвественность внешнего кода.

Получать id вставленного файла стоит через lastInsertId, он вернет верный id, даже если в это время второй процесс успел добавить еще один файл в таблицу. А твой код - не защищен от этой ошибки. Либо, как вариант, генерировать уникальный id самому до вставки в БД.

Так в общем, для начинающего неплохо сделано.
Аноним 19/08/20 Срд 01:33:11 17810821075
image.png 27Кб, 684x183
684x183
>>1780953
Спасибо что подсказал, в принципе тогда не все так ужасно. Разбираюсь пока-что. Не понравились мне пикрил многоходовки для вычисления папки с темами для форм, добавил в композер скрипт, который копирует эту папку в нормальную директорию с шаблонами. Для файлов твиттер бутстрапа тоже такое сделал. Нормальная практика? Не особо хочется важные файлы, к которым я прямо обращаюсь, в закоулках vendor держать. Наверное, эти папки еще нужно прописать в .gitignore?

И еще вопросик:
Можно ли как-то прямо в yaml-файле DI-контейнера Symfony создавать сервисы не через конструкторы, а с помощью статических методов? А то приходится разделять создание сервисов на две части, не очень красиво получается.
Аноним 19/08/20 Срд 02:51:55 17811131076
>>1774245
Только не говори, что в Т. собеседуешься, лол
1. circuit breaker, сейчас обычно делается через сайдкар в кубернетесе (так что даже и язык уже не важен, инфраструктура порешает)
2. сохраняешь данные вебхука в базу в виде таска, потом отдаешь ответ, а таск уже можно процессить когда угодно, хоть по крону
Аноним 19/08/20 Срд 03:19:34 17811261077
Сейчас буду пояснять вам за пехапе. Сам писал на нём пять лет (правда, несколько лет назад окончательно слез) и думаю, что перспективы у языка сомнительные:
1 - он всё ещё жестко привязан к принципу "умирать каждый раз" и не поддерживает нормальную многозадачность. Из-за этого нормальная работа с сокетами, кафками, grpc и прочей нужной в современном вебе хуйнёй обрастает костылями. Например, пехапешные воркеры вообще могут забиться (потому что каждый воркер за раз обрабатывает только 1 запрос в синхронном режиме, если у тебя 20 воркеров, то 20 тяжелых входящих запросов нахрен положат тебе всю систему. Оно решается, но в других стеках такой проблемы вообще нет). Поэтому конкурировать с go и nodejs пехапе не может, а если и запилят какую-то многопоточность (а это пипец как нетривиально), то нужно будет полностью написать всю экосистему под это, все библиотеки и так далее. В то же время и го (и так уже компилируемый) не стоит на месте, и v8 тоже уже набит оптимизациями.
Короче, нишу перфоманса ему не взять, но он и не пытается.

2 - он пытается стать "джавой" со всеми этими дженериками и прочей фигней, но так как джава уже есть, то он никогда её не заменит. В JVM вложены сотни и тысячи человеколет, есть scala, котлин и closure, не говоря уже про akka и прочие либы. Слишком несоразмерны усилия. Но при этом пехапе тащит в себя избыточную сложность. Пройдёт ещё несколько лет - и джуниоры (которые судя по соседним постам класс от интерфейса отличить не могут, лол) вообще умирать будут на входе. Короче, нишу сложной и богатой системы типов/экосистемы для написания бизнес-логики пехапе не взять, не угнаться.

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

4 - есть ещё ниша "языка для вката", типа, легко выучить и сразу начинать хуячить, но тут и по популярности, и по экосистеме js победил, имхо, потому что сразу на том же языке можно и кнопочки сделать, и на беке json'чик в монгу сохранить. Да и сам js, при своей неебической мерзости, крайне прост и в чём-то даже проще пехапе (классов нет, всё есть объект и тп).

Я не говорю, что пехапе завтра же умрёт, это не так. Даже на делфи делаются проекты, даже код на коболе ещё поддерживается. А в пехапе есть и "разработчики" и заказчики, значит, система самоподдерживающаяся. да и CMSки есть только на нём, тоже вполне себе живая ниша. Опять же, из-за низких рейтов часто именно на пехапе из говна и палок собирают какой-нибудь новый продукт (привет, Ситимобил), который потом взлетает и резко даёт работу куче программистов, пока его не перепишут на что-то более удачное.

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



Аноним 19/08/20 Срд 03:23:57 17811281078
>>1781126
С какими лычками слез и на какой язык?
Аноним 19/08/20 Срд 11:01:35 17812871079
>>1781126
какие альтернативы?
Аноним 19/08/20 Срд 13:37:16 17815401080
>>1780810
>>и как же прочувствовал?
Подрочился, как стандартная АПИ аутентификация работает я понял.

Решил траблу с реквестом?
Аноним 19/08/20 Срд 13:49:33 17815681081
>>1781126
Читал на хабре мнение что переезд на новую виртуальную машину для похопе неизбежен. . Если осилят - пхп похоронит все остальное. Потому что комьюнити огромное, и язык развивается очень интенсивно, JIT вот запилили. На сколько реально это - я не компетентен ответить.

>>Пройдёт ещё несколько лет - и джуниоры (которые судя по соседним постам класс от интерфейса отличить не могут, лол) вообще умирать будут на входе.
Как вкатывальщик де факто я программист-коекакер в гос. шараге скажу что ты наверное прав, если серьезно подходить к вопросу - то все становится бурно и сложно. Порог входа в нормальную разработку на фреймворках вырос конкретно.
С другой стороры подрочить ОПП получается очень интересно и приятно. Ну и опыт смежный, кто бы знал 10 лет назад что пхп программист будет сидеть и ковыряться в ОПП паттернах, что бы не писать как днище ебаное. Потому что есть пример в фреймворках.



Аноним 19/08/20 Срд 14:58:50 17816841082
>>1781126
Разве что-то лучше придумали? На go, питоне, c# для бекенда работы нету. Для ноды есть, но это для здоровья вредно, лучше уже на шахте ебашить.
Аноним 19/08/20 Срд 15:05:21 17816901083
15651643036830.png 191Кб, 500x500
500x500
>>1781684
> c# для бекенда работы нету
Аноним 19/08/20 Срд 15:14:44 17817101084
>>1781128
Я дорос на пехапе до сеньора/лида, параллельно начал программировать на го (на том же рабочем месте), потом перешёл в другую контору и фуллтайм пишу на го. Язык не идеальный (идеальных впрочем нет), но мне нравится. Кстати, есть мнение, что го - это такой будущий php. Очень простой (хотя в чём-то и сложнее), при этом намного более производительный и строго типизированный.
Ещё пишу на тайпскрипте, но скорее по необходимости, чем ради удовольствия.
Сейчас выбираю между скалой или хаскелем, просто ради интереса.

>>1781287
Я уже обрисовал ниши, дальше тебе надо выбирать самому.
Быстрый вкат, CMS-ки и фриланс - это php
Фронтенд, фуллстек, какие-то нагрузки, месседжинг и стартапы - это nodejs
Производительность и микросервисы, корпоративщина - те же nodejs и го, отчасти java-мир
Сложные корпоративные приложения, крупные интернет-магазины - в большей степени java (ну или c#, один хрен на самом деле)

>>1781568
> Если осилят - пхп похоронит все остальное
Как я писал выше, это сомнительно, потому что за той же JVM угнаться нереально, в неё вложены сотни, если не тысячи человеко-лет. Опять же, экосистема джавы намного более совершенная, просто за счёт в разы большего числа программистов и огромного количества денег в ней. От стандартов, дебаггеров, сборщиков мусора и пакетных менеджеров до DI-контейнеров, ORMок и так далее.
Та же IDE в работе над php и над джавой - небо и земля. В джаве ты почти не пишешь кода, практически всё автокомплитится, типы выводятся и так далее. В php же просто переименовать какую-нибудь переменную или класс или поле класса сразу и везде ты не сможешь, потому что ключи динамических массивов, отсутствие типов или хотя бы аннотаций и тп оставит где-нибудь незатронутый код.
PHP рано или поздно может переехать на новую машину, с зелёными потоками и прочими модными штуками, это сделает его лучше, но не даст ему киллер фич или какого-то преимущества над другими языками. Просто будет ещё один (более)хороший язык.

При этом смотрите, я не говорю, что у php совсем нет перспектив, они есть, язык развивается, в экосистеме есть много качественных решений (симфони). Он точно не умрёт в ближайшие 10 лет, он точно будет использоваться везде, от дна до стартапов (в меньшей степени) и корпораций. Я говорю о том, что он не будет в тренде, у него не будет киллер фич и поэтому всегда будет на втором месте, в любой нише. А второе место - значит (чуть) более низкие зарплаты и всё прочее.
Но при этом он всё ещё лучше руби, на котором уже похоже почти никто не пишет, а криков-то было

> С другой стороры подрочить ОПП получается очень интересно и приятно.
Удивлю, но ООП, во-первых, базовая вещь (не знать ООП в современной разработке - очень странно), во-вторых в той или иной форме есть вообще везде (именно поэтому и странно).
Ещё ООПшность - это просто частный случай такой вещи, как система типов, то есть способов описать бизнес-логику на уровне кодовых объектов и их связей. Ещё туда же летят дженерики, аннотации, паттерн-матчинг и прочее метопрограммирование, которого в джаве и её производных написано уже очень много и давно, а в php оно только-только приходит.
про го вспоминать не будем, лол
Аноним 19/08/20 Срд 15:15:40 17817121085
>>1781684
Пишу на го, поменял несколько мест работы. Есть много знакомых, работают тоже на го. Зарплаты 200+ почти у всех, 300+ у некоторых. ЧЯДНТ?
Аноним 19/08/20 Срд 15:17:16 17817171086
>>1781712
Джунов не набираете?
Аноним 19/08/20 Срд 15:21:21 17817241087
>>1781717
Мы нет, но вообще на го довольно много джуновских вакансий, я периодически их замечаю. Смотри в гошном слаке, в гошных каналах в телеге и так далее, часто пишут.
Аноним 19/08/20 Срд 15:30:08 17817361088
>>1781126
>он всё ещё жестко привязан к принципу "умирать каждый раз"
Это плохо, да, хотя есть попытки решить это. Сообщество вообще очень давно фич для этого хочет, гораздо больше, чем сраные атрибуты. Кор разрабы с этим категорчиески не согласны, и это один из самых печальных моментов, который возможно пыху в гроб таки загонит. Второй по печальности - желание не сломать даже самую поганую фичу в обратной совместимости. Из-за этого в восьмерке будут не атрибуты, а блядский цирк по синтаксису, и все это ради ракового оператора подавления ошибок, пиздец карл.

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

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

Надеюсь пхп таки возьмет правильный курс, или вернее более правильный. Решит самые важные проблемы, а не второстепенные, как сейчас. Сейчас работаю не на нем (только в пете у себя пхп использую), но за язык болею, хоть это и не популярно.
Аноним 19/08/20 Срд 15:30:29 17817381089
>>1781724
Насколько вообще тяжело с пыхи на го переползти? Вроде часто встречаются вакансии где ищут пхпшников чтоб впарить им го
Аноним 19/08/20 Срд 15:30:49 17817401090
>>1781710
У меня просто есть теория, что пхп макака может сменить язык только на фронт жабаскрипт. И в последние годы от безысходности придумали себе выход в виде го.
Пхп программист с приличной зарплатой НИКОГДА не пересядет на джаву или c#. Ему просто будут в ебало плевать.
Аноним 19/08/20 Срд 15:33:56 17817441091
>>1781740
Это какая-то неадекватность, присущая скорее двачу.
Аноним 19/08/20 Срд 15:39:05 17817541092
>>1781744
Докажи обратное. Я вижу только пересевших на го или js. Пост выше это только подтвердил.
У нас в конторе есть c# программисты от них по отношению к пишущим на пхп в лучшем случае презрение и подъебки.
На предыдущей работе был парень, который пытался вкатиться джуном в джаву. Любое упоминание пхп сразу минус вакансия.
Аноним 19/08/20 Срд 15:44:14 17817661093
>>1781754
Ну я работал на шарпобеке и совмещая с пхп и после него.
Очень хуевый у вас коллектив значит.
Аноним 19/08/20 Срд 15:48:09 17817751094
>>1781710
>>Удивлю, но ООП, во-первых, базовая вещь (не знать ООП в современной разработке - очень странно)

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

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



Аноним 19/08/20 Срд 15:49:03 17817791095
>>1781766
Не путай подработку и программистов, которые кроме пхп больше никогда ни на чем не писали.
К тебе было отношение как к "своему" c# братюне, но со страностями.
Аноним 19/08/20 Срд 15:51:36 17817811096
>>1781754
>к пишущим на пхп в лучшем случае презрение и подъебки.
Пиздец конченые какие то.
Интересно, меня бы подьебывали?

мимо-габбаритный-тай-боксер
Аноним 19/08/20 Срд 15:53:08 17817861097
>>1781781
Подъебки то это норма, не злобно разрабы часто друг друга подъебывают на работе, хоть на чем пиши.
А вот презрение это шиза уже какая-то.
Аноним 19/08/20 Срд 15:53:37 17817881098
>>1781781
Тебя бы просто не взяли c# джуном если упомянул бы что несколько лет работал на пхп.
Аноним 19/08/20 Срд 16:01:42 17818011099
>>1781736
Как я писал в своём исходном посте, повышая порог входа, php дальше уходит от той ниши, где он доминирует - простые формочки для индусов и CMSки. Не просто так равных вордпрессу по популярности CMSок нет ни в одном другом языке - в пехапе намного проще зайти и нахерачить костылей внутри, чем в других языках.
Поэтому так php может потерять большую базу старых пользователей (да, индусов, но какие есть), но не приобрести много новых. Ну или расколоть сообщество на две версии, как питон.

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

>>1781740
Да кто хочет на что хочет может поменять стек, всем наплевать, на самом деле. Люди смотрят на то, что ты знаешь и умеешь в первую очередь.
Подъебки - норм тема, но всерьез никто никого не хейтит в нормальных местах.
Хейтят за стек только на двачах, но тут и контингент соответствующий, неудивительно.
Аноним 19/08/20 Срд 16:08:12 17818101100
>>1781801
>и рядом нюансов
Где про них почитать можно, чтоб не скакать по граблям лишний раз?
Аноним 19/08/20 Срд 16:08:13 17818111101
>>1781801
>Да кто хочет на что хочет может поменять стек, всем наплевать, на самом деле. Люди смотрят на то, что ты знаешь и умеешь в первую очередь.
Ну это полная хуйня. Что ты можешь знать про джаву если не работал ни в одном крупном проекте? Ты максимум можешь рассчитывать на позицию джуна. Если ты несколько лет писал на пхп, допустим с успешной карьерой, то это просадка по зп минимум в два раза. 90% отсеются уже здесь, мало кто может себе позволить начать все с нуля.

Про то что всем похуй это хуйня в двойне. Ты и на пхп вакансию хуй устроишься, а тут еще и предвзятое мнение. В лицо тебе будут улыбаться и говорить вы охуенный, просто не пошло, а на деле будут над тобой рофлить , потому что ты по определению программист второго сорта.
Аноним 19/08/20 Срд 16:09:18 17818141102
>>1781801
>Ну или расколоть сообщество на две версии, как питон
Оно в общем и так расколото. Вп это пиздец устаревшая и специфическая ниша, как и многое ему подобное, таким и останется уже навсегда, со своим комьюнити и всем таким. Современный пхп - это уже другой язык, подход и уровень, чем тот, что был хотя бы 10 лет назад. Вот его то и надо развивать, с вп и прочим ничего из-за этого не случится, есть те, кто его апает под новые версии пыхи, осилят. Ну а у кого не получится изза плагинов или еще чего-то - будут жить на старых версиях просто, как и сейчас.
Аноним 19/08/20 Срд 16:11:18 17818171103
>>1781811
А у тебя то какой опыт?
Аноним 19/08/20 Срд 16:15:04 17818291104
>>1781817
Я много лет пишу на пхп, и общался с программистами на разных языках. И все "уходы" с пхп, которые я за эти годы видел были либо во фронтенд, либо на го.
Я сейчас, спустя много лет отлично понимаю, что начинать нужно было не с пхп. И для меня смена языка это либо пет проект, либо сильная просадка по зп, и как следствие качеству жизни, на хуй знает сколько лет.
Аноним 19/08/20 Срд 16:53:12 17818801105
>Я уже обрисовал ниши, дальше тебе надо выбирать самому.
у пхп глобально на малых и средних масштабах в вебе конкурентов нет
Аноним 19/08/20 Срд 17:13:47 17819041106
>>1781810
Go tour пройди, и пару пет проектов запили, нормально будет. Остальные нюансы сходу сложно вытащить из головы, на реальных задачах сами всплывут, сам нагуглишь или на работе подскажут уже.

>>1781811
Ну и ты хочешь поменять стек без просадки в зп, логично, что просто так тебя не возьмут, без реального опыта.
Перечитай моё сообщение, всем похуй на твой предыдущий опыт в том контексте, что никто тебя не будет унижать за то, что ты пехапешник.
А рецепта перехода всегда два, ты либо разбираешься со всем дома, потом уходишь с понижением до миддла либо джуна, либо меняешь стек на рабочем месте через переход на другой проект. Если что, всегда можно поменять работу на другую компанию (где пишут и на php, и на джаве) и перейти уже там.

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

>>1781775
> картинки через вебсокет
Я ни разу так не делал, но ты точно можешь посылать их в base64 а отрисовывать через канвас и `img.src = 'data:image/jpeg;base64,' + iimgdata.buffer;
Может можно и блобом посылать, но тут я сходу не скажу.
Аноним 19/08/20 Срд 17:16:19 17819101107
>>1781880
Только за счёт того, что эти малые и средние проекты делаются путём наката cms'ки и допиливания её до нужной логики всякими костылями и плагинами.
Сравни популярность wordpress с той же symfony.
Аноним 19/08/20 Срд 17:26:17 17819301108
>>1781904
>ты либо разбираешься со всем дома, потом уходишь с понижением до миддла либо джуна
Никто в здравом уме не возьмет самописца на миддла. И на джуна-то не везде возьмут.

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

С другими языками так не проканает. Возможно если тимлид команды на джаве твой кореш или вы хорошо знакомы и нормально в курилке общаетесь. Но просто взять и перейти сохранив зп и лычки, никогда. А просадка по зп, повторю, это в 90% случаев решающий фактор.
Аноним 19/08/20 Срд 17:37:55 17819441109
>>1781082

> Не понравились мне пикрил многоходовки для вычисления папки с темами для форм

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

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

> Можно ли как-то прямо в yaml-файле DI-контейнера Symfony создавать сервисы не через конструкторы, а с помощью статических методов?

Можно, https://symfony.com/doc/current/service_container/factories.html

Также, обрати внимание на autowiring, он позволяет минимизировать размер конфига.


Аноним 19/08/20 Срд 17:46:53 17819561110
>>1781126

> жестко привязан к принципу "умирать каждый раз"

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

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

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

> в других стеках такой проблемы вообще нет

Ну это просто неправда. В "других" стеках вообще все умрет при перегрузке, если там нет ограничений.

> Поэтому конкурировать с go и nodejs пехапе не может,

На ноде бизнес-логику писать неудобно из-за асинхронности, нет тайп-хинтов. На Го нет фреймворков вроде Симфони, все надо с нуля самому делать.
Аноним 19/08/20 Срд 17:49:46 17819631111
>>1781930
Ты рассказываешь мне какие-то истории одна охуительнее другой.
> Никто в здравом уме не возьмет самописца на миддла. И на джуна-то не везде возьмут.
Если ты сеньор в своём стеке (в том числе, по архитектуре, базам и прочему) и при этом тянешь на миддла в той же джаве - то тебя возьмут на джавомиддла спокойно, потому что путь с джуна до миддла у тебя будет очень короткий, буквально полгода реального опыта, ты быстро окупишься, это выгодно.
Я подозреваю, ты просто формошлёп и нихрена за пределами гайдов программирования на фреймворке не знаешь, потому тебе и дают от ворот поворот.

> Но просто взять и перейти сохранив зп и лычки, никогда. А просадка по зп, повторю, это в 90% случаев решающий фактор.
Я тебе сразу сказал, что или ты уходишь с просядкой с сеньора до миддла (ну будешь 100к вместо 200к зарабатывать или сколько там у тебя, это не смертельно и очень временно), или меняешь стек внутри своей же компании, с сохранением всего.
Более того, я специально для тебя сказал, что если у тебя в компании только php, то ты можешь поменять работу на другую компанию (можешь даже с повышением зп, лол), у которой есть и php, и java и уже там мигрировать.
Аноним 19/08/20 Срд 17:52:58 17819681112
>>1781710

Недостатки Го: нет классов, объектов (вместо них структуры), исключений. Нет дженериков (типизированных коллекций). Используются указатели, надо голову ломать, где через указатель передавать, а где нет, в то время как в PHP этого не нужно. Нет единых правил оформления кода, каждый пишет как хочет, раскладывает функции по файлам как хочет, хрен разберешься в большом проекте.
Аноним 19/08/20 Срд 17:58:54 17819781113
>>1781968
Ты щас какую-то сишку описал
Аноним 19/08/20 Срд 17:59:18 17819801114
>>1781963
>Если ты сеньор в своём стеке (в том числе, по архитектуре, базам и прочему) и при этом тянешь на миддла в той же джаве
И каким хуем ты стал тянуть на миддла в джаве если ты не работал в джава проектах?

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

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

>или меняешь стек внутри своей же компании, с сохранением всего.
А я тебе сказал что это полная хуйня. С го это работает, а с другими языками нет. Зачем ты обосрался вообще джава команде без опыта разработки? У них и своих долбоебов хватает. Через личные связи в руководстве это возможно, но это нихуя не типичный сценарий.
Аноним 19/08/20 Срд 18:00:28 17819821115
>>1781956
> Здесь есть огромные плюсы, что не надо бояться утечек памяти, которые встречаются в "неумирающих" языках.
Это плюс только для найма джунов или неквалифицированных разработчиков, то есть ниши условных "cmsок и индусов", про это я писал выше.

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

> Ну это просто неправда. В "других" стеках вообще все умрет при перегрузке, если там нет ограничений.
Нет, ты говоришь про другую проблему, про горизонтальное масштабирование и лимиты памяти/процессора/соединений. Это другое, потому что я писал о проблеме n+1 сетевого запроса, потому что в php количество воркеров == количеству обрабатываемых запросов, ни в одном другом стеке такого нет.

> На ноде бизнес-логику писать неудобно из-за асинхронности, нет тайп-хинтов. На Го нет фреймворков вроде Симфони, все надо с нуля самому делать.
Тайпхинтов там до жопы (просто typescript надо использовать). А на го принципы другие, симфони там и не нужен.

А вообще ты придираешься к каким-то частностям. Перечитай мой пост и осознай, что я говорю о том, что есть 3-4 ниши и из них php доминирует только в "мало-среднем" секторе, то есть это cms-ки, индусы и средней руки проекты невысокого качества и невысокой сложности.
При этом php пытается лезть в другие ниши, где он не сможет занять первое место, но при этом сам рискует получить проблемы там, где раньше доминировал.
Аноним 19/08/20 Срд 18:07:12 17819941116
>>1781980
> И каким хуем ты стал тянуть на миддла в джаве если ты не работал в джава проектах?
Опечатка, хотел сказать, на джуна. Сеньор PHP + джун java = миддл java.

> Проверь. Отвечу на твой вопрос. Могу небольшой сниппет написать, если нужно.
Ну просто ради интереса, отвечай не подглядывая:
Как устроен внутри пехапешный массив?
Есть ли в php передача аргументов по ссылке?
Есть ли в php сборка мусора, собирает ли она циклические ссылки?
В чём разница между active record и data mapper?
Где в DDD стоит разместить интерфейс репозитория, а где реализацию?
Какая разница между application layer и domain layer?
Что такое "модель" в MVC ?

> А я тебе сказал что это полная хуйня. С го это работает, а с другими языками нет. Зачем ты обосрался вообще джава команде без опыта разработки? У них и своих долбоебов хватает. Через личные связи в руководстве это возможно, но это нихуя не типичный сценарий.
Мне надоело с тобой спорить, ты ноешь над своей проблемой и обвиняешь всех вокруг (стек, команду, меня) кроме себя.
Примеров смены стека с php на любой другой множество, с любыми сценариями.
Так что или сиди ной молча или возьми яйца в кулак и поменяй что-нибудь, вместо того, чтобы сраться на двачах.
Аноним 19/08/20 Срд 18:11:45 17819981117
>>1781980
А, и ещё два тогда, забыл про базы и дизайн систем.
Как посчитаешь количество вызовов скрипта?
И, по sql, есть вот такая таблица:

CREATE TABLE test (
id INT NOT NULL PRIMARY KEY
);

INSERT INTO test (id) VALUES (1), (2), (6), (8), (9), (12);

Нужен запрос который выведет все пропуски. (ну типа 2-6, 9-12 и тп)
Аноним 19/08/20 Срд 18:30:27 17820191118
>>1781994
>Как устроен внутри пехапешный массив
Хеш таблица. И все "структуры данных" в SPL это те же хеш таблицы. Поэтому в пхп нет смысла изучать структуры данных, которые на первом месте в других языках.

>Есть ли в php передача аргументов по ссылке
Да есть

>Есть ли в php сборка мусора, собирает ли она циклические ссылки
Да есть, да собирает

>В чём разница между active record и data mapper
Active record объект это прямое представление реляционной модели. А data mapper это сервис который преобразует объектную модель в реляционную.

>Где в DDD стоит разместить интерфейс репозитория, а где реализацию
Интерфейс репозитория должен лежать в том слое, который его использует. Лично я держу интерфейсы репозиториев в application слое, а реализации в infrastructure. Домен про репозитории ничего не знает.

>Какая разница между application layer и domain layer
Ну тут много писать. Если в кратце, то домен это модель бизнес процесса, а application это то как мы бизнес процессы используем, комбинируем, куда сохраняем данные и как определяем границы транзакций.

>Что такое "модель" в MVC ?
Невнятная хуита. В исходном значении это observer паттерн, и модель является частью этого паттерна. А в широко распространенном "хранилище бизнес логики", короче все что не уместилось в контроллер и html шаблон.
Аноним 19/08/20 Срд 18:45:22 17820471119
>>1781994
В дополнение к >>1782019

>Сеньор PHP + джун java = миддл java
Охуенная математика. Жаль в реальности есть собес, на котором тебя просто срежут нахуй специфичным только для джавы вопросом.

>Примеров смены стека с php на любой другой множество, с любыми сценариями.
Пруфы, билли. Где эти тысячи сменивших стек.

>Так что или сиди ной молча или возьми яйца в кулак и поменяй что-нибудь, вместо того, чтобы сраться на двачах.
С чего ты взял что я ною. Просто ты несешь откровенную хуйню. Да, можно перетерпеть низкую зп, если ты конечно не долбоеб с ипотекой и личинусом. Да, можно начать все с нуля. В теории. А на практике это дохуя заебов с мутными перспективами.
И не просто так пхп программисты вцепились в этот го. Через го спрыгнуть гораздо проще, я уже писал как это происходит. И ты сто проц спрыгнул так же. Уверен у тебя лежит та книжка до сих пор и фигурка хомяка.
Аноним 19/08/20 Срд 18:52:25 17820611120
image.png 3Кб, 186x70
186x70
image.png 3Кб, 222x70
222x70
image.png 3Кб, 186x59
186x59
>>1781712
В Украине кроме пыхи и JSа языков программирования не существует, к сожалению.
Аноним 19/08/20 Срд 18:54:14 17820631121
>>1782061
Жавы на всяких галерах не?
Аноним 19/08/20 Срд 18:55:45 17820641122
>>1782063
Жавы достаточно, но зачем?
Аноним 19/08/20 Срд 19:15:26 17820781123
изображение.png 5Кб, 544x56
544x56
изображение.png 5Кб, 471x81
471x81
изображение.png 5Кб, 513x63
513x63
изображение.png 5Кб, 563x61
563x61
>>1782061
Ты на доу смотри, там чутка веселее дела обстоят, однако процентов 80 вакансий дислоцированы в крупных городах, а на облцентры буквально 3-4 вакансии.

Аноним 19/08/20 Срд 20:13:12 17821131124
>>1782078
Хм, хороший сайтец, спасибо что подсказал. На go, конечно, всё равно две вакансии в моем городке. Айти-столица, хуль.
Аноним 19/08/20 Срд 22:06:49 17821781125
Как по-быстрому вникнуть в php? Один сервис на пыхе у нас че-то стал иногда падать, придется разрулить, что там как
мимохер на ноде
Аноним 20/08/20 Чтв 14:12:40 17827511126
>>1782178
Хер на ноде, у меня вопрос по вэбсокетам, как на клиенте получить доступ к конктретно бинарному фрейму который отправляет сервер?
Я валандаюсь с предачей картинок бинарником через сокет, они соответственно в нескольких фреймах идут, их нужно собрать в конечную 'base64' строку, и отрисовать.
Я вот думаю как сделать так что бы клиент понимал какие пакеты - бинарные и нужно дождаться несколькоих фреймов. А какие, текст например - сразу отрисовывать.
Кроме как все ебернуть в JSON ниче дельного не придумал.
Аноним 20/08/20 Чтв 15:53:59 17829061127
>>1782751
Оберни в жсоны
Либо выдели отдельные вебсокеты для разных нужд
Аноним 20/08/20 Чтв 16:03:42 17829291128
Почему когда пытаюсь прочитать переменную по ключу скажем:
variable["key"] (подразумевается что variable это массив) но variable == null, то ошибки не выбрасываются? Что это за приколы?
Аноним 20/08/20 Чтв 16:16:53 17829731129
php1.JPG 34Кб, 563x677
563x677
Я уже понимаю что чего-то не понимаю, но чего не понимаю я еще не понимаю.
Аноним 20/08/20 Чтв 18:55:14 17831991130
>>1782973

Использованы русские буквы?
Аноним 20/08/20 Чтв 19:03:54 17832071131
>>1782973

проверь gettype() какой тип данных возвращаешь.
по идее должно быть duck
Аноним 20/08/20 Чтв 19:04:49 17832081132
>>1783207
бля, справа же тип данных, лол
Аноним 20/08/20 Чтв 19:09:27 17832151133
>>1782906
а как фильтровать то какой фрейм пришел на сервер? Хотя вроде клиент вэбсокет в браузере отправляет фрейм в вормате бинарника Uint8Array? Так?
И теоретически я этот пакет могу разобрать по маске фрема. да?
нода бы проверить.

Можешь скинуть куда нибудь на ideon , если не сложно, пример как ты делал выделение отдельного сокета для отдельного типа данных.
Я пока еще протупливаю в этой теме.
Аноним 20/08/20 Чтв 19:12:29 17832171134
>>1783215

Если у тебя бинарные пакеты, то ты можешь, например, в первом байте числом кодировать тип данных. Также, писать номер части и общее количество частей.
Аноним 20/08/20 Чтв 20:37:39 17832831135
как создать личный кабинет?
хотя бы просто с именем парочкой данных и ничего не делающего?
Аноним 20/08/20 Чтв 21:21:28 17833291136
>>1783283
Возводишь кароч стены из газоблока. Потом штукатуришь. Потом электрика. Потом отделка, плинтуса, кабель каналы, обои, половое покрытие, потолок. Потом заносишь мебель ПК и оргтехнику, тянешь интернет.
Личный кабинет готов.
Аноним 20/08/20 Чтв 21:26:34 17833351137
>>1783283

Ты бы писал подробнее, в чем у тебя проблема (скорее всего, незнание каких-то вещей). По идее "личный кабинет" делается примерно так:

- если пользователь не авторизован, переадресовать его на страницу входа/регистрации
- иначе, вывести нужные ему данные

Соответственно, нужны еще страницы входа/регистрации, с формами, с обработчиками этих форм. Также, класс, отвечающий за авторизацию, например, через куки.
Аноним 20/08/20 Чтв 22:24:28 17833781138
>>1783335
чтобы сразу после регистрации я увидел страничку,как в соц сети,там имя,фамилия,город,возраст
Аноним 21/08/20 Птн 13:50:27 17839071139
Пацаны, делайте репозитории и пушьте куда нибудь. Похуй что говно пишете, но пуште.
Аноним 21/08/20 Птн 15:10:42 17840101140
>>1783907
Говоришь прям как мой тимлид.
Аноним 21/08/20 Птн 16:58:18 17842261141
include и require
какая разница,не одупляю
Аноним 21/08/20 Птн 17:04:54 17842321142
изображение.png 12Кб, 684x236
684x236
>>1784226
Авторы всяких курсов рекомендуют использовать require, чтобы наверняка.
Аноним 21/08/20 Птн 17:18:09 17842451143
Аноним 21/08/20 Птн 17:19:43 17842481144
Снимок экрана ([...].png 102Кб, 1366x768
1366x768
пойдет?
Аноним 21/08/20 Птн 17:31:01 17842591145
а что писать в ПДО,там где требуют юзера и пароль БД,юзер наверно root, а пароль,его же нет?
Аноним 21/08/20 Птн 18:22:24 17843041146
>>1781540
да все норм, авто/регистр сделал, потом прикрутил crud со своим ресурс контроллером. сдал тз, ответили как раз вот час назад буквально. теории типа мало, а так с тз все норм. ИЗВИНИТЕ НО ВЫ НЕ ПОДХОДИТЕ ПОКА НАШЕЙ КОМАНДЕ
хуй знает че делать, видимо даже на ждуна на фреймворк хуй свалишь от этих хуитриксов и всяких говно cms. уже за год заебался в этом говне копаться
зато на этот кал тоннами зовут и без проблем вообще каких либо )))
Аноним 21/08/20 Птн 18:25:51 17843061147
Снимок экрана ([...].png 138Кб, 1366x768
1366x768
в чем ошибка?
Аноним 21/08/20 Птн 20:33:11 17843641148
Снимок экрана ([...].png 166Кб, 1366x768
1366x768
Аноним 21/08/20 Птн 23:00:37 17844661149
>>1784259

Если нет, то передаешь пустую строку.

>>1784306

Ты в имя $e случайно русскую букву не подставил?
Аноним 21/08/20 Птн 23:43:32 17844961150
Как в пыхе с асинхронностью? Хуево? Жить можно? (с какой версии?)
async/await хоть завезли?
Аноним 21/08/20 Птн 23:54:03 17845091151
>>1784496
С асинхронностью охуенно. Го и нода сосут с проглотом. Сидим всем трендом пишем корутины и веб сервера на пыхе.
Аноним 22/08/20 Суб 00:10:54 17845231152
Кстати, а в восьмой хоть планируется завести асинхронность?
Аноним 22/08/20 Суб 06:59:03 17846461153
Аноним 22/08/20 Суб 12:03:59 17847411154
>>1784646
Пизда. Мне кажется сами разрабы забивают гвозды в гроб пыхи, в то время как комьюнити пытается ее вытянуть всеми возможными способами.
Аноним 22/08/20 Суб 12:08:18 17847451155
>>1784741
Учитывая, что именно разрабы против асинхронности - так и есть. Ну и блевотный синтаксис атрибутов в угоду ненужного оператора подавления ошибок тоже топ.
Из-за таких охуенно удачных решений скоро на пыхе будет стыдно писать даже тем, кто до этого к языку хорошо относился.
Аноним 22/08/20 Суб 13:23:54 17847731156
>>1784741
Там выше сеньор помидо пояснил по пыхе лаконично весьма. По большому счету с ним согласен. Хотелось бы конечно что бы пхп переехал на новую концепцию виртуальной машины, ушел от концепции выстрелил - забыл. Но тогда он конкретно переедет в другую конкурирующую нишу, с питонами, джавами и прочими го.

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

И опять же комьюнити толкает язык, а язык толкает комьюнити. У пхп оно огронмно. Тоесть как придет время и цмс-ки перепишут под новую виртуальную машину, и все остальные переедут на навую парадигму. Я бы лично не отказхался что бы пхп перестал быть рожденным что бы умирать.
Аноним 22/08/20 Суб 20:32:09 17850601157
>>1784745
> блевотный синтаксис атрибутов
так от <<<>>> отказались
Аноним 22/08/20 Суб 22:47:36 17851241158
У меня братец несколько лет работает в Чехии каким-то там веб-разработчиком. Так вот, вскоре придется к нему приехать, он знает что я тоже в этом направлении вкатываюсь, но не знает что в пыху. Так вот, я побаиваюсь того момента, когда ему признаюсь в этом. Что делать? Мне кажется что он после такого серьезно во мне разочаруется, и вообще будет как к дауну относиться. Сталкивались ли вы с подобными ситуациями? Как оправдываться? Я не троллю, честно. Помогите, мб подкиньте аргументов каких-то в доказательство того, что пхп - это нормально.
Аноним 23/08/20 Вск 00:15:15 17851541159
>>1785124
Как по мне любые доказательства могут не сработать. Сначала поебитесь, а уже потом рассказывай что вкатываешься в пхп.
Аноним 23/08/20 Вск 09:41:46 17853101160
именной плейсхолдер или безымянный?
Аноним 23/08/20 Вск 10:34:28 17853181161
>>1785124
Лол, проиграл с терпилы
Аноним 23/08/20 Вск 21:16:41 17858761162
Переходим в новый тред: >>1785871 (OP)

Здесь больше писать не надо, если вам не ответили, напомните о себе в новом треде.
Аноним 28/09/20 Пнд 15:42:13 18181791163
изображение.png 29Кб, 911x711
911x711
нихуя себе
Аноним 29/11/20 Вск 18:41:22 18686571164
ОП, подскажи, где можно найти архивы с тредом. Помню были zip файлы.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов