«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP #113 Аноним 2019/11/02 01:20:05  №1511146 1
php-noob-1.png (33, 500x500)
500x500
cat-cafe-osaka.jpg (157, 1024x683)
683x1024
1393868234423.jpg (202, 1024x768)
768x1024
welcome-to-php.png (188, 853x480)
480x853
Опять зима стоит у двери, а мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

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

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

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

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

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

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

С чего начать

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

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

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

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

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

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

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

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

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

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

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

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

- HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://github.com/codedokode/pasta/blob/master/db/databases.md

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1
- Новости IT на англ. https://news.ycombinator.com/
- какой-то древний, устаревший, но большой и на русском справочник по веб-разработке, посоветованный аноном: https://starcat.dp.ua/doc/wdh/

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

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

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

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

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

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

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

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

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

PSR-1: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-2-coding-style-guide.md
Аноним 2019/11/02 01:27:00  №1511149 3
Напомню себе, как будет время, проверить из позапредыдущего треда:

- https://github.com/asdasdasdasddasasdasdas/StudentList из >>1448614
- https://github.com/baraboolka/StudentList из >>1460026
- https://github.com/hikkej/student_list из >>1460537
- https://github.com/asdasdasdasddasasdasdas/Filesharing из >>1462815
- https://github.com/deadj/student-list/ из >>1466025 и >>1475811

Если я кого-то еще пропустил или не ответил, можно напомнить о себе в этом треде. В прошлом треде >>1475112 (OP) на большинство постов даны ответы.
Аноним 2019/11/02 07:37:26  №1511200 4
Может не туда вопрос а нуден ли пхп в 2019?
Аноним 2019/11/02 08:31:39  №1511230 5
Оп продает свои говнокурсы! Не верьте ему! Он никогда не был рпограммыстом!
Аноним 2019/11/02 08:59:08  №1511237 6
>>1511230
И какие курсы он продает?
Аноним 2019/11/02 09:29:26  №1511266 7
>>1511162
Таки спорно. С одной стороны, ты прав и действительно нет смысла что-то усложнять, если нужно выкинуть пользователю html-ку с парой кнопок, то jquery будет гораздо проще.
Но:
1) jquery уже подрастерял свою актуальность, не полностью, но... Во-первых, браузеры подсократили различия между собой (только говносафари ещё удивляет), нет такой острой необходимости в умной обёртке, учитывающей их. Во-вторых, сам js уже эволюционировал, на ванильном js-е можно сделать то же самое с чуть-чуть большим количеством кода.
2) Любой софт имеет тенденцию к усложнению со временем. Тебе нужно показать пользователю одну формочку, вторую, добавить валидацию, эффектик, что-то ещё, анимацию красивую... и в какой-то момент ты понимаешь, что оно слиплось в ком из лапшевызовов апи браузера и работы с глобальным состоянием, стоящий на костылях и хаках, чтоб быстрее. И переделать это на любой нормальный фреймворк займёт часов 20. И ты приходишь такой к начальнику и говоришь, что да, добавить новую форму - два часа, но тебе нужно ещё двадцать, потому что вот так вот. И ты услышишь следующие аргументы: "а чего ты сразу нормально не сделал?", "ну оно же работает сейчас, правильно?", "у нас нет денег на бессмысленные украшательства, не трать на это времени", "просто добавь кнопку, как-нибудь потом перепишешь" и тд и тп. В итоге будешь жить с этим легаси-говном или, матерясь, срочно переписывать его нормально.
Я это к чему, у бизнеса почти никогда нет ресурсов переделывать то, что и так приносит ему денег. Проще уже сразу сделать нормально, потратив на жалкий час больше, там не так много работы, сделать одну сраную форму на сраном реакте и пропустить через сборщик. Зато потом легче будет, если что.
Аноним 2019/11/02 09:30:23  №1511269 8
Вопрос по dependency injection container (использую PHP-DI http://php-di.org).

Как взаимодействовать с контейнером из классов? У меня есть индексный файл, в нём создаётся контейнер и через контейнер получается главный класс приложения. Примерно так:

```
$dicBuilder = new \DI\ContainerBuilder();
$dicBuilder->addDefinitions("config.php");
$dicBuilder->useAutowiring(false);
$dic = $dicBuilder->build();

$blog = $dic->get(\Core\Blog::class);
$blog->run();
```

А вот как мне получить доступ к $dic из остальных классов? В голову пришли следующие варианты:

0. Создать статическое свойство/синглтон, который будет хранить контейнер. Интуитивно кажется, что это хуёвая идея. Типа, использую DIC, но сам контейнер доступен "глобально".
1. Вставить код создания контейнера (4 строчки) в каждый класс. Возможно, это наиболее правильно, но куча копипаста ведь.
2. Создать такой же контейнер в контейнере. Т. е. в config.php пишу примерно следующее:
```
\DI\Container::class => function ( ContainerInterface $c ) {
\t$dicBuilder = new \DI\ContainerBuilder();
\t$dicBuilder->addDefinitions( "dic-cfg.php" );
\t$dicBuilder->useAutowiring( false );
\t$dic = $dicBuilder->build();

\treturn $dic;
}
```
Вроде не самое неадекватное решение, но получается, что я в контейнере создаю абсолютно такой же контейнер и дальше уже работаю с ним. Да и опять же - копипаст, пусть и всего 2 раза.
3. Изменить код в индексном файле на примерно следующий:
```
$dicBuilder = new \DI\ContainerBuilder();
$dicBuilder->addDefinitions("config.php");
$dicBuilder->useAutowiring(false);
$dic = $dicBuilder->build();

$dic->set(\DI\Container::class, $dic);

$blog = $dic->get(\Core\Blog::class);
$blog->run();
```
Т. е. добавить контейнер в самого себя через set. На первый взгляд выглядит адекватно, но, возможно, я что-то упускаю.

Как поступить более правильно? Или, может, все варианты сосут и есть какой-то другой?
Аноним 2019/11/02 10:03:50  №1511304 9
Аноним 2019/11/02 10:05:49  №1511306 10
>>1511269
Все варанты - костыли с говном, никогда не делай такого. Любой контейнер зависимостей имеет встроенные способы разрешения этих самых зависимостей. Ищи в документации - там всё есть, только поискать.
А вот то, что ты не почитав нормально доки по либе, которую решил использовать, да ещё и потом костыли писать начал - хуёво. Избегай такой практики - самому же потом фейспалмами лицо разбивать не придётся.
Аноним 2019/11/02 10:11:56  №1511308 11
>>1511200
Иначе поставь вопрос - чем лучше питон, или нода или руби? И зачем тебе, допустим предпринимателю выбирать не пхп?
То что хотят программисты - это маня хотелки. Важно что хотят те кто платят бабки. И думаю всякие помидоры всегда пляшут от этого.
Аноним 2019/11/02 10:19:26  №1511311 12
Аноним 2019/11/02 11:11:03  №1511331 13
>>1511308
Не понимаю зачем ты на такие посты отвечаешь. Каждый тред очередной шизоид всплывает с таким вот вопросом.
И невдомёк болезному, что те, кто варится в этой всей теме знают рыночек побольше его, причём в разы. Вопрос нубский, жирный и неуместный.
Аноним 2019/11/02 11:12:55  №1511333 14
>>1511331
>Вопрос нубский

Ну так я нуб, думаю с чего начать. Вот и спросил.
Тут ведь для начинающих тред.
Аноним 2019/11/02 11:15:02  №1511334 15
>>1511333
>думаю с чего начать
Думай молча.

>Тут ведь для начинающих тред.
Т.е. ты тут ждёшь только таких же как ты - думающих с чего начать? И что толку от такого треда?
Аноним 2019/11/02 11:38:43  №1511350 16
>>1511334
>Думай молча.

С чего ты решил что ты можешь мне указывать?

>Т.е. ты тут ждёшь только таких же как ты - думающих с чего начать? И что толку от такого треда?

С чего ты решил что тут должно быть как ты хочешь?
Аноним 2019/11/02 11:42:51  №1511353 17
>>1511269
>Как взаимодействовать с контейнером из классов?
Вся соль контейнера в том что тебе не нужно взаимодействовать с ним из классов. Ты в конструкторах описываешь нужные зависимости, и контейнер эти зависимости за тебя резолвит.

>Как поступить более правильно? Или, может, все варианты сосут и есть какой-то другой?
У любой программы есть точка входа, подумай какая точка входа нужна для твоего приложения и что она должна делать? Для твоего веб приложения упрощенно это почти всегда инициализация, рут -> обработчик. Т.к. контейнер в иерархии находится ближе точке входа то у тебя есть возможность просто сказать ему, контейнер - вызови обработчик и передай ему все зависимости. (На этом этапе еще тесно можно общаться с роутером и биндингом переменных рутов и переменными обработчика, например /post/:id и передавать в $id это значение).
И почему ты автовайринг выключил? Это же пушка
Аноним 2019/11/02 11:45:02  №1511355 18
>>1511311
Почему нет? Представь что ты в public/index.php подключаешь этот файл, получаешь объект контейнера, и всё, ты можешь инитить любой класс, тот же роутер, ну а дальше понятно.
Аноним 2019/11/02 11:57:24  №1511363 19
>>1511353
>Вся соль контейнера в том что тебе не нужно взаимодействовать с ним из классов

В принципе, я предполагал такой вариант. Это объясняет, почему в доках ничего по этому поводу нет.

>И почему ты автовайринг выключил? Это же пушка

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

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

>>1511355
Ну, допустим. А какие очевидные минусы имеются к варианта 3 (кинуть контейнер через set)? Или тут уже принципиальной разницы нет?
Аноним 2019/11/02 13:25:07  №1511399 20
>>1511363
>Ну, допустим. А какие очевидные минусы имеются к варианта 3 (кинуть контейнер через set)? Или тут уже принципиальной разницы нет?

Я, если честно, вообще не понял зачем ты контейнер засовываешь в контейнер и как это тебе поможет. Это же какой-то бред на уровне return $var === true ? true : false;

>как передать в объект два разных объекта одного и того же класса. Автовайринг тут, очевидно, не сработает.
Автовайринг сработает, но скорее всего по дефолту передастся две ссылки на один и тот же объект, хотя реализация вообще разная может быть. Для таких случаев используются биндинг или фабрики, например у тебя класс принимает два одинаковых интерфейса, но ты хочешь две разные реализации засунуть. (Хотя выглядит это очень странно и тупо)
Аноним 2019/11/02 13:37:08  №1511404 21
Аноны, помогите разобраться с отправкой почты. Не понимаю как это должно работать.
есть нативная функция mail() в пхп, которая для отправки почты использует встроенный почтовый сервис операционной системы. В линукс он есть по дефолту.Я работаю с вин7, и у меня это функция не работает.
Так же существует smtp - протокол и smtp-сервера. Что бы отправить на такой сервер письмо - необходимо что бы данное письмо соответствовало стандарту smtp. Для этого используют библиотеки типа PHPMailer.
Я правильно понимаю?

Если я работаю из винды, то мне требуется поставить smtp сервер какой нибудь. Настроить его, и уже из своих скриптов отправлять на него письма, которые уже этот сервер будет рассылать куда нужно.
Так?
Аноним 2019/11/02 13:51:10  №1511410 22
>>1511404
>я работаю из винды
Опенсервер что ли?
Аноним 2019/11/02 13:54:31  №1511411 23
.png (114, 1588x887)
887x1588
Вопрос по БД. Допустим есть здоровенный JSON на 1.5к строк, который отдает сервер, и мне нужно его сохранить в бд. Структура сложная как пикрилейтед. Какая структура таблиц делается в таких случаях? На каждый array делать новую табличку и привязывать по айдишнику что ли?
Аноним 2019/11/02 14:06:12  №1511415 24
>>1511410
Есть разница между опен сервером и ручной сборкой апач + пхп?
И то и другое есть
Аноним 2019/11/02 14:23:15  №1511426 25
>>1511415
Почту из опенсервера отсылаешь?
Аноним 2019/11/02 14:28:34  №1511439 26
>>1511411
Либо да (нет), либо хранить как json в sql базе, либо хранить как json в json-ориентированной базе типа монгодб на выбор
Аноним 2019/11/02 15:09:44  №1511466 27
>>1511439
> в json-ориентированной базе типа монгодб
Спасибо няша, не знал про существование такого.
Аноним 2019/11/02 15:22:20  №1511476 28
>>1511426
Вообще ниоткуда не отсылаю пока что, хочу толково понять что к чему. О том и вопрос
Аноним 2019/11/02 15:43:51  №1511495 29
Поясните что есть api? Это ссылкка, которая возвращает какие то данные (для фронтенда в json, например)?
Аноним 2019/11/02 15:46:42  №1511498 30
Почитал про phpMailer, в документации сказано что он позволяет отправлять из винды письма на smtp сервер. То есть реализует некий smtp клиент ? Этот клиент не может быть написан на пхп, так как является системным приложением и написан на с++?
Я правильно цепочку понимаю:
Мой пхп код -- вызываю smtp клиент, он формирует письмо и отправляет на smtp сервер, который отправляет письмо адресату . Так ?
Аноним 2019/11/02 16:15:06  №1511527 31
15719211225700.jpg (87, 720x696)
696x720
>>1511146 (OP)
Здарова, пыхеры.

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

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

Кстати, что за хуйню ублюдочный оракл сделал с сайтом mysql? Вчера зашел и ахуел


Сам жээс фулстак.
Аноним 2019/11/02 19:14:28  №1511641 32
Аноним 2019/11/02 21:46:16  №1511689 33
Как понять работу контейнера? Допустим я зарегестрировал зависимость в контейнере симфони
$conteiner->register('request', Request::class);
Когда я буду получать реквест в конструкторах других классах мне будет возвращаться один и тот же обьект?
Или есть у меня зависимость шаблонизатора Twig. Я хочу в этот шаблонизатор добавить глобальную переменную класса Session.
$container->register('twig', Environment::class)
->addArgument(new Reference('twig.loader'))
->addMethodCall('addGlobal',['session', new Reference('session')]);

Если мне, допустим, нужно определить Session еще и в конструкторе асбтрактного контроллера. У меня будет один и тот же обьект Session в обоих случаях? Или создадутся 2 разных обьекта? Смотрю примеры фреймворков (Symfony, Laravel) вообще ничего не ясно. Доки симфони по контейнеру прочитал, думаю, десяток раз. Не вижу там этой инфы. Еще меня смущает использование таких обьектов как $app, response в контроллерах. Как они обьявлены глобально?
Подскажите хотя бы как это загуглить, ибо как не ищу выдает одни и те же доки на разных языках, но там только описано как задать зависимость, например.
Аноним 2019/11/02 22:20:03  №1511712 34
>>1511689
>У меня будет один и тот же обьект Session в обоих случаях? Или создадутся 2 разных обьекта?
А тебе в исходниках посмотреть не судьба эти методы?
Аноним 2019/11/02 22:41:07  №1511730 35
>>1511712
Без негатива и всего этого, но я не понимаю о каких ты методах.
Аноним 2019/11/02 23:41:10  №1511744 36
>>1511730
Да я без негатива вроде, хз.
Смотри тот метод, где разрешается зависимость очевидно - как оно там работает. Исходники-то открыты.
Ты ж программист.
Аноним 2019/11/02 23:52:54  №1511747 37
>>1511744
Я уже все пересмотрел. Сейчас пробовал респонсы создавать разные контейнером и менять в контент. Пришел к выводу что он создается один и тот же. Это радует.
Только пропала одна проблема - появляется новая. Symfony Session компонент просто не работает. Когда пытаюсь его создать - пишет что сессия уже запущена. Но на метод $session->isStarted() возвращает false. Пробовал и session_abort до этого делать и гуглить. В гугле самая большая проблема в том, что выдает запросы по работе с самим фреймворком, а не с компонентом.
Аноним 2019/11/02 23:53:30  №1511748 38
>>1511747
Но, конечно же, "все пересмотрел" !== "все понял и разобрал"
Аноним 2019/11/03 01:45:30  №1511771 39
Здравствуйте аноны!
Я в некотором замешательстве. Лениво учу python довольно продолжительное время, знаю синтаксис и не более. Да и то поверхностно. Не могу понять где применить этот язык и куда двигаться, везде кричат что нет вакансий, дикая конкуренция итд. Короче полная дизмораль. Подумываю пересесть на стул с php. Скажите, у вас есть четкий алгоритм прихода к успеху на работу? Не уткнусь ли я в лес непонимания куда мне двигаться дальше? У меня тройка по математике и я хочу простую ламповую работку для сыча. Пхп тоже требует адский стек технологий?
Аноним 2019/11/03 06:50:45  №1511814 40
>>1511498
бамп!
Аноны, кто в теме объясните подробно.
Как phpmailer может отправлять напрямую письма из винды, если это поидее надстройка над mail(), которая по дефолту вызывает в linux функцию sendmail, а в виндовс на сколько я понимаю не вызывает нихуя ( или вызывает какую то виндовую почтовую службу все таки? )


Аноним 2019/11/03 06:53:43  №1511815 41
>>1511689
В принципе в контейнере всегда должен храниться один и тот же объект. Когда ты запрашиваешь объект, идет проверка - если объекта в "хранилище" контейнера нет - он создается, а если нет - возвращается уже созданный объект.
У ОП-a есть урок который позволит понять чуть лучше:
https://github.com/codedokode/pasta/blob/master/arch/di.md
Аноним 2019/11/03 08:53:58  №1511864 42
>>1511814
>кто в теме объясните подробно
В гугле куча статей, а ты до нас доебался.
Аноним 2019/11/03 10:20:23  №1511947 43
>>1511815
Ты не прав. В контейнерах может лежать по сути фабрика, есть такой подход. В том же симфони контейнере можно указать, тебе кэшировать объект или каждый раз пересобирать его заного.
Ну и да, главная задача контейнера - резолвить зависимости между компонентами, а все прочие кэши-хуеши - дело десятое.
мимо
Аноним 2019/11/03 11:00:40  №1511979 44
>>1511771
Везде нужен стек. Но на пхп легче, можно хоть в те же вордпрессы вкатиться. Я хоть и нуб, но не особо понимаю преимущество питона в вебе, язык сам по себе тормознутый, так еще и конкуренты аля пхп => и работы меньше.
Аноним 2019/11/03 11:36:29  №1512015 45
>>1511689

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

Контейнер Симфони относительно сложный, для изучения лучше взять что-нибудь простое вроде Pimple:

- https://pimple.symfony.com/
- https://github.com/silexphp/Pimple

Контейнер Симфони сложнее, так как он позволяет конфигурировать сервисы через конфиги вроде YML-файлов, а также в нем есть "компиляция" - генерация единого PHP-файла с заложенными в нем настройками, что позволяет сразу загрузить этот файл, а не читать и не разбирать конфиги в дальнейшем. Это повышает производительность.

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

Это зависит от контейнера и его настроек. Возможно и то, и то. В Симфони, например, есть специальная опция для выбора, возвращать один и тот же объект или создавать новый: https://symfony.com/doc/3.4/service_container/shared.html

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

foreach ($requests as $request) {
$container->set('request', $request);
$kernel->handle($request);
}

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

Раньше Симфони использовала scopes, чтобы не допускать такие ситуации и удалять сервисы вместе с request. Но позже их убрали: https://symfony.com/blog/new-in-symfony-2-8-deprecating-scopes-and-introducing-shared-services Вместо request теперь в контейнер кладут request_stack, который возвращает актуальный request, что по моему не сильно лучше и не исключает того, что долгоживущий сервис сохранит себе копию request.

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

> $container->register('twig', Environment::class)
> ->addArgument(new Reference('twig.loader'))

Это, кстати, можно настраивать с помощью конфига, а не писать кодом. Правда тогда для оптимизации придется делать "компиляцию" контейнера.

> Еще меня смущает использование таких обьектов как $app, response в контроллерах. Как они обьявлены глобально?

Ты бы дал пример кода или ссылку, а то непонятно, о чем речь. Непонятно, где ты их увидел, какой фреймворк или библиотеку использовал, какой версии. Симфони, например, умеет смотреть на тип аргументов в методе контроллера и автоматически передавать туда подходящие объекты (мануал: https://symfony.com/doc/3.4/controller.html#fetching-services-as-controller-arguments )
Аноним 2019/11/03 11:39:38  №1512017 46
Аноны, объясните, почему я не могу через composer удалить пакеты которые требуют версию php большую чем я в данный момент использую?
Юзал 7.2, ставил пакеты требующие именно 7.2.
Откатил до 7.0 - теперь composer не может их удалить

>>v6.4.1 requires php ^7.2 -> your PHP version (7.0.32) does not satisfy that requirement.

Такая вот ошибка пишется.
Аноним 2019/11/03 12:21:15  №1512042 47
Аноним 2019/11/03 12:47:16  №1512071 48
>>1512017

Композер, как я понимаю, обновляет версии в большую сторону. Проще всего удалить папку vendor и composer.lock и запустить установку заново.
Аноним 2019/11/03 12:47:23  №1512072 49
ОП, спасибо за ответы! Ты няша:3
Аноним 2019/11/03 14:22:43  №1512200 50
>>1511771
Бамп вопросу, я может не совсем правильно спросил, имелось ввиду смогу ли я вкатится во что нибудь простенькое вроде пилить сайтики на фрилансе. На начальном этапе и 20-30к зарплата ьудет норм. Что для этого необходимо знать?
Аноним 2019/11/03 15:28:08  №1512241 51
>>1512200
Очень много всего, на самом деле. Для начала, попробуй сделать студентов или файлообменник из оп поста. Дальше уже сам будешь видеть какие у тебя пробелы.

Алсо, не рекомендую сразу во фриланс нырять, ты с 90% будешь пилить адовый говнокод.
Аноним 2019/11/03 16:27:34  №1512275 52
>>1512015
Ребят, я уже спрашивал но конкретного ответа не получил. Какая загруженость на работе в веб-конторах? На данный момент я сижу с утра до ночи и либо код пишу либо что то читаю. Пока что все устраивает, но понимаю, что если дальше так продолжу то выгорю или ослепну нахуй. А на счет работы боюсь что меня возьмут, а я не буду успевать работу выполнять.
Аноним 2019/11/03 16:29:03  №1512277 53
>>1512241
Тоесть ты предлагаешь учиться на собственных проектах. Придумывать сайт с функционалом, потом реализовывать его. Что скажешь о cms, оно вообще нужно или сразу фреймворк учить? Имеет ли смысл пилить свой движок для сайта?
Аноним 2019/11/03 16:39:06  №1512281 54
>>1512275
Сильно зависит от конторы. Среднее по больнице никто не даст.
Аноним 2019/11/03 16:45:05  №1512284 55
>>1512277
У пхп ждунов только ларавел конторы. Бойся как огня всяких вордпресс контор. Не делай сложных заданий дома. Налегай на жс. Быстрее вкатишься.
Аноним 2019/11/03 16:57:30  №1512294 56
>>1512284
А если контора делает и на cms и на фреймворках?
Аноним 2019/11/03 17:01:55  №1512298 57
>>1512294
Хочешь СМС изучать или программистом стать? Программист не ограничен пхп проектами.
Аноним 2019/11/03 17:16:06  №1512306 58
>>1512298
Да и вообще ты сможешь себя программистом в полном смысле считать только когда в командной разработке участвовал. СМS подразумевает что один чушка по быстрому накидывает плагинов и проверяет чтобы это все минимально работало.
Аноним 2019/11/03 17:22:23  №1512309 59
>>1512298
Это не мой пост, мне лучше чтобы без cms , а то это зашквар как я понял. У python и php есть точки соприкосновения? Будет профит если знать оба языка?
Аноним 2019/11/03 17:27:16  №1512317 60
>>1512306
У меня в городе просто нет вакансий для чистого Laravel junior. Везде упоминается Yii как минимум. А то и на cms скажут шаблон натянуть - хер знает. Стоит ли мне без опыта в такую контору идти чтобы его набраться? Или сидеть ждать чуда/искать фриланс на ларке/symfony.
Аноним 2019/11/03 17:28:36  №1512320 61
>>1512309
Зашкар или не зашкар понятия какие-то детские. Это твой путь или не твой, может кто хочет стать cms одиночкой на арворке. Кто-то веники вяжет и неполохо себя чувствует.
Аноним 2019/11/03 19:42:14  №1512474 62
>>1512241
>Алсо, не рекомендую сразу во фриланс нырять, ты с 90% будешь пилить адовый говнокод.

Тут считаю двоякая ситуация. Для большинства войти-в-ойти это что то типа двери в нарнию, где тебя добрые дяди возьмут к себе, научат и платить будут. В принципе это потенциально возможно.
Но в этом контексте я считаю что личные качества значат больше чем навык, навык придет по итогу если код писать. А вот решительность, активность, предприимчивость, умение искать работу и себя подавать - это стоит гораздо дороже всех прочих личных навыков, и на самом деле не просто так из воздуха берется. А уж если ты еще и начинающий.
Я это к тому говорю, что по итогу на любой скилл будет покупатель. Я лично видел статичный прости Господи лендиг это был пиздец ужас, на табличной верстке за который взяли 10 тыщ. Тут полтреда за 10 к и месяц времени фреймворк ебанет и магазин поверхнего. Утрирую конечно. Но работать зная что ты учишься,и тебе еще и бабла заплатят, пусть и на дошик - это гораздо приятнее.
Поэтому эти вещи стоит прокачивать, просто реально по себе искать задачи. Люди на такой хуйне зарабатывают порою, что диву даешься. Кабанчики не зря подскакивают в этой жизни.



>>1512298
>>Программист не ограничен пхп проектами.
Золотые слова. Я как в пхп основательно въехал - для меня в node.js все значительно яснее стало.

Аноним 2019/11/03 21:22:27  №1512533 63
>>1512474
>Золотые слова. Я как в пхп основательно въехал - для меня в node.js все значительно яснее стало.
Хочу когда с пхп разберусь и стану хотя бы мидлом - начать учить другие языки. Считается ли это нормой? Помню в треде писали что нужно выбирать что то одно - там и сидеть.
Аноним 2019/11/03 21:30:41  №1512536 64
>>1512533
Скорее наоборот, чтобы стать мидлом придется учить другие языки и технологии. Иначе будешь на одном месте сидеть.
Аноним 2019/11/03 21:41:24  №1512543 65
>>1512533
У бекендеров принято ещё и фронтенд знать хоть как-то. Тот же js тебе по-любому изучать придётся. Никто не мешает потом на него перекатиться.
Ноду ту же щупал, наверное, каждый второй из местных.
Аноним 2019/11/04 08:06:05  №1512740 66
>>1511814
Кажется я понял почему PHPmailer может отправлять smtp-почту - потому что соединение реализуется черкз сокеты. А их пхп нативно поддерживает.
Я прав?
Аноним 2019/11/04 08:16:12  №1512743 67
>>1512740
>черкз сокеты. А их пхп нативно поддерживает.
через костыль
Аноним 2019/11/04 09:28:55  №1512775 68
Аноним 2019/11/04 10:02:32  №1512787 69
>>1512775
Да никакого костыля. Как все языки работает с сокетами через с обертку
Аноним 2019/11/04 10:13:50  №1512791 70
Делаю задачку по учебнику,
что не так?

<?php
error_reporting (-1);

$human1 = mt_rand(1,6);
$human2 = mt_rand(1,6);

$cpu1 = mt_rand(1,6);
$cpu2 = mt_rand(1,6);

$humanSum = ($human1 + $human2);
$cpuSum = ($cpu1 + $cpu2);

if ($humanSum > $cpuSum);{
echo "Победа человека!\n";
}
elseif($humanSum < $cpuSum);{
echo "Победа ИИ!\n";
}
else ($humanSum == $cpuSum);{
echo "Ничья!\n";
}
?>

Аноним 2019/11/04 10:20:21  №1512801 71
>>1512791
>что не так?
Ты нам в угадайку играть предлагаешь что ли? Проблему опиши.
Аноним 2019/11/04 10:32:53  №1512818 72
>>1512801
Идеон говорит что-то не так с синтаксисом PHP Parse error: syntax error, unexpected 'elseif' (T_ELSEIF), expecting end of file in /home/m5d2V4/prog.php on line 16

ПХП Шторм подсвечивает выделенные жирным скобки как Expecting statement

<?php
error_reporting (-1);

$human1 = mt_rand(1,6);
$human2 = mt_rand(1,6);

$cpu1 = mt_rand(1,6);
$cpu2 = mt_rand(1,6);

$humanSum = ($human1 + $human2);
$cpuSum = ($cpu1 + $cpu2);

if ($humanSum > $cpuSum);{
echo "Победа человека!\n";
}
elseif($humanSum < $cpuSum);{
echo "Победа ИИ!\n";
}
else ($humanSum == $cpuSum);{
echo "Ничья!\n";
}
?>
Аноним 2019/11/04 10:33:38  №1512822 73
>>1512818
} перед elseif
и } перед else
Аноним 2019/11/04 10:59:46  №1512853 74
>>1512822
>if ($humanSum > $cpuSum);{
>elseif($humanSum < $cpuSum);{
Точка с запятой тут не ставится.
Аноним 2019/11/04 11:09:21  №1512861 75
>>1512853
Точно! Спасибо.

Но теперь Шторм ругается на

else ($humanSum == $cpuSum) {
echo "Ничья!\n";
}

Cannot use [] for reading
Аноним 2019/11/04 11:10:46  №1512864 76
>>1512861
У тебя опять синтаксис неправильный.
Аноним 2019/11/04 11:14:35  №1512866 77
>>1512864
В чем?
Сдается не шторм мозги ебет по поводу { и [
NoLaifer 2019/11/04 11:18:51  №1512872 78
памагити

не могу понять почему не преобразует в верхний регистр
https://ideone.com/8zFsVm
NoLaifer 2019/11/04 11:19:12  №1512873 79
>>1512872
клавиша шифт, задание
Аноним 2019/11/04 11:47:14  №1512910 80
>>1512866
>В чем?
Ты теперь на каждый пук будешь у нас спрашивать?
Сходи и сам посмотри как правильно писать на пхп надо.
Аноним 2019/11/04 11:55:45  №1512923 81
>>1512910
Если такой психованный, мог бы не отвечать.
Вахтер местный что ли?
Аноним 2019/11/04 12:00:55  №1512928 82
>>1512927
будем надеяться,что тебя забанят
Аноним 2019/11/04 12:02:42  №1512932 83
Аноним 2019/11/04 12:31:23  №1512970 84
7.png (17, 1416x261)
261x1416
Анон, делаю калькулятор (пушо с переводом цифр в слова не справился):
1) Откуда берётся ноль? Пробовал убрать с помощью $i+1, но не вышло.
2) Я хочу, чтобы у меня в $a записывались числа при помощи цикла, после чего при появления знака '+' - он прекращал записывать цифры в $a и начал следующие цифры после знака '+' записывать в $b. Как это реализовать?
Аноним 2019/11/04 12:38:06  №1512975 85
>>1512970
Или я хуйню делаю и лучше сделать через прег_сплит?
Аноним 2019/11/04 12:52:06  №1512989 86
>>1512975
>я хуйню делаю
Вся твоя жизнь в трёх словах.
Аноним 2019/11/04 14:38:39  №1513081 87
>>1512970

У тебя не видно чему равен $input и чему равно начальное значение $a. Может, там такой код?

$a = 0;
....
$a = $a . $char;

Здесь оператор точка перед склеиванием преобразует число 0 в строку "0" и к ней приклеит следующую цифру.

Аноним 2019/11/04 14:39:25  №1513083 88
Аноним 2019/11/04 14:51:27  №1513101 89
>>1513081
Бля, точно, спасибо.

А как можно добавлять число к числу, без преобразования в строку?
$a += - не преобразует, но он тогда просто прибавляет цифры. Какой-то оператор для этого существует?
Аноним 2019/11/04 14:53:47  №1513103 90
>>1513083
Поэтапно разбери и посмотри, что работает, а что нет.
Аноним 2019/11/04 14:59:37  №1513109 91
>>1513083
даже когда>>1513103
не присваивается в функции строка
но я не понимаю почему
там есть равно, значит должно блин
сейчас кстати попробую обьявить
$str= ' ';
Аноним 2019/11/04 15:01:55  №1513113 92
>>1513101

А не надо вначале было класть 0. Помести в переменную пустую строку.

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

число = число умножить на 10 + новая цифра.
Аноним 2019/11/04 15:10:51  №1513127 93
>>1513113
>А не надо вначале было класть 0. Помести в переменную пустую строку.
Так поменял я, я говорю о том, как сделать так, чтобы переменные добавлялись не в строку и чтоб на выходе получалась НЕ строка.

>Формула такая:
Формула чего?..
Аноним 2019/11/04 16:15:59  №1513180 94
>>1512536
>>1512543
Ну фронтэнд это ясное дело. Просто все обычно к стеку так привязаны, советуют делать упор конкретно на него. А я хочу и все фреймворки шарить, и в ноде копаться, и в питоне. Но если так даже принятно, то в чем вся "болезненость" перехода на другой язык? Или это все сказки неосиляторов?
Аноним 2019/11/04 16:19:53  №1513182 95
Аноним 2019/11/04 18:34:04  №1513322 96
>>1513180
>> Но если так даже принятно, то в чем вся "болезненость" перехода на другой язык? Или это все сказки неосиляторов?

Я с ноды начинал, у нее документация для нуба - ад адский. Я вообще нихуя не понимал. Че от чего наследуется, и нахуя оно вообще нужно. И как из этого говна сайт собрать. Потом между делом изучил питона синтаксис, но питон рыночек порешал. На нем крайне мало для нуба работы.
По итогу пришел в пхп, выучил sql, и так по гайдам, по видосам и прочем я разобрался и в сессиях, и в ООП и в том как вообще должно быть организованно приложение. Слои, контейнеры и все такое.
Я все еще нуб, но именно на пхп я начал понимать что к чему.
Сейчас для одного человека пилю личный кабинет для сайта, за небольшие деньги, типа первый проект. И все дается через боль, но идет вперед.
И когда я возвращаюсь к node иногда - я прям гораздо проще понимаю что к чему, яснее.
Но это я с позиции нубаря.
Аноним 2019/11/04 20:13:02  №1513410 97
>>1513180
>А я хочу и все фреймворки шарить,
Время
>и в ноде копаться, и в питоне.
Время x20
>Но если так даже принятно, то в чем вся "болезненость" перехода на другой язык?
Во времени. Если ты можешь тратить на это всё по 25 часов в сутки большую часть своего свободного времени то все ок.
Нет проблемы выучить yii, laravel и symfony ибо в целом они все mvc, только со своими внутренними правилами. Если поймешь какой-нибудь один из них, то с другими будет уже проще разбираться.
Тоже самое и с другими языками программирования. В них свой синтаксис, свои нюансы, свои библиотеки/фреймворки/мода.
Нужно следить за новыми версиями языка/фрейворка. Обновляться если в новой версии есть какие то исправления по критическим проблемам / улучшение производительности.
Я все ржу когда вспоминаю как в 7.0 или 7.1 зарезервировали слово Object и на одном проекте пришлось в коде все это переименовывать
Нет смысла быть человеком-оркестром. Стоит грамотно выбирать то, что учить.
Плюс не забывай, что если постоянно работать и/или учиться то можно просто ебнуться и выпилиться.



Аноним 2019/11/04 20:48:50  №1513424 98
Ребзя, а как понять на каком уровне находится анон и какой уровень нужен, чтобы идти на РАБоту?
Понятно, что учиться можно бесконечно. Да и некоторые аноны с нулевыми знаниями работать шли и там уже учились.
Аноним 2019/11/04 21:41:18  №1513454 99
>>1513410
>Нет проблемы выучить yii, laravel и symfony ибо в целом они все mvc
Ну я узнал о psr-7. И сейчас в компонентах ковыряюсь. Как я понимаю в пхп фреймворки все на одном фундаменте построены.
>В них свой синтаксис, свои нюансы, свои библиотеки/фреймворки/мода.
Мне кажется синтаксис другого языка не очень долго учить, мода - да. Не знаю почему, но не верится что для перехода с той же пыхи на руби или питон у мидла потребуется более 1 месяца. Ну потеряю я на месяц-два чуть чуть в зп, лучше чем на люстре вздернуться.
>Плюс не забывай, что если постоянно работать и/или учиться то можно просто ебнуться и выпилиться.
На самом деле я уже начинаю этого бояться. Слишком спешу и времени много уделяю, жаль что выбора другого нет.

>>1513424
Можешь откликнуться на вакансию - пришлют тестовое. Даже если ты его не сможешь сделать/сделаешь плохо, то для тебя это какой никакой а опыт. Возьмут - хорошо, не возьмут так хоть практики прибавиться.
Аноним 2019/11/04 22:20:04  №1513474 100
>>1513410
>Нет смысла быть человеком-оркестром. Стоит грамотно выбирать то, что учить.
А я считаю, что поковырять стоит всё что интересно и дотянешься, но при этом иметь собственный стек в котором сечёшь.
Аноним 2019/11/05 06:08:48  №1513557 101
Как решается эта задача?

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

1×1 = 1
2×2 = 4
...
9×9 = 81

Я не понимаю вообще эти ебаные циклы.
Это какая-то дичь.
Аноним 2019/11/05 07:09:27  №1513572 102
>>1512787
назови мне библиотеку,где сокеты норм работают в пхп?
Аноним 2019/11/05 07:57:13  №1513600 103
>>1513557
Скачай видеоурок какой-нибдуь и посмотри. Или на ютубе. Всё станет ясно и понятно.
Советую именно так делать. Если всё ещё не поймёшь - гугли как сделать такой цикл (таблица умножения). Но не копируй, а разбери по строке, что происходит и почему прибегаю к туториалам, которые ты прошёл.
Аноним 2019/11/05 08:10:43  №1513610 104
>>1511149
То у одного регнуться нельза, у другого дебильные ограничения на название группы, у кого-то код отформатирован так, будто копипейстом за одну ночь настрочено.

Вы там своё говно вообще тестируете?
Аноним 2019/11/05 09:26:08  №1513665 105
>>1513600
Сможешь ли ты в спойлере хотя бы показать как?
Логика от меня начисто ускользает.
Я третий день сижу за этим и похоже зря теряю время.
Аноним 2019/11/05 09:42:08  №1513680 106
>>1513665
Если надо что-то совсем плюшевое, то:
for I>N
{
echo "<tr>$X</tr><tr>x</tr><tr>$X</tr><tr>=</tr><tr>pow($X)</tr>"
}
Аноним 2019/11/05 09:56:51  №1513693 107
>>1513680
Вообще нихуя не понял.
Слишком сложно.
Слишком ебануто.
Я всё, всем удачи.
Аноним 2019/11/05 09:58:09  №1513695 108
Аноним 2019/11/05 10:09:37  №1513703 109
>>1513693
чувак так далеко не уедешь. Расскажи как ты пытался решить эту проблему, какой код писал, что именно было не понятно.
Аноним 2019/11/05 11:08:15  №1513746 110
>>1513695
а почему говорят,что лучше нода с сокетами?
Аноним 2019/11/05 11:31:25  №1513761 111
>>1513693
Ты совсем что ли тупенький?
for ($i=0;$i<9;$i++){
}


Дальше сам разбирайся
Аноним 2019/11/05 11:32:54  №1513762 112
>>1513703
Я знаю что не уеду.

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

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

$a =1
$b = $a*$a;

for ($a = 1; $a < 10; $a++) {
echo "$a X $a = $b";
}

А надо чтобы выводило:
1Х1 = 1
2Х2 = 4
3Х3 = 9

И так далее до 10.

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

По моему пиздец какой неудачный пример и резкий скачок в сложности там.

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



Аноним 2019/11/05 11:36:11  №1513763 113
>>1513762
for ($b=1; $b<=9; $b++) {
for ($i = 1; $i <= 9; $i++) {
echo "$b $i = " . $b $i . "<br>";
}
}

Или
for ($i = 1; $i <= 9; $i++) {
echo "$i $i = " . $i $i . "<br>";
Аноним 2019/11/05 11:36:50  №1513764 114
там знак умножения проебался, сам вставишь >>1513763
Аноним 2019/11/05 11:37:53  №1513766 115
>>1513762
Просто не твоё.
В IT много разных профессий - попробуй что-нить более понятное и не задротное.
Аноним 2019/11/05 11:38:11  №1513767 116
>>1513762
>$a =1
>$b = $a$a;
Не нужно

>for ($a = 1; $a < 10; $a++) {
правильно
>echo "$a X $a = $b";
неправильно.
echo "$a X $a = " . $a
$a;
Аноним 2019/11/05 11:39:29  №1513770 117
lsyfyl.jpg (30, 600x600)
600x600
>>1513410
> Нет проблемы выучить yii, laravel и symfony ибо в целом они все mvc
Тащемта то, что называется mvc в yii и (частично) laravel - это хуита, которую перенесли из старых GUI-шных приложений и не адаптировали нормально под веб.
Ну и в принципе, 99 погромистов из 100 понимают "модель" как слой работы с базой данных, "контроллер" как место, где нужно писать (бизнес) логику, а "вьюху" как место, где нужно принтить данные.
Что, естественно, не так.
Аноним 2019/11/05 11:40:29  №1513772 118
>>1513763
>>$b<=9;

А зачем тут равно?

Один знак < меньше достаточен только 10 указать и явно все окончится 9кой.
Аноним 2019/11/05 11:41:19  №1513773 119
>>1513770
>Что, естественно, не так.
А как? Ворвался - отвечай на свой ответ чтобы не быть баттхёртом.
Аноним 2019/11/05 11:49:11  №1513780 120
>>1513772
Потому что мне захотелось так сделать?
Аноним 2019/11/05 11:56:54  №1513785 121
>>1513780
Я думал что за каждым символом стоит большее понимание чем просто: захотелось.

Аноним 2019/11/05 11:58:55  №1513789 122
>>1513785
Ты хули доебался, долбоёбина?
Ну блядь, сука, мне надо числа от ОДНОГО до ДЕВЯТИ выводить, я и сделал цикл от ОДНОГО до ДЕВЯТИ, а не десяти. Иди на хуй, чёрт ебаный
Аноним 2019/11/05 12:00:42  №1513790 123
>>1513789
Если стоит просто < 10, 9 и будет последней цифрой и 10 не выведет никак.

В остальном твой бомбаж как бы говорит что ты говно.
Аноним 2019/11/05 12:02:44  №1513792 124
>>1513790
>послал выблядка на хуй
>анон считает, что это бомбёж а не призыв к действию
Выключай свои маняфантазии и иди работать.
Аноним 2019/11/05 12:03:49  №1513794 125
image.png (54, 1276x680)
680x1276
Пытаюсь получить бесплатный домен tk на freenom.com, и не получается. Они прикрыли лавочку, или я где-то туплю? Где ещё можно получить домен бесплатно? Мне любой, лишь бы его можно было прикрутить к уже купленному vps.
Аноним 2019/11/05 12:07:54  №1513798 126
>>1513792
Я понял что ты тот шизик что тут срет.
Аноним 2019/11/05 12:21:30  №1513810 127
layers.jpg (48, 600x450)
450x600
>>1513773
Если вкратце, то:

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

Сейчас в вебе нужен слой транспорта/интерфейсов (сокеты/http/grpc/*), вызывающий слой приложения (содержит юз-кейзы), который уже вызывает конкретный сценарии из модели и связывает их в конкретный юз-кейз.
При этом оно всё базируется на инфраструктурном уровне, который уже содержит реализации работы с бд (к примеру, в виде репозиториев) и прочее.

Там много всего и ещё больше тонкостей, читай про clean architecture, hexagonal architecture и domain driven design.
Аноним 2019/11/05 13:06:20  №1513848 128
>>1513810
Ты как-то нахватался всего по верхам.
Ерунду написал.
Аноним 2019/11/05 13:41:24  №1513872 129
Аноним 2019/11/05 13:52:46  №1513881 130
Знаете, лично я не понимаю, почему ВСЮ логику сейчас принято пихать в модель. А в контроллере остаётся только передаточное звено. "О, юзер хочет сделать вот это - пнём вот этот метод модели и отдадим юзеру результат!". Я не вижу, чем этот подход лучше, чем толстый контроллер. Ну, кроме "стильно-модно-молодёжно".
Аноним 2019/11/05 14:07:05  №1513891 131
>>1513881
Покажи кодом - что сам написал на эту тему. Кукарекать в треде любой ждун умеет.
Аноним 2019/11/05 14:08:34  №1513893 132
>>1513881
Всем. Тестируемость, гибкость, расширяемость.
Аноним 2019/11/05 14:12:28  №1513896 133
>>1513881
>толстый контроллер
Лапша не нужна.
Аноним 2019/11/05 14:27:23  №1513905 134
>>1513891
А это уже переход на личности. Давай так: я мимокрокодил и вообще не кодил ничего, окей? Ты в любом случае круче меня.
>>1513893
>>1513896
Вот хоть убей не вижу профита.
Аноним 2019/11/05 14:28:12  №1513906 135
>>1513905
>не вижу профита
Так это твои проблемы.
Аноним 2019/11/05 14:47:08  №1513915 136
>>1513905
>я мимокрокодил и вообще не кодил ничего
А какой тогда смысл с тобой вообще время терять? Притащил статей чтобы срач начать, а сам отношения к разработке не имеешь.
Иди-ка ты в/б, дружок.
Аноним 2019/11/05 15:11:29  №1513923 137
Анишки, пока вы сретесь, может кто подскажет:
имеет место проблема с кешированием сайта, сделанного на slim
Суть проблемы - делается урл типа /delete/2
по нему система удаляет файл с айдишником 2, обычный анлинк. Проблема в том, что к концу дня этот урл перестает удалять файл.
НО, если я очищаю кэш браузера, то урл начинает работать и срабатывает еще пару раз. А потом по-новой очищай. Вопрос - кто-нибудь сталкивался с подобным? Куда хоть копать? В сторону браузера? В сторону хостера (бегет)? В сторону слима? Я добавил в шапку сайта заголовок с ноу-кэш. Не помогает. Смотрел в трех разных браузерах - везде одинаково.
Аноним 2019/11/05 15:43:08  №1513950 138
>>1513923
>Куда хоть копать?
Я бы копал в сторону хттп-заголовков на запрет кэширования.
Аноним 2019/11/05 15:43:26  №1513951 139
>>1513950
А, в глаза ебус. Сорян.
Аноним 2019/11/05 16:34:59  №1513977 140
>>1513848
Ты или по пунктам критикуй, или не возникай. И да, сам попробуй уложить архитектуру приложений в 2 абзаца.
Ну и да, если совсем кратко:
- "модель" - это модель предметной области, содержит бизнес-логику
- "контроллер" - это то, что нужно делить на две части, собственно, "хендлер" (вычитывает нужные данные из запроса) и "юз-кейз" (валидирует данные, вызывает модель)
- "вьюха" не нужна совсем.
Аноним 2019/11/05 16:38:09  №1513979 141
>>1513810
>Соответственно, модель ничего не знает про то, на чём она работает, не знает ничего про базу данных
Минуточку, а скул-запросы куда лепить? В контроллер? Или во вью? Куда их ещё-то, как не в модель? И как можно написать запрос, который будет ничего не знать, в какую базу он полезет: в оракл или в майскул?
Аноним 2019/11/05 16:41:53  №1513980 142
>>1513979
в сервис
контроллеру насрать, каким образом получается нужный набор объектов из модели
он только говорит "а дай-ка мне такие объекты"

потому что завтра ты поменяешь БД на обращение к микросервису, и чо, будешь контроллер еще переписывать?
а там и до гуя дойдешь?
Аноним 2019/11/05 16:52:00  №1513989 143
>>1513980
Анон дело говорит. Ты описываешь интерфейс, скажем:
interface UsersRepository {
public function Load(int $userId);
public function Save(int $userId);
public function LoadByName(string $name);
}
И используешь его в сервисах и юз-кейзах. А этот интерфейс уже может реализовывать MysqlUsersRepository, который и делает запросы.
Аноним 2019/11/05 17:24:18  №1514006 144
swoole для реал проэетов пойдет или ну его наз и поставить ноду?
Аноним 2019/11/05 17:24:53  №1514007 145
Аноним 2019/11/05 17:29:34  №1514009 146
>>1513977
>по пунктам критикуй
Пережовывали сто раз уже на форумах. Нах ты сюда это принёс, болезный? Ни кода, ни своих наработок - только чужие статьи и чужие мысли.
Кого критиковать, тебя? Ты никто вообще.
Аноним 2019/11/05 17:30:03  №1514011 147
>>1514006
Хз, я не пробовал, но с большой настороженностью отношусь к любым таким надстройкам над php. Может и норм, но я бы всё равно ноду взял.
Аноним 2019/11/05 17:32:13  №1514013 148
>>1514011
ну я про то же.асинк-это не про пых
Аноним 2019/11/05 17:35:48  №1514015 149
>>1513980
>потому что завтра ты поменяешь БД на обращение к микросервису, и чо, будешь контроллер еще переписывать?
Зачем контроллер? Модель. А "сервис" - это уже не MVC же получится. Я что-то запутался в вебе образца 2019.

Олсо, за это "мы делаем сайт визитку, но вдруг завтра он станет порталом на микросервисах и оракловой базой в распределённом кластеере? Давайте предусмотрим всё!" известный всем нам товарищ рекомендовал в своей книге (обязательной для изучения любому программисту) пиздить ногами.
Аноним 2019/11/05 17:39:51  №1514018 150
>>1514015
Что за книга? Прям увожением проникся к товарищу.
городить абстракции на абстракции только потому, что так можно, и может пригодиться когда-нибудь - признак дегенерата от программирования
Аноним 2019/11/05 17:45:31  №1514020 151
>>1514018
>Что за книга?
Честно говоря, я забыл и как его звали, и как называлась книга. Не то Кнут, не то Страуструп, а может ещё кто-то из их компании. Постоянно мелькает эта книга, а я постоянно забываю название.
Аноним 2019/11/05 17:57:30  №1514028 152
Как делать задачу?
Клавиша shift
Если ты общаешься в интернете, то, наверно, заметил, что у некоторых людей есть дурная привычка, вопреки всем правилам и нормам русского языка, начинать все предложения (и даже иногда имена) с маленькой буквы. Поскольку никакие аргументы на таких людей не действуют, давай исправим их текст с помощью языка PHP.

Не знаю как составить регулярное выражение для разделения текста на строки. Не получается впихнуть пробел в такое выражение '/[.!?]+/u' .

http://sandbox.onlinephpfunctions.com/code/943693eba4c9584583afc1fa406796417445212a
Аноним 2019/11/05 18:01:04  №1514030 153
>>1514020
Ну я понел примерно.
Помню первые парсеры писал и с ООП игрался - наворачивал одно на другое вечерами - библиотеку на фасад, с тором чтоб и многопоточно, и по SOLID всё надо красиво. Потом заметил, что я третий день пишу ёбань и ни строчки конкретной логики, и написал за полтора часа всё что надо. Тогда и понятно стало, что тормозить надо все эти фантазии и писать конкретику, иначе дроч один.
Аноним 2019/11/05 18:01:21  №1514031 154
>>1514015
Надо, Федя. Надо. Это за бабло заказчику извлоль быстрее, некогда проектировать и так сойдет. Когда учишься нужно айл ду май бест всегда делать. Вот наспупит реальный случай, когда сеньор-помидор психанет и нахер уволится, и придется тебе придумывать архитектуру 1000 человекочасов. А ты обосрешься и будешь дальше всю жижнь свои мокрописьки писать. Оно конечно понятно что 90% веба - это мокрописки. Но хочедца расти над собой.
Аноним 2019/11/05 18:07:12  №1514035 155
>>1514030
Ты еще Энгельса с Марксом покритикуй, мол чо там думать, все взять и поделить.
Аноним 2019/11/05 18:12:21  №1514045 156
>>1514035
Когда котлеты будут, товарищ? Обещали ближе к выходным, а уже среда.
Аноним 2019/11/05 18:20:32  №1514051 157
>>1514045
- Дарья, когда котлеты будут?
- Через десять минут Филипп Филиппович.
- Молодой человек, изволите обследоваться, приходите после обеда к трем часам.
Аноним 2019/11/05 18:21:57  №1514053 158
>>1514051
Молодой человек, помогите пожалуйста
>Не получается впихнуть пробел в такое выражение '/[.!?]+/u'
Аноним 2019/11/05 18:25:40  №1514058 159
Аноним 2019/11/05 18:27:44  №1514060 160
Объясните нюфане, если компания хочет создать приложение и собирается использовать фреймворки, то она берет фреймворк для пхп вроде ларавеля ИЛИ она берет фреймворк для джс вроде реакта ИЛИ она берет и то, и другое и пытается их помирить?
Аноним 2019/11/05 18:33:09  №1514064 161
>>1514060
Она берет фреймворк типа битрикс и берет джуна типо знающего жиквери и пытается их померить
Аноним 2019/11/05 18:35:00  №1514065 162
>>1514058
/[.!?]+/u =====> /\s/u
Разбивает теперь по словам....
Возможно я неправильно описал проблему.
С предыдущей маской /[.!?]+/u получается это
__________________________________________________________
array(3) {
[0]=>
string(11) "ну что"
[1]=>
string(47) " не смотрел еще black mesa "
[2]=>
string(86) "я собирался скачать ,но все как-то некогда было"
}
__________________________________________________________

Вроде бы всё ок, но остаются пакостные пробелы в начале и конце строки... Как бы их убрать?
Аноним 2019/11/05 18:35:16  №1514067 163
>>1514064
> померить
Школьник иди нахуй, борда для 18+.
Аноним 2019/11/05 18:37:01  №1514071 164
какая у ларки производительность в приеме запроса и отдаче странички?
Аноним 2019/11/05 18:37:12  №1514072 165
>>1514067
Я хател напесать "помереть" извенити
Аноним 2019/11/05 18:52:21  №1514102 166
Аноним 2019/11/05 18:54:01  №1514105 167
>>1514067
>борда для 18+
Тематика вроде для всех. Обычный форум в общем-то, только анонимный.
Аноним 2019/11/05 18:55:08  №1514109 168
.png (4, 904x22)
22x904
Аноним 2019/11/05 18:57:41  №1514115 169
image.png (101, 1032x727)
727x1032
>>1514109
А это нафига тогда запилили?
Аноним 2019/11/05 19:01:41  №1514118 170
>>1514115
Шоб ты долго не искал самое важное
Аноним 2019/11/05 19:09:36  №1514126 171
>>1514015
Понятно, что для сайта-визитки сложного бекенда не надо.
Но:
1) Не все пишут сайты-визитки;
2) Софт имеет свойство усложняться, а не упрощаться со временем;

Я приведу аналогию с канализационной системой и прочей инфраструктурой. Проектируешь ты такой городской район и тебе говорят, что там 3.5 хижины находятся. И ты бросаешь им провода с соседнего здания, пару труб - и все счастливы.
А потом появляется ещё хижина, ещё одна, домик, домик, магазинчик, маленький заводик, офисное здание, блядский сраный небоскрёб и статуя огромного кота.
И если ты в какой-то момент (а может даже сразу) не сделал нормальную развязву, систему распределения и так далее, то в итоге всё превратиться в тайские коммуникации (https://om-ek.ru/image/cache/catalog/photo/vxTa4HosZ4w-800x600.jpg).
Именно для этого и придумали архитекутуру, методы, паттерны и так далее - как набор инструментов и способов выстраивать инфраструктуру так, чтобы в итоге не самоудавиться случайно.
И говняный MVC при усложнении логики - это отличный способ навернуть говнеца, ещё говнеца поверху и запечь в совершенно нечитаемый дерьмонолит, разработчики которого уволятся или умрут от ужаса, фичи будут пилиться годами, вызывая каскады регрессий и всё такое.
Так что не будь дауном, применяй паттерны и инструменты с умом и не ври мне тут, что "не нужно и всё и так работает", всегда после таких слов я заглядывал в код разработчика и видел кромешный пиздец.
Нормально делай и нормально будет.
Аноним 2019/11/05 21:34:17  №1514268 172
>>1514028
Разбей исходную строку на предложения. В них сделай заглвные буквы и склей. Чтобы регулярки подбирать удобно пользоваться этим https://regex101.com

Аноним 2019/11/05 21:39:46  №1514275 173
>>1514065
А, увидел. Вообще способов много можно придумать, сам не помню каким делал. Но сейчас первое что в голову приходит - разбить строку на предложения, потом предложения на слова. И все это склеить. Но мне кажется можно сделать как то легче с помощью регулярок
Аноним 2019/11/06 08:56:45  №1514439 174
>>1514126
>Нормально делай и нормально будет.

Что почитать чтобы сразу нормально делать на пхп?
Аноним 2019/11/06 09:14:24  №1514446 175
>>1514439
Для начала, использовать онли симфони либо ларавел, если мало опыта. yii и cms-ки - это архитектурный ад.
Во-вторых, прочитать гайды, советы и бест практики по выбранному фремворку.
В-третьих, выше уже писали. Изучать clean architecture, hexagonal architecture и ddd, а затем их реализации на php, лучше на конкретном фремворке. Лучше пока ещё ничего не придумали.
Аноним 2019/11/06 10:08:45  №1514480 176
>>1514446
>используйте симфони если мало опыта
Вот этого не слушайте - он бредит.
Аноним 2019/11/06 10:16:16  №1514485 177
>>1514480
Ты в глаза долбишься что-ли?
Симфони, либо ларавел, если мало опыта.
Много опыта -> симфони
Мало опыта -> ларавел
Аноним 2019/11/06 15:57:19  №1514749 178
>>1514446
Интересно где найти контору, которая делает все на чем то одном. Как правило это студия где делается все и на всем, от wordpress до laravel. Или ДСах это норма?
Аноним 2019/11/06 19:11:09  №1514958 179
Привет если кто работал с битриксом а в особенности их рест апи сочуствую

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

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

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

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

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

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

Наличие всяких жидких штучек вроде серверного батчинга с референсами через по сути обращение к серверным php переменным не сильно в этом помогает, мы даже думаем тупо не поддерживать такое.
Аноним 2019/11/07 01:59:34  №1515134 180
cat.jpg (49, 1242x968)
968x1242
>>1511146 (OP)

САП, двач, нужна помощь.

У меня есть три класса с профессиями. Задача: Создать страничку, где с помощью <form> и <select> дать пользователю возможность выбрать профессию, ajax запросом отправить ее на сервер, где нужно получить список полей (свойств класса), сформировать под каждое из них <input> и снова отправить на сервер, где создать выбранный объект класса и записать информацию о создании в лог.
Если пользователь изменит профессию, то список полей должен обновиться.

Что у меня получилось:
1. Создать классы, унаследоваться, разобраться с __constructor, __get и __set и все такое;
2. Создать класс-логгер;
3. Разобраться с запросами и ответами, манипуляцией dom с помощью jquery, добавлением, удалением и обновлением элементов страницы.

Что у меня не получается:
Разобраться с тем, как создать объект на основании информации их $_POST['prof'].

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

$object = new $_POST['prof']; - так объект создать нельзя

get_class_vars($_POST['prof']); - так нельзя посмотреть методы класса

get_class_vars($_POST['prof']); - так нельзя посмотреть методы объекта.

Я понимаю, что это бред, так как я получаю в $_POST['prof'] строку, а не класс. Но не понимаю, как тогда мне сассоциировать с этой строкой класс, как на ее основании создать объект и заполнить его данными.

К задаче есть подсказка:"Что бы получить список полей (то есть список всех свойств класса профессии), можно создать специальный метод, который будет получать массив всех свойств при помощи функции https://www.php.net/manual/ru/function.get-object-vars.php.
Например, для водителя это будет: Имя, возраст, зарплата, стаж, категории, марка личного автомобиля".

Но мне она особо не помогает, так как я концепцию как таковую не оч понимаю.

Двач, очень прошу, объясни в чем тут дело? Как правильно?

Аноним 2019/11/07 03:20:27  №1515143 181
>>1515134
У тебя же есть конструктор, почему бы тебе не закинуть в его конструктор $_POST?
Аноним 2019/11/07 03:39:31  №1515146 182
>>1515143
Три разных класса же, я же не знаю заранее какой класс выберет пользователь.
Аноним 2019/11/07 05:18:06  №1515166 183
>>1514749
Зависит от конкретной конторы и её типа. Если тебя интересуют аутсорсеры, то те, которые подешевле, берутся за всё подряд. Те, которые подороже, могут себе позволить крупных закачиков и какую-никакую архитектуру, они так и так будут тяготеть к нормальным фреймворкам. Но тут всегда нужно очень внимательно смотреть на саму контору, чтобы в ад не попасть, даже крупняк бывает очень херовый и лучше бы в такой не попадать.
А у продуктовых контор основной продукт уже на чём-то написан, можно хоть на собеседовании об этом спрашивать.
Аноним 2019/11/07 05:37:52  №1515171 184
>>1514485
> симфони
медленная и усложненая система
Аноним 2019/11/07 06:13:23  №1515179 185
>>1515166
Ну у меня в городе из контор только пару контор берущихся за любую работу как я понимаю (любой регион и любая сложность). Я вот начитался, и теперь боюсь идти, ибо скорее всего работать придется со всем cms/yii/laravel
Аноним 2019/11/07 06:34:12  №1515186 186
>>1515171
Современный, хорошо задизайненный набор компонентов. Лучше в мире php пока не придумали.
Аноним 2019/11/07 06:34:48  №1515187 187
>>1515179
Ну упрашивай и договаривайся, чтобы на laravel работать тогда.
Аноним 2019/11/07 07:27:13  №1515215 188
Цикл в цикле это говнокод ?
Аноним 2019/11/07 07:43:58  №1515220 189
>>1515215
Смотря когда. Иногда без него не обойтись, но по возможности лучше так не делать, конечно.
Аноним 2019/11/07 08:20:10  №1515240 190
>>1515134
>ajax запросом отправить ее на сервер, где нужно получить список полей (свойств класса), сформировать под каждое из них <input> и снова отправить на сервер
Мне кажется это лишнее, лучше сразу их куда-нибудь скласть и при смене пункта в селекте рисовать нужные инпуты.
Аноним 2019/11/07 08:44:40  №1515253 191
>>1515134
Если задача - просто дать пользователю возможность менять профессию, то городить что-то со свойствами классов изначально ошибочно.
Делаешь класс UserStorage с методами add и get, делаешь класс ProfessionStorage с теми же методами add и get, делаешь класс UserProfessionStorage с методами addForUser и getForUser.
(Чтобы не заморачиваться с бд, то каждый из классов, может писать и читать из файлика, это изи пишется)
так что твоё действие "получить для юзера профессию" будет выглядеть, как:
$profId = $userProfs->getForUser($user->id); // возвращает id профессии или null.
if ($profId !== null) {
$prof = $professions->load($profId);
// тут делаешь с профессией, что хочешь.
}

Аноним 2019/11/07 09:19:48  №1515272 192
>>1515146
Фабричный метод тебе в помощь.
Хотя, скорее всего, ты неправильно архитектуру пилишь с ООП это надо продумывать.
Аноним 2019/11/07 09:35:09  №1515284 193
>>1515253

Анончик, ты такой умняш, спасибо тебе, чувствую себя черствым хлебушком.

>>1515272

Такие были условия задачи. Не уверен, что там подразумевались паттерны, но постараюсь разобраться, спасибо тебе.
Аноним 2019/11/07 11:28:35  №1515372 194
Посаны, разбираюсь с ООП.
Собственно, такие вопросы: https://ideone.com/8Xfm05
1. Есть price и weight. Если я хочу с ними работать, например с учётом ндс цену вывести, то в каком виде и где я должен рассчитывать ндс? Без разницы куда вставить расчёт ндс? Внутри product?
2. функции - являются методами, верно?
3. Если я хочу создать отдельный метод, в котором будет выводиться только цена и ндс, то надо просто создать второй метод с нужными данными, после чего вызвать его? Нужно ли мне ещё один констракт создавать для этого, потому что при создании new Product у меня будут значение кроме ндс и цены, такие как вес, название и пр.?
Аноним 2019/11/07 11:29:53  №1515375 195
>>1515372
>3.
Так, с 3им разобрался, нужно указывать все значения констракта, просто новый метод не будет их выводить. Тупанул.
Аноним 2019/11/07 11:39:00  №1515384 196
>>1515372
1. Ты неправильно понимаешь "суть" (тм) ООП. ООП - это не про то, чтобы нафигачить классов, это про то, чтобы представлять код в виде объектов (сервисов), каждый из которых выполняет свою работу и по необходимости обменивается сообщениями (вызовами методов) с другими. Всякие инкапсуляции и наследования - это уже частность, следствие объектности.
Также прочитай про SOLID, в частности про принцип единой ответственности.
Грубо говоря - если у тебя есть user, то это просто объект для хранения данных о пользователя, и всё, кроме геттеров и сеттеров там ничего держать не нужно.
Если тебе нужно считать цену - то тебе нужен PriceCalculator, который берёт, скажем, продукт и возвращает посчитанную цену для него.
Если тебе нужно вывести что-то куда-то (запринтить объект в виде html в output), то тебе нужен Renderer, View или что-то такое.

Короче, на каждую область логики тебе нужен свой сервис, не смешивай всё в одном.

2. Метод - это функция, исполняемая в контексте или конкретного объекта (может обращаться к его свойствам), или класса (если метод статический).
Аноним 2019/11/07 11:57:56  №1515397 197
images.jpeg (5, 225x225)
225x225
Анончики, кто работал с яндекс облаком? Не могу разобраться с api для загрузки объекта в хранилище. Может кто помочь?
Аноним 2019/11/07 12:35:47  №1515448 198
>>1515384
>1
Ух. Понятнее не стало. Т.е. мне нужно создать метод подсчёта цены, так? Т.е. должна быть функция подсчёта цены, к которой я буду обращаться в будущем.

Алсо, создам я, например, функцию прайскалькулятор, которая будет подсчитывать цену с ндс. А после чего я её просто засуну в функцию printInfo, верно?
Блин, чё-т сложно и непонятно.

Блин-блинский. Вообще ниче не понимаю. Пойду дальше туториалы смотреть.
Аноним 2019/11/07 12:53:54  №1515478 199
А знаете ли вы, что строка в php - это не обязательно последовательность букв? С таким же успехом строка в php может быть цепочкой произвольных байтов. И если именно с такой точки зрения рассматривать строки, то можно без всяких проблем совершать в php байтовые операции.
Аноним 2019/11/07 13:15:07  №1515508 200
>>1515448
Ну, общую суть ты уловил.
Ни один твой клас не должен делать всё, он должен исполнять только свою конкретную работу, не больше. Представь свой код в виде конвейера, в котором каждый твой класс - это или объект, лежащий на ленте, или робот, которой чего-то там делает над объектом, лежащим на ленте.
(собственно, код - это и есть конвейер, он исполняется по одной инструкции, сверху вниз, отдельными "операторами" - функциями, ну ты понял)
Соответственно, твой класс Product задизайнен неверно, потому что у него откуда-то нарисовался метод printInfo(). А твой класс Product, очевидно, хранит информацию о продукте. Всё, если тебе нужно принтить продукт - создавай productPrinter либо Renderer, что-то такое.

Твой код должен выглядеть условно как-то так:
Роутер (принимает запросы и вызывает коллбек) -> Хендлер (получает объект запроса и вызывает нужный сценарий из бизнес-сервиса) -> Бизнес-сервис (описывает сценарии типа "добавить продукт в корзину", "оплатить заказ", вызывая специализированные сервисы по необходимости) -> Инфраструктурные сервисы (база данных, калькуляторы, счётчики, любая фигня) -> начинаем возвращаться назад -> Бизнес-сервис (всё рассчитал, сохранил, возвращает ответ) -> Хендлер (получил от бизнес-сервиса ответ, прокидывает его в сервис, отвечающий за отображение ответа) -> Отображатель (или View, выводит или возвращает какие-то данные в каком-то виде, например продукты в json или ордеры в html)
Аноним 2019/11/07 13:41:41  №1515531 201
>>1515508
>Соответственно, твой класс Product задизайнен неверно, потому что у него откуда-то нарисовался метод printInfo(). А твой класс Product, очевидно, хранит информацию о продукте. Всё, если тебе нужно принтить продукт - создавай productPrinter либо Renderer, что-то такое.
Это весьма сомнительное умозаключение. Сделать для дебага функцию printInfo у продукта - это совсем не такая уж плохая идея.
А вообще не плохо было бы сделать сразу несколько классов для продуктов:
1) Продукт как модель, хранящий данные продукта и работающий с базой данных.
2) Продукт как View, отображающий продукт тем или иным образом. Таких View может быть разумеется несколько.
3) Контроллер для продукта, который получает запросы пользователя, выбирает нужный продукт, объединяет нужный продукт с нужной View и выдаёт ответ пользователю.
Аноним 2019/11/07 13:51:29  №1515543 202
Аноним 2019/11/07 13:56:50  №1515550 203
>>1515531
Это у тебя сомнительное умозаключение. У него в printInfo понаписаны `<div style='border: {$this->border}; ` и прочее, это явный рендеринг уже. Да и принтится любой объект элементарным print(serialize($object)), так что специальные методы в принципе не нужны.

Аноним 2019/11/07 14:16:28  №1515570 204
>>1515550
Ну тогда ты прав конечно, html не место в классе продукта.
>print(serialize($object))
Не читабельно получится.
Вместо этого нужно использовать print_r($product) или var_dump($product). А действительности лично я на практике применяю функцию print_r_die($object) и var_dump_die($obejct)

Функция print_r_die() выглядит следующим образом:

function print_r_die($object) {
ob_clean();
print_r_die($object);
die();
}

Функция var_dump_die выглядит аналогичным образом.

В итоге, если нужно отдебажить какой-то объект, я могу в любом месте кода запустить print_r_die() и посмотреть строение любого объекта или массива.
Аноним 2019/11/07 14:19:44  №1515573 205
>>1515570
function print_r_die($object) {
ob_clean();
print_r($object);
die();
}

Самофикс
Аноним 2019/11/07 14:20:18  №1515574 206
>>1515570
Это в любом случае костыли. С момента создания xdebug надобность принтить объекты практически исчезла, потому что ты смотришь непосредственно на данные в памяти.
Аноним 2019/11/07 14:25:26  №1515578 207
>>1515574
Мне не нравится дебажить при помощи xdebug. И я как дебажил принтами, так и буду продолжать.
Аноним 2019/11/07 16:29:32  №1515691 208
>>1515578
Для меня это звучит, как "мне не нравится ездить на автомобиле, буду как привык, на лошадях".
Дебаггеры не просто так придумали.
Прочем, как только ты окажешься на достаточно сложном проекте - поймешь. Ох, как же я как-то в своё время заколебался дебажить логику процессинга заказов на одном очень крупном интернет-магазине.. 15 шагов у дерева статусов, нетривиальная логика переходов, куча условий.. Мммм, мякотка.
Аноним 2019/11/07 16:51:14  №1515719 209
>>1515543
Пиздос. Ваще нихуя не понятно.

Мне пока элементарные вещи не ясны.

Вот как пример, я создаю вторую функцию getPrice
она должна выглядить так?
public function getPrice(){
$NDS = ($price/100*18)+$price
}
А что мне с ней в итоге делать? Куда её записывать/вставлять и главное как?

Во первых, мне надо, чтобы она выводилась. Значит мне надо создать public $NDS. После чего её надо добавить в констракт, чтобы она существовала. И только после этого добавить её в принт инфо в виде -
<p>{$this->NDS}</p>

Это всё так будет работать или нет?

К тому же, по скольку мы добавили её в констракт, $test = new Product(Запросит здесь NDS указать, а как я её тут укажу?.. 'getPrice()'?)
Аноним 2019/11/07 16:52:44  №1515722 210
>>1515543
Точнее строение понятно, но вот что ты там понаписал...
Аноним 2019/11/07 16:54:13  №1515724 211
Сори, что совсем тупые вопросы задаю. Просто я без явного примера использования не могу самостоятельно допердолить, как подобное реализовывается. (Ну как не могу - мой максимум то, что я расписал выше, но это всё теоретически и скорее всего неправильно)
>>1515719
Аноним 2019/11/07 16:59:08  №1515725 212
>>1515719
Мне в голову пришла совершенно тупая мысль: почему бы тебе не вывести логику расчёта НДС в субд?
Аноним 2019/11/07 17:00:59  №1515729 213
three-toed-sloth.jpg (65, 750x585)
585x750
Аноним 2019/11/07 17:02:43  №1515733 214
Аноним 2019/11/07 17:07:29  №1515738 215
>>1515733
Друже, я делаю элементарные задания. Если ты про фигню типа sql, то я до такого ещё не дорос.
Мне просто бы понять, как правильно сделать это и дальше по примеру этого работать с остальными заданиями до новых вопросов. >>1515719
Аноним 2019/11/07 17:14:37  №1515747 216
>>1515719
Давай начнем с того, что ты нормально вопрос сформулируешь. Что хочешь сделать и что не понятно.
Аноним 2019/11/07 17:30:50  №1515760 217
>>1515747
Я же всё вроде расписал.
>>1515372
>https://ideone.com/8Xfm05
Вот тут вот оригинал кода. Хочу добавить функцию расчёта ндс, чтобы цена с ндс выводилась, но я точно не уверен, как это делается, потому что со всеми этими паблик/констрактами и прочем создалась путаница в голове и я не совсем понимаю строение кода и как его применять.
Собственно, все вопросы которые у меня возникли находятся именно в этом посте >>1515719
Аноним 2019/11/07 18:40:17  №1515806 218
1013177221.jpg (38, 445x650)
650x445
>>1515760
Ну и зачем ты пытаешься лезть в ООП, если не понимаешь как оно работает. Посмотри на ютубе видос про создание инернет магазина, блога и тд или почитай пикрелейтед.
Аноним 2019/11/07 18:45:07  №1515816 219
>>1515806
Большое спасибо за помощь, можешь дальше не отвечать на поставленные вопросы!

Пиздец, каждый вопрос в треде - за место внятного ответа на простые вопросы говорят 'иди читай то, иди читай сё', или предлагают какую-то невъебенно-сложную залупу или же вообще отвечают не по теме, предлагая какие-то базы и прочую хуйню.
Я уже прочитал несколько статей и посмотрел гайды и мне непонятны очевидные вещи, потому что я НЕ ВИДЕЛ как эти вещи решаются на пример. Поэтому я жду ответа правильно ли я понял, как это делается или же что-то нужно изменить/что-то я не понял/делается как-то иначе > >>1515719
Аноним 2019/11/07 18:47:16  №1515820 220
Реально, в чём проблема написать 'ты понял правильно, делается так так и так, а в этом случае ты понял не правильно и делать надо как-то иначе'.
Я сразу вспоминаю тот видос от какой-то пизданутой психиаторши, которая говорит о программистах и которую тут форсили. На фоне происходящего в треде из срачей и пиздежа не по делу кажется, что она не такая уж и пизданутая.
Аноним 2019/11/07 18:56:12  №1515834 221
>>1515820
>Реально, в чём проблема написать 'ты понял правильно, делается так так и так, а в этом случае ты понял не правильно и делать надо как-то иначе'.
Проблема в том, что тут сидят такие же чуваки и им нахуй не впёрлось заниматься твоим образованием.
Ты идиот ваще? Нанимай репетитора и будет он тебе всё расжёвывать, а у нас самообучение в ходу.
Аноним 2019/11/07 18:57:42  №1515841 222
>>1515816
Просто судя по твоему сообщению, у тебя на самом деле отсутствует элементарная база, в этом нет ничего плохого. Я рекомендовал тебе посмотреть видосы на ютубе как раз чтобы ты посмотрел как вся эта хуйня работает на примере. Можешь глянуть канал этого чувака что по ссылке, он неплохо рассказывает про ооп и mvc, как только вникнешь в то что он объясняет, многие вопросы сами по себе отпадут.

https://www.youtube.com/watch?v=ba3M3_Myrqg&t=1s
Аноним 2019/11/07 18:57:49  №1515842 223
>>1515834
Так если они не понимают - нахуя они лезут? Лол.
Я написал - ваше дело ответить по/ не ответить.

Я точно так же тут где могу отвечаю на лёгкие вопросы, где не могу - молчу.
Аноним 2019/11/07 19:01:12  №1515846 224
>>1515841
>у тебя на самом деле отсутствует элементарная база
Дело в том, что я уже много чего прочёл, где-то попрактиковался. Но я такой человек, что если я не понимаю что-то логически, тогда надо просто посмотреть чужой пример. Да и как видишь я выше вроде как расписал план действий исходя из логики, но скорее всего оно не будет работать, потому что я что-то упустил.

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

Просмотрю уже завтра на свежую голову. Может быть найду ответы, спасибо.
Аноним 2019/11/07 19:07:34  №1515850 225
>>1515842
Тебе правильно намекнули - ты в теории плаваешь. Без теории ты проста очередная макака за клавиатурой.

Если не делал задачи из ОПпоста, то не лезь ваще никуда пока.
Аноним 2019/11/07 19:17:31  №1515863 226
>>1515846
>у меня даже не с ООП проблема, а скорее с базой и построением кода при применение ООП
В твоих сорцах не только с ООП проблема. Ты даже данные неправильно выводишь - через эхо никто не выводит разметку уже лет 15 как. За это по яйцам бьют в хороших коллективах.
У тебя именно базы нет.
Аноним 2019/11/07 19:23:19  №1515876 227
Аноним 2019/11/07 19:27:01  №1515878 228
>>1515876
ПХП сделан для того, чтобы безболезненно впиливаться в вёрстку, а у тебя наоборот - вёрстка болезненно всунута в ПХП.
Просто чтобы посмотреть данные, то можно выводить через var_dump. Особенно православно получается, если ещё и xdebug накатить.
Аноним 2019/11/07 19:29:19  №1515880 229
>>1515878
А. Так если я не хочу вардампить, то в чём проблема эко использовать? Ну ладно.
Аноним 2019/11/07 19:30:18  №1515882 230
>>1515880
>Так если я не хочу вардампить
Да не хоти. Только потом не надо обижаться, если тебя макакой кличут и книжки советуют.
Аноним 2019/11/07 19:41:25  №1515889 231
>>1515882
Ну с учётом того, что вар дамп был использован, почему бы не перестать его использовать и вписать эко?..
Аноним 2019/11/07 20:03:48  №1515914 232
>>1515889
Речь не об echo, а о вёрстке в коде.
Перемешивать логику и представление, а потом говорить, что не понимаешь ООП это, как бы, несколько неправда.
Аноним 2019/11/07 20:42:48  №1515946 233
>>1515816
Тебе никто ничего не должен. Учить тебя никто не нанимался. Если что то не получается - ты ОБЯЗАН, как минимум, нормально сформулировать свой вопрос:
"Ребята, помогите. Нужно сделать это вот. Я не понимаю вот тут, пробовал так и сяк, гуглил такое и сякое."
А когда человек заходит и пару постов ноет что у него что то не выходит, при этом считая что ему все должны быстро кинуться и помочь - это свинство.
Не понимаешь ООП? У ОП-а есть хорошая теория и пару задач практических. Понимаешь теорию, но нужна практика? Загугли бля, есть куча практических примеров, реализаций всего и вся. Или ты хочешь чтобы в треде тебе в 1000 раз что то расписывали? Скинули ссылку на видос по MVC - посмотри же его, а не ной что кто то хуевый не ответил на твой вопрос
Аноним 2019/11/07 20:51:09  №1515947 234
>>1515946
>Тебе никто ничего не должен.
Где я написал, что мне кто-то должен? Это вы тут некоторые делаете вид, что чё-т полезное пишите, на деле же из 5 человек только 1 чё-т дельное скажет.

>А когда человек заходит и пару постов ноет
>ноет
Один пост спросил, дальше вы сами говно развезли. И ты кста продолжаешь это делать.

>Скинули ссылку на видос по MVC - посмотри же его, а не ной что кто то хуевый не ответил на твой вопрос
А где я, долбоёб, ною? Я сказал человеку спасибо и сказал, что посмотрю.

Иди короче хуй соси, дебил. Вот о таких анонах-проггерах я ранее и писал. Попробуй ещё раз доебаться до меня, я тебя опущу за каждый пункт как это сейчас сделал.
Аноним 2019/11/07 21:17:10  №1515959 235
>>1515947
Да мне вообще до пизды. Можешь дальше в глаза долбиться и думать что прав. Я тебе написал как это выглядит со стороны. Опустил он меня, лол. Откуда вы такие лезете отпускатели
Аноним 2019/11/07 21:30:00  №1515964 236
>>1515959
Если до пизды, почему под себя сренькаешь?
Аноним 2019/11/07 21:35:14  №1515965 237
>>1515964
Ты же тред засираешь, а не я. Не удивлюсь если ты тот самый шизик-перекатывальщик с JS
Аноним 2019/11/07 21:37:52  №1515966 238
>>1515965
>засираешь тред

>задал простой вопрос
>не получил ответ

))00
Аноним 2019/11/07 21:42:15  №1515969 239
>>1515966
>>задал простой вопрос
Об чём вопрос-то?

мимо
Аноним 2019/11/07 22:09:42  №1515979 240
>>1515384
>если у тебя есть user, то это просто объект для хранения данных о пользователя, и всё, кроме геттеров и сеттеров там ничего держать не нужно.
проиграл с этого эксперта по ООП.
Аноним 2019/11/08 06:54:13  №1516096 241
>>1515979
Ну давай, поясни мне за active record. Заранее знаешь, что я тебе отвечу. Возможно даже Фаулера процитирую, чтобы совсем наверняка.
Аноним 2019/11/08 07:58:32  №1516125 242
>>1515478
Ну и какие идеи у тебя по этому поводу?
Аноним 2019/11/08 09:07:46  №1516156 243
>>1516096
Да зачем же сразу актив рекорд? Хотя бы какие-то преобразования на приватными данными делать - уже методы нужны. Тот же жснонабле интерфейс например.
Аноним 2019/11/08 09:29:18  №1516168 244
>>1516156
Во-первых, ты неправильно понимаешь концепцию приватных полей. На то эти поля и приватные, что они требуются исключительно для работоспособности данного класса и не должны торчать наружу.
Во-вторых, JsonSerializable - это костыль, потому что у объекта может быть много разных представлений в формате json. Самый простой пример - динамический набор полей, какие поля в get-е задал, такие и хочешь получить (есть такая практика в rest api).
Или, к примеру, проверки доступа - такое бывает, что некоторые поля можно возвращать не всегда, например, есть разница, в показе json-представления объекта пользователю (вернув его из апи) или послать этот объект в другой сервис (сервис аналитики, к примеру). Если ты всю эту логику будешь писать в юзере, у тебя получится божественный класс с кучей ответственностей.
Поэтому не путай тёплое с мягким, User - это такой DTO, отвечает за передачу объекта пользователя между компонентами твоей системы, ни для чего более. Для сохранения его в базе тебе нужен будет UserRepository, для представления его в json тебе нужен будет отдельный JsonEncoder или даже UserJsonEncoder (смотри компоненты симфони, которые сериалайзеры, они совсем не зря сделали их именно так или иначе).
Аноним 2019/11/08 09:40:58  №1516178 245
Аноны, у меня какая то очень странная дичь с моим приложением на slim 3.9.
Вдруг в один момент у меня перестали работать редиректы:
return $response->withRedirect('/', 301);
Не работают и все тут.
Посмотрел раннюю версию - там все работает. Начал сравнивать - вроде все одно и тоже. Начал дикую еблю с обменом файлов, рокировкой каталогов. И выяснил вот что.
Структура index.php таковы, что зависимости находятся в другом файле и подгружаются в index.php.
Типа такое - require_once $_SERVER['DOCUMENT_ROOT'] . "/dependences/dependences.php";
Методом перебора я выяснил что если который в файле зависимости подкинут в файл глючной версии - то все работает. Херня только в том, что код и там и там одинаковый.
Более того, если код из глючного файла поместить прямо в index.php - а сам файл заккоментировать - то все будет работать нормально.
А если создать еще один файл подгрузки зависимости и в него поместить глючный код - то работать редирект не будет. Но если же в этом новом файле удалить глючный код, и записать идентичный код из старой рабочей версии приложения - то работать будет.
Я если честно слегка фрустрирую от этих дел. Мож кто то встречался с таким?
Аноним 2019/11/08 09:42:49  №1516179 246
>>1516178
>>Методом перебора я выяснил что если который в файле зависимости подкинут в файл глючной версии - то все работает. Херня только в том, что код и там и там одинаковый.

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

самофикс
179-244 Аноним 2019/11/08 12:00:36  №1516291 247
>>1515372

> Есть price и weight. Если я хочу с ними работать, например с учётом ндс цену вывести, то в каком виде и где я должен рассчитывать ндс? Без разницы куда вставить расчёт ндс? Внутри product?

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

> 2. функции - являются методами, верно?

Метод это что-то вроде функции, которая работает с данными объекта.

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

Вообще, вывод данных обычно делается в шаблоне. То есть класс Product хранит информацию о товаре и предоставляет ее, а вывод карточки товара делается шаблоном такого вида:

<div class="product-price"><?= ViewHelper::formatPrice($product->getPrice()) ?></div>
<div class="product-weight">Вес: <?= $product->getWeight() ?> гр.</div>

Урок про шаблоны: https://github.com/codedokode/pasta/blob/master/php/templates.md

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

> Нужно ли мне ещё один констракт создавать для этого, потому что при создании new Product у меня будут значение кроме ндс и цены, такие как вес, название и пр.?

Ты не можешь сделать два конструктора. Можно, впрочем, сделать статический метод для создания объекта.
Аноним 2019/11/08 12:01:40  №1516293 248
>>1515384

> обменивается сообщениями

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

>>1515979
>>1515863

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

>>1515820

Людям, которые тут устраивают флейм, и правда, стоит задуматься, что заставляет их это делать.

>>1515834

Не вперлось - так пройдите мимо, зачем флейм устраивать? Вопросы заданы вполне нормальные и на них можно спокойно ответить. Все ли в порядке с человеком, который в ответ на нормально заданный вопрос агрессивно реагирует?
Аноним 2019/11/08 12:02:28  №1516294 249
>>1515719

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

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

Твой код сделан неправильно, так как в нем нету return, и поле NDS не требуется.

Вместо "констракт" правильно писать "конструктор".

>>1515215

Нет. Но слишком большая вложенность (более 3-4-5 отступов) это плохо.

>>1515134

> Разобраться с тем, как создать объект на основании информации их $_POST['prof'].

Просто:

if ($prof == 'x') {
$object = new ClassX(...);
} elseif ($prof == 'y') {
$object = new ClassY(...);
} else {
// ошибка
}

Идея описывать профессии в виде классов может быть немного неудобной, так как тебе скорее всего надо как-то еще описывать подписи к полям (вроде "зарплата") и тип полей (например, год рождения - число от 1901 до 2010, пол - это выбор из 2 вариантов итд). Для этого придется либо добавлять аннотации к полям ( https://elisdn.ru/blog/80/some-reasons-to-learn-phpdoc ), либо делать в классе метод для получения такой информации.

Описывать форму может быть удобно, представив каждое поле в ней объектом определенного класса:

$manager = new Profession();
$manager->addField(new IntField('Опыт работы, лет', 0, 50));
$manager->addField(new StringField('Личные качества'));
...

При желании можно сделать класс Manager extends Profession, в котором в конструкторе добавляются нужные поля.

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

> Но мне она особо не помогает, так как я концепцию как таковую не оч понимаю.

Концепция в том, что состав полей формы описан списком полей в классе.

Также, мне кажется, что аякс тут вообще не требуется. Можно просто заранее получить список полей во всех профессиях, встроить его в страницу в виде JSON объекта и обращаться к нему вместо отправки запросов:

var fields = {
manager: ['age', 'experince', 'salary', ...],
engineer: [....],
...
};

Более того, можно на стороне сервера в шаблоне сгенерировать формы для всех профессий и переключать их (скрывать/показывать) при смене типа профессии:

<select name="profession">...</select>
<div class="form-for-manager state-hidden"> форма для менеджера </div>
<div class="form-for-engineer state-hidden"> форма для инженера </div>

Это будет проще всего, хотя наверно и не соответствует формулировке задания.

Еще одна идея - помечать блоки в HTML-разметке специальными атрибутами и на их основании скрывать/показывать блоки при смене профессии:

<div data-professions="manager, engineer">
<label>Опыт работы: <input ...></label>
</div>
Аноним 2019/11/08 12:25:57  №1516308 250
>>1516293
> Лично мне не нравится, когда вызов метода называют "сообщением", так как никаким сообщением он не является. Соответственно, зачем называть одно другим - непонятно. В моем понимании сообщения ассоциируются с очередями сообщений, многопоточностью и подобными вещами.
Про обмен сообщениями - это в первую очередь был референс в сторону классического определения ООП, каким оно задумывалось изначально, пока не превратилось в карго-культ трёх главных слов.
Ну и да, обмен сообщениями - это всё ещё хорошая абстракция, потому что она превращает какие-то классы и функции в логическую структуру программы, где есть сервисы и они вызывают друг-друга. Сообщением тут является метод + аргументы. По моему опыту, когда человек усваивает эту аналогию, его код тут же становится чище, ему становится легче разделять ответственности и не лепить всё в одно место.
Аноним 2019/11/08 12:30:37  №1516311 251
Аноним 2019/11/08 12:47:38  №1516316 252
image.png (13, 507x183)
183x507
Кто-нибудь разбирается в сокетах?

Взял сокетный чат https://kode-blog.io/websocket-server-php
Установил его на хостинг - всё ок, отлично работает. С хрома. А файерфокс не хочет коннектиться к серверу, говорит, несекьюрно.
>The app itself is under SSL but the websocket being accessed is not. Chrome and Opera don't care but Firefox does.
According to: https://bugzilla.mozilla.org/show_bug.cgi?id=303952
This is known and is not considered a bug. Mozilla's response: wontfix

Ок, нашёл решение (использовать на сервере прокси, первый ответ тут: https://stackoverflow.com/questions/16979793/php-ratchet-websocket-ssl-connect )

Установил оба модуля в апач модули:
sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo a2enmod proxy_http


Добавил в apache2.conf строки:
ProxyPass /wss2 ws://xxxxxxxxxxx.xxx:999
ProxyPassReverse /wss2 ws://xxxxxxxxxxx.xxx:999


А в js-скрипт вызова сервера:
websocket = new WebSocket('wss://xxxxxxxxxxx.xxx/wss2/');

999 порт специально открыт.

И снова хром работает, а файерфокс нет. Пикрелейтед. Маму его ебал, что этой собаке не нравится? Уже два дня ебусь.

Сервер:
Ubuntu-18.04-amd64
Apache/2.4.29
PHP 7.2.24
Аноним 2019/11/08 15:33:52  №1516424 253
>>1516168
Нафига ты тогда песню про геттеры-сеттеры завёл,если у тебя все поля публичные?
Алсо, актив рекорд вполне рабочий паттерн, что бы не говорили такие пафосные снобы вроде тебя.
Аноним 2019/11/08 15:36:22  №1516431 254
>>1516293
>Такие посты тут не нужны.
Тебя вот забыли спросить, что тут нужно. Это не твой личный тред.
Аноним 2019/11/08 15:53:16  №1516441 255
map.jpg (614, 770x2160)
2160x770
Что думаете о пике?
Аноним 2019/11/08 16:04:23  №1516450 256
>>1516431
Ващет это он создаёт эти треды и во многом благодаря ему они все ещё держаться. Если это ОП конечно.
Аноним 2019/11/08 16:12:01  №1516452 257
>>1515841
Это нормально, что я понимаю, что делает человек с видео, но вернувшись к коду через час забываю, как это работает и зачем это вообще нужно?
Аноним 2019/11/08 16:17:54  №1516459 258
>>1516450
>благодаря ему они все ещё держаться
Другие треды без всяких ОПов держатся. Если ОП что-то делает, то это никак не даёт ему право указывать остальным как себя вести - это уже свинство. Да и не касается его это никак и не должно касаться.
Алсо, не надо из двача доброчан лепить - гарантированно будешь послан.
Аноним 2019/11/08 16:19:52  №1516462 259
>>1516424
Актив рекорд рабочий в простых случаях, когда нужно на коленке mvp сварганить. А в сложных системах смешение отвественностей ни к чему хорошему не приводит. И с этим спорить тоже бесполезно, все тонкости сравнения active record vs data mapper уже по сто раз обсосаны и куча статей на эту тему написана.
Не понимаю, как вас самих не корёжит видеть в одном классе методы из разных предметных областей
А геттеры-сеттеры нужны в сложных случаях, когда у тебя внутри объекта что-то нетривиальное хранится. Например, объект времени, там могут лежать таймстамп, таймзона и микросекунда, всё такое. В простых случаях для DTO сойдут и публичные свойства.
Аноним 2019/11/08 16:55:10  №1516479 260
>>1516452
Да. У всех так (кроме совсем умников, которых очень мало). Понять мало, нужно еще что то сделать самому по мотивам, что бы закрепить. Желательно в этот же день. И желательно, поменьше заглядывать в исходное видео.
Такие вещи объясняет "Learning How to Learn" by Barbara Oakley.
Аноним 2019/11/08 17:21:46  №1516494 261
Скиньте какую-то простую реализацию Active Record. В гугле ничего внятного не нашёл - какой-то говнокод из 13 года разве только. Компоненты фреймворков мне ещё рано ковырять - жидко обосрусь в процессе.
Суть в том, что в общих чертах я понимаю, что в родительскую абстрактную модель пихается круд, с привязкой к свойствам дочернего класса, но как-то с реализацией не получается совсем.
Аноним 2019/11/08 17:23:10  №1516499 262
>>1516494
Можно свою, у кого есть если.
Аноним 2019/11/08 19:36:06  №1516586 263
>>1516494
Разбей все на небольшие задачи. Начни с простого. Сделай класс с двумя полями - одно строковое для имени таблицы, второе для словаря ['Имя поля' => 'значение']. И одним методом save() по вызову которого значения из словаря будут записываться в таблицу. Потом добавь возможность загружать в этот класс данные из таблицы - сначала просто по айди (если сможешь то можно и сразу по более сложным запросам). Проще всего наверное будет сделать через фабричный метод, хотя обычно наворачивают какие-то конструкторы запросов. Теперь надо добавить возможность отличать новые классы от загруженых из базы (для новых класов при сохранении вызывается инсерт, для старых апдейт). После этого обмазываешся магией __get/__set и скрываешь реализацию (словарь с значениями полей). В общем у тебя есть примитивный AR класс. Дальше уже добавляешь что нужно. Возможно стоит подумать в сторону синглтона - чтобы когда ты создаешь несколько объектов которые соответсвуют одной и той же записи в таблице то чтобы при изменении одного объекта сразу апдейтился второй (без записи в таблицу и обязательно при записи). Это не обязательно синглтоном наворачивать - как минимум есть вариант с наблюдением/ивентами. Также очень полезно будет помечать поля которые были изменены (и сохранять старые значения) - но это уже когда будешь добавлять события жизненного цикла, типа beforeSave, afterSave и т.д.
Аноним 2019/11/08 19:53:15  №1516596 264
CodeIgniter это пиздец и суицид карьерный? Он-то конечно "mvc", но код вместо того чтобы быть похожим на жабу как Симфони становится все какой-то лапшой уровня самописных фреймворков из туториалов с медиума, еще и ООП какое-то убогое
Аноним 2019/11/08 20:54:33  №1516644 265
>>1516586
Завтра заморочаюсь тогда.
Аноним 2019/11/08 20:57:07  №1516647 266
>>1516586
>Теперь надо добавить возможность отличать новые классы от загруженых из базы
Это, как ни странно, я уже продумал - по наличию айдишника. Если он пустой - вставляем, если там что-то есть, то апдейт.
Аноним 2019/11/09 07:49:58  №1516786 267
>>1516596
Это пиздец, очевидно же. Кроме symfony, laravel и микрофреймворков (если ты шаришь) в мире php лучше ничего не трогать.
Аноним 2019/11/09 10:39:59  №1516838 268
у пхп есть билиотеки для упрощения работы с сокетами.
пилить велосипед штатными средствами неохота
Аноним 2019/11/09 10:46:33  №1516845 269
>>1516838
Ты забыл знак вопроса.
И да, погугли выше и предыдущий тред, эта тема обсуждается здесь раз в неделю точно. Вкратце: php не особенно для этого предназначен, лучше даже не пробуй и используй какие-нибудь прокси для этого.
Аноним 2019/11/09 10:48:07  №1516846 270
>>1516845
а где то я видел пост,там один сказал против,а другой,да не ссы,там все НАТИВНО))
Аноним 2019/11/09 10:48:46  №1516847 271
>>1516846
короче,тогда придеться либо ноду юзать,либо aiohttp
Аноним 2019/11/09 11:02:27  №1516851 272
Аноним 2019/11/09 11:05:19  №1516853 273
>>1516838
У меня на проде работает Centrifugo. Отличное и простое решение без всяких пхпшных демонов. Есть хорошая и поддерживаемая либа https://github.com/centrifugal/phpcent для работы с ним.
Аноним 2019/11/09 11:17:54  №1516857 274
>>1516853
Поддвачну этого просветлённого
Аноним 2019/11/09 11:58:36  №1516882 275
>>1516851
Там не столько в сложности дело, сколько в навороченности - мне суть нужна, а не фичи.
Аноним 2019/11/09 12:09:24  №1516889 276
>>1516882
Ну ты же понимаешь, что "суть" - это класс с набором полей и методами save() и load() - и пишется за 5 минут?
Аноним 2019/11/09 12:55:04  №1516926 277
>>1516882
Суть можно посмотреть в документации фреймворков.
В Yii довольно лакончиные исходники, поэтому там разобраться весьма легко.
Аноним 2019/11/09 13:37:31  №1516976 278
>>1516926
Главное всерьёз нигде такое не использовать. yii это кал
Аноним 2019/11/09 13:50:20  №1516982 279
>>1516976
Так да, но обычно за тебя выбирает рынок, на Симфони нужны одни мидлы да сеньоры в крупные компании, а вкатывальщик еще повезет если yii будет ковырять, с высокой вероятностью онлайн магазин запчастей на битриксе будет творить
Аноним 2019/11/09 14:20:02  №1516995 280
>>1516976
Почему кал? Полгода где-то сижу джуном в конторе, которая свой продукт пилит. Фичи пилить достаточно просто, документация неплохая, в целом работать с ним приятно. Откуда такой хейт?
Аноним 2019/11/09 14:25:28  №1517004 281
>>1516441
>>Что думаете о пике?

2030 год, 80% инета все так же на пхп.

мимо Марти Макфлай
Аноним 2019/11/09 14:31:14  №1517011 282
>>1516786
slim подходит под твое условие?
Мне нравится на нем писать и ебаться с библиотеками.
Ща делаю небольшой заказ на нем.
Аноним 2019/11/09 14:32:55  №1517013 283
>>1516846
>>да не ссы,там все НАТИВНО))
Речь шла про принципиальную поддержку. А так для реального приложения на сокетах node повеселее будет
Аноним 2019/11/09 15:18:51  №1517056 284
>>1516982
На Laravel скорее всего набирают джунов. Он похуже симфони, но зато дико популярен и уж точно лучше yii. Ну и даже на симфони полюбому можно найти что-то, если захотеть.

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

>>1517011
В целом норм, но если ты джун, лучше поищи себе контору, где сможешь научиться правильным вещам у сильных ребят, это сильно ускорит твоё развитие.
Аноним 2019/11/09 15:25:28  №1517058 285
>>1517056
>>В целом норм
Ок, спасибо.
Аноним 2019/11/09 18:37:18  №1517241 286
Сейчас пробую разобраться с паттерном MVC.
Сделал простую гостевую книгу (Ввод имени, отзыва, сохранение и вывод данных из файла).
https://github.com/RamPG/guestbookOOP/tree/master
В плане работоспособности кода не смог разобраться с ошибкой: когда файл пуст, он выбивает Undefined offset, пробовал empty и isset, но безуспешно.
В плане архитектуры вижу только одну корявость - это класс View, я просто разорвал класс и запихал туда HTML документ. Как можно сделать лучше? Создать отдельный файл page . php и вызывать его через include?
Не обращайте внимания, что все в одном файле, с этим чуть позже разберусь.
Аноним 2019/11/09 19:09:48  №1517262 287
>>1517056
>Yii к счастью по-тихому умирает и всё меньше продуктов делается на ней
настолько умирает что скоро yii3 скоро должна полноценно выйти (:
Аноним 2019/11/09 21:45:27  №1517387 288
>>1517262
Я видел ченджлоги, они не впечатляют. Вместо нормальной архитектуры и компонентов symfony они обновили мажорную версию и перелезли на PSR-овские интерфейсы. Ну так себе. Выглядит словно, что чуваки просто насилуют труп. Очень надеюсь, что его как можно быстрее закопают и оно перестанет отравлять людям жизнь.

Ну и да, для меня вообще неочевидно, что именно из yii нужно спасать? Коряво реализованную систему внедрения зависимостей, наполовину состоящую из статических вызовов? Консольную тулзовину на скриптиках? Магически унылый active record с костыльной событийностью? Уёбищную систему плагинов? Напрочь стандартную MVC архитектуру хотя нет, с хуёвым роутингом? Дешёвую кодо-генерацию, которая генерирует ненужные вещи, которые пишутся за 5 минут? Гайды и рецепты на уровне 2010?
Yii и ему подобное говно умерло в тот момент, когда люди узнали о компонентах симфони, стоит это признать. Сейчас если ты хочешь написать mvc, ты берёшь любой роутер, пишешь код контроллеров, модель и сцепляешь это всё через любой контейнер, с любой ORM. В итоге, ты получаешь то же самое, но более качественное и не обременённое внешними зависимостями, делающее только то, что нужно. Под любую задачу есть симфони-компонент или библиотека, просто делаешь composer require и пишешь нужный тебе код. Yii остался где-то в прошлом, когда каждый писал свой умеющий всё комбайн. Ну и имхо, для тех, кто до сих пор не научился разрабатывать системы сложнее, чем mvp и просто копипастит код из примеров и stack overflow. Джуниоров и вечных джуниоров, одним словом.
Аноним 2019/11/10 07:26:10  №1517549 289
>>1517241
Твои view файлы для каждой страницы должны храниться в разных файлах. Отдельно должен лежать layout, в котором они будут рендериться. Сделал примеры как это можно организовать максимально просто.
https://www.codepile.net/pile/X5JXblNd
https://www.codepile.net/pile/wW8mEXLN
Аноним 2019/11/10 07:35:30  №1517554 290
f
Аноним 2019/11/10 16:34:13  №1518023 291
>>1517241
View, грубо говоря, это твоя html страничка которую ты пихаешь в content-body твоего сервер-ответа.
Аноним 2019/11/10 16:38:27  №1518026 292
>>1518023
Анон выше кинул примерно как они рендерятся. Я когда список студентов делал - просто нужный для контроллера html файл подключал. Но я сам еще не особо в этом разбираюсь.
Аноним 2019/11/10 17:35:57  №1518079 293
>>1518023
>>1517549
Спасибо за ответы, попытаюсь разобраться.
Аноним 2019/11/10 18:05:29  №1518107 294
1573409102641.webm (2155, 1280x720)
720x1280
>>1517387
>yii exists
>анон с дващей
Аноним 2019/11/10 19:30:32  №1518142 295
Надумал вкатиться в веб. Начал с изучения HTML, потом думаю разобраться с CSS и начать наконец учить какой-нибудь язык программирования, возможно PHP или Python, пушто хотелось бы идти в направление к back-end'у. Можете что-нибудь посоветовать? А в идеале мне бы товарища, который хочет идти в этом направлении со мной. Вместе будет проще же.
Аноним 2019/11/10 19:52:50  №1518161 296
>>1518142
>Вместе будет проще же.
Не-бу-дет.
Аноним 2019/11/10 19:55:00  №1518168 297
>>1518161
Поцчему? Аргументируй. И как в таком случае облегчить обучение и не сдуться?
Аноним 2019/11/10 19:58:10  №1518177 298
У этого треда есть чатик в телеграме?
Аноним 2019/11/10 19:59:48  №1518181 299
>>1518168
>Поцчему?
Чем тебе такой же вкатывальщик поможет? Всё скатится к обоюдным смехуёчкам и мемесам в телеграмме.
Осваивать всё равно каждому по одиночке придётся.
Аноним 2019/11/10 20:04:14  №1518186 300
>>1518181
Ну в идеале они могут друг с другом новой инфой делиться. Закрепляя эту инфу для себя, и подталкивая товарища к чему то новому. Но это, конечно же, в идеале.
Аноним 2019/11/10 20:06:25  №1518191 301
>>1518181
Справедливо, но на второй вопрос ответа не поступило.
>>1518186
На это и рассчитывал.
Аноним 2019/11/10 20:07:30  №1518193 302
>>1518191
>на второй вопрос
>как в таком случае облегчить обучение и не сдуться?
Никак. Оставайтесь в жопе.
Аноним 2019/11/10 20:09:24  №1518196 303
>>1518193
И тебе не хворать.
Другого от двачей ожидать было наивно.
Аноним 2019/11/10 20:11:11  №1518199 304
>>1518191
>Справедливо, но на второй вопрос ответа не поступило
Бля, бро. Все зависит от того в какой ты ситуации находишься и кто по жизни. У тебя же своя голова на плечах есть? Есть. Вот она тебе и нужна чтобы самому себе на такие вопросы отвечать "а как мне будет лучше". Мы то откуда знаем
Аноним 2019/11/10 20:12:48  №1518201 305
>>1518186
>они могут друг с другом новой инфой делиться
То же самое можно делать и на тематических форумах, типа как в этом треде аноны отвечают.

>подталкивая товарища
Это психологическая уловка - дескать вдвоём уж мы-то не сдуемся никак. На самом деле вам обоим будет одинаково влом этим занимать.
Просто очередная попытка переложить ответственность на плечи товарища.
Аноним 2019/11/10 20:13:14  №1518202 306
Аноним 2019/11/10 20:16:56  №1518209 307
>>1518199
По жизни я е6аный лентяй и хикка со стажем. Дважды пытался вкатываться в программирование, но не вышло. Сейчас я изменил пару переменных, но нет никаких гарантий, что снова не обосрусь. Поэтому я и надеюсь на какую-то поддержку, потому что сам не могу справиться.
Аноним 2019/11/10 20:17:27  №1518210 308
>>1518201
У меня друг в вузике на it инженера учится, у них с этим все ок. Есть компания ребят которая делает что по кайфу. Разные технологии щупают, пытаются что то делать. Конечно это все на уровне "и там и сям", но им вроде как интересно. Так что если люди реально хотят - то почему бы и нет, это будет точно в плюс.
Аноним 2019/11/10 20:18:23  №1518212 309
>>1518209
У меня самого только с третьего раза что-то получаться стало.
Аноним 2019/11/10 20:19:45  №1518213 310
>>1518210
Над ними в вузике стоят и теребят, а над вами никого не будет. Ну и они во вкус уже вошли, а тебе ещё только предстоит это всё.
Аноним 2019/11/10 20:24:11  №1518220 311
>>1518202
До сих пор факт нахождения в жопе не помогал.
Аноним 2019/11/10 20:25:44  №1518221 312
>>1518209
За какое время планируешь вкатиться, что с работой в твоем регионе. Мыслить нужно отсюда начинать. В ОП-посте есть нормальный гайд по вкату, когда сделаешь файло-обменник спокойно можешь искать галеру . Я, учась в вузе почти на 3 курсе, начал с него. Мне понравилось как он написан, ведь в вузе у меня учат полнейшией хуйне (аля ООП с первой ссылки в гугле на листочке). Вот, спустя 3 месяца в своей залупе нашел работу, осталось мелкие детали обсудить. Но я и до вуза уже в минимальное программирование умел. Только от тебя зависит сколько времени уйдет. Но желательно сильно не перенапрягаться ибо можно кукухой поехать.

>>1518213
Нет, они по собственной инициативе этим занимаются. Тот же web им не говорят пилить. Но для себя, пощупать, они не против. Да и технологии разные обсуждают часто - вариться в тусовочке очень даже полезно. Если там не отбитые аутисты сидят, конечно
Аноним 2019/11/10 20:31:18  №1518222 313
>>1518221
>Но для себя, пощупать, они не против.
Так это нормально - я вот тоже щупаю всякое из любопытства. Я ж говорю - они в теме и на волне уже, тут главное не забрасывать и продолжать. Тебе до этого пилить и пилить ещё.

>вариться в тусовочке очень даже полезно
Я как-то ходил в конфочу местных и нихуя хорошего там не увидел. 95% пиздежа по левой теме и только 5% по делу.
Если в правилах конфы нет чётких требований общения, то всё скатится к мемам и смехуёчкам. По опыту уже знаю.
А все те, где указаны эти требования ничем не лучше этого треда\любого тематического форума.
Аноним 2019/11/10 20:31:32  №1518223 314
>>1518221
>В ОП-посте есть нормальный гайд по вкату, когда сделаешь файло-обменник спокойно можешь искать галеру
нипонел. Но спасибо.
>Но желательно сильно не перенапрягаться ибо можно кукухой поехать
Да, у меня с распределением ресурсов не очень ^^"
Аноним 2019/11/11 01:24:26  №1518376 315
>>1518142
tg - @still_make_it_work
Тоже вкатываюсь, так что вот.
Аноним 2019/11/11 06:21:17  №1518430 316
>>1518209
Мертворожденная идея потому что для эой цели
>>поэтому я и надеюсь на какую-то поддержку, потому что сам не могу справиться.

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

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

Увы, тебе придется в первую очередь самому привозмочь свои психологические проблемы
Аноним 2019/11/11 09:08:13  №1518490 317
Антоши, а посоветуйте годный тест на знание пхп, хочется проверить свои знания.
Аноним 2019/11/11 10:08:25  №1518505 318
Аноны помогите! Нужен шаблон маленького интернет-магазина с динамическим каталогом товаров и чтоб можно было прикрутить саму продажу и прием оплаты а можно и без этого. С меня куча нефти за помощь. Нужно в учебных целях.
Аноним 2019/11/11 10:54:27  №1518528 319
>>1518209
>По жизни я е6аный лентяй и хикка со стажем
У тебя просто нет мотивации и тебе норм. Я так последние полгода тоже ебловал типа некуда спешить, иногда настроение было такое что не вставал целый день с кровати, месяц назад последние бабки кончились что уже жрать не мог купить ну и за неделю вкатился на работку, мозг все загоны и внутренние проблемы просто офнул и начал действоватб.

>>1518490
$i = 5;
++$i + ++$i = ?

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

Аноним 2019/11/11 11:04:19  №1518540 320
>>1518528
>вордпресс
>говно говна
Как-то пробовал его. Темки васянские хорошо накатывать и удобно, но вот разработка на нём - пробитое днище. Архитектура отсутствует и вместо неё одни костыли. Весь вордпресс это один большой костыль над простецкой системой для блога. Уже тогда стало понятно, что такие вещи изучать не стоит - костыли индивидуальны для каждого проекта и в другом они не пригодятся.
А ведь там ещё и плагины накатывают, которые друг от друга зависят. Ояебу какой кошмар.
Как эта адская хуетень ещё не подохла я удивляюсь.
Аноним 2019/11/11 11:31:30  №1518567 321
>>1518540
> Как эта адская хуетень ещё не подохла я удивляюсь.
Есть целый класс говнокодеров, которые только на нём и работают. Своя экосистем получается. Одни хотят заплатить поменьше и получить побольше, а другие хотят говнокодить за гроши и не париться.
Аноним 2019/11/11 12:36:08  №1518608 322
>>1518567
Это еще и во всем мире, в Пиндосии и Германии каких-нибудь на пхп девелоперов и энтвиклеров как раз часто требуют вордпресс/друпал, прямо как у нас любят написать в требованиях жс жквери вьюжс вордпресс джумла модх пхп ларавел йии симфони опыт 5-10 лет 35к
Аноним 2019/11/11 12:39:34  №1518612 323
>>1518608
>друпал
Этот вроде на симфони сделан.
Аноним 2019/11/11 12:42:48  №1518613 324
>>1518608
Эй, ты забыл !C-Bitrix. Не быть тебе эйчаром.
Аноним 2019/11/11 12:48:23  №1518614 325
Аноним 2019/11/11 12:53:35  №1518617 326
>>1518614
>Bitrix Framework
Вот это своими глазами как-то видел.
Аноним 2019/11/11 12:55:03  №1518621 327
>>1518617
Да я видел УВЕРЕННОЕ ЗНАНИЕ JSON
Аноним 2019/11/11 12:59:13  №1518625 328
>>1518621
Пфф, уверенное знание SOAP.
Аноним 2019/11/11 13:06:34  №1518631 329
>>1518608
Друпал тащемта сделан хотя бы наиболее качественно, да и на симфони компоненты переехал. Хотя вся ирония в том, что именно его хорошее качество и прочая архитектура ему и мешает, cms-говношлёпы ссутся использовать что-то сложнее скриптиков в стиле php4, а хорошие разработчики в любом случае не хотят на cms что-то делать.
Аноним 2019/11/11 13:17:37  №1518636 330
>>1518631
А на пыхе бывают полноценные пхп 7 проекты, шоб со стрикт тайпс и функциональщиной?
Аноним 2019/11/11 13:25:54  №1518645 331
Сап дващь. Делал кто-то на прод счетчик просмотров страницы? Я вот думаю как реализовать лучше и пока что есть несколько вариантов но не знаю какой лучше.
Для защиты от накрутки думал идентифицировать запрос по фингерпринту и не давать чаще чем в 5 минут например обновлять счетчик.
Сам счетчик можно много как реализовать, начиная от колонки в таблице view_counter и заканчивая отдельной таблой PageViews со всей инфой и считать из неё. Была еще упоротая мысль кроном каждые 30 мин из гугл аналитики выгружать просмотры по страницам и обновлять в бд данные.
Аноним 2019/11/11 13:35:34  №1518651 332
>>1518636
>полноценные пхп 7 проекты
Что ты имеешь ввиду?
Аноним 2019/11/11 13:58:30  №1518674 333
>>1518631
>хорошие разработчики в любом случае не хотят на cms что-то делать
Так с нынешними либами за пару часов можно самому небольшую cms за вечер накидать. И при этом нет никаких ограничений от производителя - руки развязаны.
Аноним 2019/11/11 14:14:02  №1518693 334
>>1518651
Да, не раз видел и участвовал.

>>1518674
В этом и смысл cms'ок, что ты поставил, накликал что-то и оно работает - и не надо платить разработчикам, архитекторам и так далее. Для малого и среднего безнеса - то, что нужно.
Аноним 2019/11/11 14:20:19  №1518701 335
>>1518645
А для какой цели?
Можешь логи нгинкса парсить демоном на фоне.
Можешь свой счетчик в sql поставить, но если приложение окажется нагруженным, то ето узким местом может оказаться из-за локов при записи.
Можно в очередь кидать записи и оттуда уже разгребать демоном.
Аноним 2019/11/11 14:59:06  №1518733 336
Как в пыхе дергать данные с радиобаттонов, то есть какой именно нажат? На каждом радио есть атрибут с уникальным value, это как я понял будет получать пыха.
Аноним 2019/11/11 15:13:40  №1518745 337
>>1518733
Сам браузер решает какой именно нажат (группировка по атрибуту name) и в запросе устанавливает соответстdующие name=value
Аноним 2019/11/11 15:17:39  №1518747 338
>>1518745
Как? name же одинаковые у группы, а потом в name присвоится value нажатой? Это бред.
Аноним 2019/11/11 15:17:47  №1518748 339
>>1518693
>накликал что-то
>и не надо платить разработчикам, архитекторам и так далее
Как накликал - так и работает. А потом ходят и жалуются, что у них скорость сайта никакая, сео чёто тоже не ахти, плагины есть, но всё не то, что нужно конкретно им.
Тысячи их.

>Для малого и среднего безнеса
Максимум для лендосов салона "Валентина". Что-то серьёзное и со структурой ты на cms не поднимешь, а порой в этом вся соль.
Аноним 2019/11/11 15:22:22  №1518752 340
>>1518747
Несколько радиобаттонов с одинаковым именем образуют группу
<input type="radio" name="a" value="1">
<input type="radio" name="a" value="1">
<input type="radio" name="a" value="1">

Когда пользователь кликает по какому-то из радиобаттонов с одинаковым name, браузер следит за тем, чтобы выделение с остальных снялось. Когда пользователь отправляет форму, в форме по ключу name будет стоять значение кликнутого радиобаттона.
Аноним 2019/11/11 15:23:40  №1518755 341
>>1518752
Понял, спасибо, только value 1 2 3
Аноним 2019/11/11 15:27:12  №1518758 342
>>1518748
Да нифига, какой-нибудь простенький сайт с контентом, интернет-магазин, формочку там для обратной связи, туда-сюда.. Там нагрузок не было и не будет, удобство может быть и не очень удобным и всё такое. Какой-нибудь, к примеру, сайт для заказа цветочных букетов. Маленькая витрина с фотками и наборными компонентами, форма заказа и админка для выкладывания контента и управления заказами/статусами заказов.
Аноним 2019/11/11 15:27:37  №1518760 343
>>1518747
>>1518752
value в примере не поменял
Ну то есть ты в php просто получаешь $_GET['a'] и тебе выводится тот, который чекнул пользовватель.
Аноним 2019/11/11 15:30:24  №1518763 344
>>1518760
А у меня форма с методом POST
$_POST['a']
Аноним 2019/11/11 16:43:00  №1518820 345
>>1517387
Пиздец манямир, из разряда пэхэпэ мертвый язык, скоро всех програмистов заменят нейросети !!!!!!!!!!!!!!1
Аноним 2019/11/11 16:53:53  №1518832 346
Подскажите что за хуйня: Есть переменная $conn в файле connection.php в ней хранится подключение к бд. Есть два стула файла: index.php - в нем вся мишура, и main.php - там у меня функции. Так вот, эта переменная видится в index.php, но не видится в main.php. Чому так? Причем оба подключаю методом include, и все они находятся в одной папке.
Аноним 2019/11/11 17:11:05  №1518858 347
Сап аноны, у меня вопрос. Знач на винде пользовался homestead, но шинда изрядно надоела, да и для моего некропк запускать виртуалку на вин 10, это гиблое дело. Поэтому вопрос, есть ли какие то альтернативы для линукс?Не очень бы хотелось поднимать виртуалку, может есть какие то альтернативы?
Аноним 2019/11/11 17:20:52  №1518872 348
>>1518832
Нада код смотреть - так ничего не понятно.
Аноним 2019/11/11 17:25:19  №1518878 349
>>1518858
>Laravel Homestead
>Included Software Ubuntu 18.04

Ты просто хомячок. Какая тебе альтернатива. Свой хуюмстед ты же не осилишь запускать из чрута
Аноним 2019/11/11 18:37:16  №1518947 350
>>1518872
Да я уже разобрался, пхп не видит инклюд в функции пиздос как удобно
Аноним 2019/11/11 18:46:07  №1518951 351
>>1518947
>пхп не видит инклюд в функции
О - область видимости. Надо знать.
hex 2019/11/11 23:37:17  №1519073 352
Бля ребят я уже просто заебался, не могу ввести в бд текущую дату! Мне надо именно в datetime(не timestamp) а он тупо нули записывает, как я только не пытался. Проштудировал кучу сайтов\статей. Поменял все, и тег в input , и форматы, и прогонял через функции превращения в стринг и тп. Не знаю что делать, надо тупо ввести эту дату в бд!
hex 2019/11/11 23:41:47  №1519075 353
>>1519073
Ебать походу сделал..

убрал mysqli_real_escape_string
hex 2019/11/11 23:42:35  №1519077 354
А до этого id на name поменя(да был косяк) но когда исправил, все равно не работало. Еще mysqli_real_escape_string снял. Тогда сработало. Пиздец
Аноним 2019/11/12 00:11:59  №1519086 355
>>1519073
>Мне надо именно в datetime(не timestamp)
А что так? Таймштамп потом в датетайм перегнать - как 2 пальца, насколько я помню.
Аноним 2019/11/12 00:17:05  №1519088 356
>>1519086
Просто такое задание было в инете ,хы
Аноним 2019/11/12 06:02:36  №1519139 357
>>1519073
Напишу снова: всё что может делать сама СУБД, пусть делает сама БД, например высчитывает timestapm через NOW().
Аноним 2019/11/12 09:52:54  №1519264 358
>>1519073
Кстати совет. Юзай сокращённый открывающий тэг только для краткого эко. <?= "Привет"?> В остальных случаях всегда <?php
Стандарты все дела
Аноним 2019/11/12 10:02:45  №1519271 359
Аноним 2019/11/12 11:23:13  №1519305 360
>>1511146 (OP)
Ребят, пролистал/pr как я понял вы тут самые добрые (аниме), поэтому обращусь с вопросом к вам - я работаю юристом, но мне это надоело, постоянный негатив от клиентов, все они проблемные, душные и я думаю вкатится в програмириование/кодинг. С перспективами потом перебраться в Москву, начать зарабатывать в идеале 100к примерно.

Какой язык учить, с чего начать?
Аноним 2019/11/12 11:50:15  №1519317 361
>>1519305
>Какой язык учить, с чего начать?
Смотря к чему у тебя душа лежит. Если пофиг и просто ищешь место поспокойнее и потеплее, то учи JS, на фронтендеров нынче спрос большой.
Аноним 2019/11/12 11:51:08  №1519318 362
>>1519305
php норм, но готовься, что для нахождения любой нормальной работы нужно въебать кучу времени и сил в обучение. Минимум 2-3 года только для того, чтобы перестроилось мышление и можно было хоть как-то называться разработчиком, а не кодомакакой.
И это не снобизм, просто область реально огромная и нужно, знать, понимать, как устроены и уметь использовать туеву хучу инструментов, протоколов, приёмов и всё такое. Ну и зависит от того, что считать разработчиком, cms-формошлёпы же тоже что-то там делают.
Аноним 2019/11/12 11:51:54  №1519319 363
>>1519318
> область реально огромная
Не php в смысле, а "разработка по".
Аноним 2019/11/12 11:52:57  №1519320 364
>>1519305
Хм. Ну для начала стоит отметить, что программирование делится на кучу сфер, от науки, то секьюрити.
Из самых популярных: Web, мобильная разработка( деление на андроид\айос) , десктоп (опять же apple\windows). Игры опять же разные платформы.. консоли.
Для начала выбери направление. В ом же вебе есть разные стаки.. например php/js/html (бэк) + frameworks. Или Js/ Css/ html + frm(фронт). Или Python/js... (бэк)
А когда выберешь. Можно выбрать язык..
Если просто хочешь денег то выбери самое востребованное - web or mobile.. А там тоже есть свои самые полпулярные языки+фреймы
Аноним 2019/11/12 15:02:30  №1519442 365
>>1519317
>>1519318
>>1519320
Спасибо большое, часть из этого не понятно, в плане того что выбрать, но web звучит как то проще и понятнее.
Аноним 2019/11/12 15:36:42  №1519469 366
>>1519442
> web звучит как то проще и понятнее.
В целом , так оно и есть. Но щас опять же наплодили кучу технологий.. поэтому учить надо пару языков и сверху пару фреймворков. К примеру, стажор бэкендер должен знать на базовом уровне: Php/Js/Html/ ООП ,MVC, Larqvel/Yii.
Аноним 2019/11/12 17:26:14  №1519558 367
>>1519318
Я бы врачем стал, но я уже старый и ойти. Работал в больнице, в стационаре каждый второй на лехухе или бнв катает. Им люди сами за профессионализм несут.
И статус - если ты хороший уролог/гинеколог ты в друзьях у топ своего мухосранска будешь находиться всегда.
Конечно нужно не всратым терапевтом калымить, а идти на оперирующие специальности. Но там и ответственность, мама не горюй. И почет, и пиздец уважение. Представь как горд врач, когда с того света вытаскивает кого то?

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


Аноним 2019/11/12 17:36:24  №1519579 368
>>1519558
>Пока ты очередному комерсу магазин пилишь.
Двигаем человечество в будущее, пока очередной гордый врач стотысячного алкаша с того света тащит.
А как же.
Аноним 2019/11/12 17:41:32  №1519584 369
>>1519558
Но вообще тебе с таким подходом нехуй в ИТ делать.
Аноним 2019/11/12 17:46:11  №1519589 370
>>1519584
Двачую. Заебали рефлексирующие нормисы.
Аноним 2019/11/12 17:55:18  №1519597 371
>>1519589
Толсто.

Любой хороший специалист имеет уважение. Если ты думаешь освоить профессию, относясь к ней без уважения, то у тебя ничего не выйдет. Это распространённая ошибка васянов, которые потом оседают в Пятёрочках. Они ничего не любят и не стремятся, а ценности их - лексусы, и чтобы заносили побольше.
TAXI-кун 2019/11/12 19:24:10  №1519676 372
Ура! Я сделал умножение.
Знаю тупо, но просто хотел поделиться, появилась маленькая гордость, что хоть в чем то разобрался.

<?php

for\t($x = 1, $b = 1; $x < 10, $b < 10; $x++, $b++) {
$sum = ($x $b);
\techo "$x
$b = $sum\n";
}
Аноним 2019/11/12 19:28:59  №1519678 373
Аноним 2019/11/12 19:33:45  №1519679 374
>>1519676
>$sum
Почему переменная называется $sum, а на самом деле это продукт умножения?
TAXI-кун 2019/11/12 19:36:45  №1519681 375
>>1519679
Тут ты прав. Прост увидел из прошлых примеров и не стал заморачииваться как на инглише это записать.
Аноним 2019/11/12 19:37:47  №1519683 376
>>1518947
> пхп не видит инклюд в функции пиздос как удобно
Используй require и require_once и будет тебе счастье.
Аноним 2019/11/12 20:08:40  №1519695 377
Ребят, а кто-нибудь знает как сделать запрос с помошью js и php в бд, с помошью ajax?
Т.е вот кнопкочка с статьекй, жмешь - а статья удаляется из бд без перезагрузки стр.
Можно ссылочку или что гуглить надо?
Буду очень благодарен
Аноним 2019/11/12 20:16:01  №1519699 378
>>1519695
Отправляешь запрос на сервер с помощью ajax -> сервер удаляет нужную статью -> данные на странице обновляются. Или что тебя интересует?
Аноним 2019/11/12 20:33:34  №1519711 379
>>1519699
Да но как это делать, реализация этого интересует, как писать такие запросы. Задействован ли php? Или мой код может напрямую менять инфу в моей базе данных на сервере? Тогда разве это безопасно? Так каждый сможет отправить запросы ,не?
Аноним 2019/11/12 20:37:10  №1519717 380
>>1519695
Если остановится на rest то ты мог бы
1. Сделать get запрос с номером статьи и получить обновленный список статей в теле ответа и c помощью js обновить html (так делают только самые нубы)
2 Сделать тоже самое delete запросом (rfc ничего не сказано о теле ответа на delete запрос. Но это считается отклонением от стандартного поведения)
3 Сделать такой же delete запрос но получить пустой ответ. Сделать нововый get ajax запрос для того чтобы получить
обновленный список статей
4 После delete запроса с пустым ответом просто js ом удалить статью из html
Аноним 2019/11/12 20:39:20  №1519719 381
>>1519711
Я не совсем опытный, но что тут не безопасного? Отправляется post/delete запрос на сервер, на сервере с помощью php этот запрос обрабатывается и выполняется нужное действие. Подозреваю что для удаления статьи нужно обладать какими то правами, вот это и проверяется с помощью сервера. Так же из минимальной защиты пользователя можешь почитать про crsf токен.
Аноним 2019/11/12 20:42:14  №1519726 382
>>1519719
В браузере у пользователя можно статью с нужным id просто в JS-е убрать, либо как написали выше на запрос серверу вернуть обновленый список статей, но мне этот вариант как то не очень нравится
Аноним 2019/11/12 20:43:40  №1519728 383
>>1519719
>>1519717

> post/delete запрос на сервер, на сервере с помощью php
Т.е в этом пост запросе указывается например к примеру файл x.php в котором код удаления статьия. А сам post/delete запрос просто его запускает?
а как гуглить такое? Просто у меня домашка на завтра я все сделал кроме такого запроса.
Аноним 2019/11/12 20:48:19  №1519738 384
>>1519683
Вангую, что он инклюдил в какой-то функции, поэтому переменные у него попадали в локальную видимость и не были видны снаружи этой функции.

>>1519695
>что гуглить надо?
Работу с ajax.
Но я бы не совался без понимания http-протокола, как минимум. Эта кнопочка только для пользователя просто работает - на деле там логики нормально так.

>статья удаляется из бд без перезагрузки стр
В двух словах: js посылает данные с удаляемой статьёй на определённый эндпоинт API сервера, который в контроллере уже работает с базой данных.
Потом этот же js удаляет ноду со статьёй из DOM-дерева документа. Получается без перезагрузки.
Аноним 2019/11/12 20:49:12  №1519740 385
Аноним 2019/11/12 20:50:06  №1519743 386
>>1519728
Нет, сначала гуглишь и читаешь про MVC, потом про HTTP запросы.
>а как гуглить такое? Просто у меня домашка на завтра я все сделал кроме такого запроса.
Ну мы же не знаем как ты свое приложение скостылил, какие свойства есть у твоей статьи, какой ключ. Самое банальное делать ссылку по типу ursite.com/threads/{id}/delete
И по id в БД просто удалять
Аноним 2019/11/12 20:53:45  №1519754 387
Маленький шажок для человечества, но большой шаг начинающей крудомакаки
Аноним 2019/11/12 21:05:49  №1519765 388
>>1519743
>>1519738
Сайт без MVC
И мне надо без jquery
просто отправить "DELETE FROM `bd1` where id =1" а потом Dom обновить (это я смогу)
Аноним 2019/11/12 22:46:41  №1519809 389
>>1519699
>Отправляешь запрос на сервер с помощью ajax -> сервер удаляет нужную статью -> данные на странице обновляются
А как сервер поймет, что это не хаккерский скрипт? Прежде чем выполнить
Аноним 2019/11/12 22:52:04  №1519812 390
>>1519809
Так же как и при обычном не ajax запросе, при помощи номера сессии, который посылается в виде кукиса даже при ajax запросов.

Правда это нужно еще программировать на php.
Аноним 2019/11/12 22:54:01  №1519814 391
>>1519812
Я надеюсь, что меня поняли?
Аноним 2019/11/12 23:00:27  №1519817 392
>>1519812
>>1519814
Да спасибо. А можно кусочек с маленьким кодом 1 запросика плиз.Я гуглю но нигде не нахожу рабочий кусок.
Аноним 2019/11/12 23:03:53  №1519820 393
>>1519817
Завтра напишу. Сейчас уже спать сильно охота.
Аноним 2019/11/12 23:06:55  №1519821 394
Аноним 2019/11/12 23:39:29  №1519838 395
Аноним 2019/11/12 23:40:10  №1519839 396
Аноним 2019/11/13 08:07:05  №1519936 397
Аноны, сейчас в учебных целях повторяю одну здоровенную форму одного крупного сайта.
В ней куча элементов которые появляются и скрываются в зависимости от выбранного поля в селект. Я когда JS изучал подобное делал.
В форме на том сайте для такого юзается jQuery вовсю.
Сейчас везде и всюду говорится что jQuery не торт и его юзать нельзя.
Но допустим закажут мне что то подобное - как реализовывать такую форму? Не на рекат\вью это писать?

Или вообще нативно херачить?
Аноним 2019/11/13 08:07:26  №1519937 398
>>1519936
Или таки jQuery, как и раньше?
Аноним 2019/11/13 08:24:20  №1519941 399
>>1519936
Сайт древний, скорее всего. Легаси - все дела. Если заказчику нет дела до технологий - бери фреймворк, тебе же легче будет (если умеешь в него). Если заказчику нужно что-то допилить - используй то, что уже есть.
Аноним 2019/11/13 08:56:36  №1519953 400
>>1519936
>jQuery не торт и его юзать нельзя
Так ты спрашивай - почему нельзя его юзать?
Очень часто такое слышно от хайповых js-петухов, которые кроме своего фреймворка ничего не знают.
Аноним 2019/11/13 08:58:10  №1519954 401
>>1519953
>>jQuery
Ему хрен знает сколько лет уже и до сих пор на CDN торчит.
Значит актуально.
Аноним 2019/11/13 09:28:27  №1519974 402
>>1519953
Уже тысячу раз вам блять объясняли, что сам по себе он норм для того, чтобы повесить пару обработчиков, сделать анимашку или отправить запрос, но когда появляется что-то посложнее типа динамической формы с валидациями, какой-никакой роутинг или ещё чего (что ВНЕЗАПНО делает просто сраный скриптик на фронте отдельным маленьким приложением, работающим в клиентском браузере), то лапша на jquery стремительно превращается в неподдерживаемый кусок говна, без архитектуры, расширяемости, зато с кучей дырявой магии.
Аноним 2019/11/13 10:51:51  №1520016 403
>>1519974
>какой-никакой роутинг
На фронтенде?
Аноним 2019/11/13 11:06:07  №1520023 404
У меня не выходит разобраться с правами на каталоги для Laravel.
Есть Ubuntu 18.04. На ней apache 2.4. Корень для сайт: /var/www/html. Какой владелец должен быть у этого каталога? Какие права нужно выдать, чтобы ларавел нормально с ним работал? Плюс папки bootstrap/cache и storage.

Я и так и сяк пробовал настроить, в итоге всё сломалось и не работает.
Последнее, что делал:
sudo chown -R testuser: /var/www -сменил владельца с рута, на себя.
sudo find /var/www -type f -exec chmod 664 {} \;
sudo find /var/www -type d -exec chmod 775 {} \;
- хз что это, написано "Then I give both myself and the webserver permissions:", что бы это ни значило.
Аноним 2019/11/13 11:12:14  №1520031 405
>>1520023
>что бы это ни значило.
Вернее, что он написал, я понимаю, но что это за команды - нет. find какой-то - это же просто команда поиска, что она может сделать?
Аноним 2019/11/13 11:25:34  №1520043 406
1.jpg (61, 550x890)
890x550
Как реверснуть оператор сравнения с null - "??"

$a = $b ?? 'b is null';

А мне надо что-то вроде:
$a = $b !?? someFunciton ($b);

То есть, иногда надо что-то сделать с переменной, но только если она не null. А если null, так пусть просто будет null.
Аноним 2019/11/13 11:29:27  №1520049 407
>>1520016
Здрасте. Добро пожаловать в мир react и прочих.

>>1519974
Да, мне именно это требуется. Из фронта я умею нативный JS и react уровня to-do-list. Жиквери никогда не юзал.
Достаточно подходит для моей цели.
Аноним 2019/11/13 11:40:03  №1520061 408
>>1520023
Попробовал по https://tecadmin.net/laravel-file-permissions/
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type f -exec chmod 644 {} \;
sudo find /var/www/html -type d -exec chmod 755 {} \;
cd /var/www/html
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

Всё равно не работает. Если положить в корень test.php, то он нормально отрабатывает, а Ларавел нет.
Forbidden
You don't have permission to access this resource.
TAXI-кун 2019/11/13 12:03:40  №1520088 409
С задачкой про айфон чем можно пользоваться? Только теми материалами, которые уже были в первых уроках?
Аноним 2019/11/13 12:11:46  №1520096 410
>>1520049
> Жиквери никогда не юзал.
Да это же стейтлесс-либа.
Там 10 методов, которые требуются для 99% задач и все они тривиальные и понимаются интуитивно, типа "ты ей передаёшь dom-элемент (или путь до него) и коллбек, она вызывает коллбек при определённом событии".
Короче, поиграешься полчаса и можешь считать себя знатоком и обновлять резюме, лол.
Аноним 2019/11/13 12:55:16  №1520120 411
Аноним 2019/11/13 12:57:38  №1520123 412
image.png (92, 480x360)
360x480
>>1520049
Как ты роутинг на бутстрапе делать собрался?
Аноним 2019/11/13 12:58:16  №1520125 413
image.png (92, 480x360)
360x480
Аноним 2019/11/13 13:07:40  №1520132 414
>>1520043
может так?

//если не null
if (isset($переменная));

//если нул
elseif (!isset($переменная));

только вкатываюсь
Аноним 2019/11/13 13:22:54  №1520144 415
Аноним 2019/11/13 13:31:25  №1520156 416
>>1520123
Ето ти норкоман. Я про роутинг и не спрашивал
Аноним 2019/11/13 14:54:44  №1520254 417
>>1520156
>но когда появляется что-то посложнее типа динамической формы с валидациями, какой-никакой роутинг
А это что?
Кажись ты просто не понимаешь разницу между фронтом и бэком.
Аноним 2019/11/13 15:42:34  №1520345 418
>>1520254
> но когда появляется что-то посложнее типа динамической формы с валидациями, какой-никакой роутинг
Это писал я, другие посты - кто-то ещё.
Про роутинг я сказал потому что потом окажется, что форма должна вести себя по-разному на разных страницах, быть универсально-гибко-настраиваемой и всё такое. Там туева хуча вариантов и роутинг - только один из примеров того, что делает jquery-поделки неудобными для развития.
Аноним 2019/11/13 16:50:04  №1520384 419
>>1520254
Хуясе предъявы, мое увожение, лол
Аноним 2019/11/13 17:51:23  №1520431 420
>>1520345
>форма должна вести себя по-разному на разных страницах
А если без фантазий?

>роутинг - только один из примеров того
Роутинг форм, ты имеешь ввиду?
Аноним 2019/11/13 17:52:26  №1520433 421
>>1520384
Просто не надо лезть в чужую ветку со своим реактом - не о том речь.
Аноним 2019/11/13 18:53:39  №1520476 422
в чем разница между симфони и ларавелом?
Аноним 2019/11/13 19:00:17  №1520477 423
По мере изучения всяких либ во время написания сайтов всё меньше приходится писать на ПХП и всё больше ебаться с вёрсткой и фронтом.
У всех так?
Аноним 2019/11/13 19:02:46  №1520478 424
>>1520477
потому что бэк в массе однообразен и отточен.а фронт,это то что человек видит-дизайн и логика.тут фантазии больше.ну перчинка-жс ублюдский ЯП
Аноним 2019/11/13 19:15:56  №1520480 425
>>1520478
Но я хотел на ПХП писать, а не жс.
Помню как свой парсер первый писал весь вечер - стена кода, сток под 200-250. А счас - накатил модную либу, скормил ей xpath, привёл в нужный формат другой либой, и всё - жрать подано. Дай бох 50 строк будет всё это дело.
Аноним 2019/11/13 19:36:28  №1520489 426
>>1520476
И ларавел и симфони являются фреймворками.
Однако архитектура симфони построена так, что большая его часть ето независимые компоненты, которые не пересекаются с другими компонентами. Из-за этого компоненты симфони стали использоваться в других фреймворках, в том числе в ларавеле.
В ларавеле куда меньше надо собирать руками, то есть из коробки что-то запустить, чтобы оно работало на ларавеле будет быстрее. В основном потому, что за тебя уже все решили. Например, взгляни на документацию роутинга в симфони и ларавеле:
https://symfony.com/doc/current/routing.html
https://laravel.com/docs/6.x/routing

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

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

Я думаю анон меня поправит и дополнит чуть что.
Аноним 2019/11/13 19:41:50  №1520491 427
>>1520477
Если делать сайты-визитки и онлайн-магазины да. Надо идти в продуктовые компании, там куда лучше с этим.
Очень много интересных задач было, нагрузки, масштабируемость, написание каких-то допинструментов. Как только уровень джуна пройдешь беги от сайтошлепов в продуктовое что-то, ну или куда-то, где проекты по 4-6 месяцев идут.
Аноним 2019/11/13 19:47:42  №1520495 428
>>1520477
На моем прошлом месте работы, когда начало появляться слишком много задач про сделай кнопку красную, чтобы жало и отправлялись данные и заебись все, то отдельно наняли фронтендера для этого. Но у тебя второго фулстака наймут.
Аноним 2019/11/13 20:29:17  №1520521 429
Вопрос к ОПу. Какой потолок развития у php разраба? У меня есть планы переката в Европку - для этого пыха подойдет?
Аноним 2019/11/13 21:56:49  №1520560 430
>>1520489
Я бы дополнил что на ларавел не то чтобы сильно проще, а просто намного быстрее что-то написать чем на симфони, т.к. существует много шорткатов в виде глобальных функций и тебе не нужно долго думать о структуре классов и т.д. потому что в любой момент можно вызвать request() и оп, у тебя объект запроса например. А еще он всё таки немного подвязан на свой же орм Eloquent, это и хорошо и плохо, и если в теории можно свапнуть на доктрину или что-то еще, то на практике разные ларавел фичи начинают не работать потому что свойства приватные, или у этой фичи внутри проверка на инстанс или еще что, и приходится опять писать тот самый бойлерплейт. Например ларавель джоб класс, который через трейт умеет трансформировать модель в айдишник перед сериализацией чтобы память не охуела от активрекорда, а когда эта джоба выходит из очереди то по айдишнику заново гидрирует в свойство эту модель через рефлексию. Думаю что такой трейт можно легко и для доктрины написать, но сам факт.
Я бы советовал всё таки сразу на симфони + доктрина писать, мне кажется что там больше классического ооп, бойлерплейта, конфигов и вот этого всего, после такого на ту же ларку перекатиться будет в разы легче чем наоборот, когда ты не понимаешь зачем тут вводить тип если можно просто строкой что-то передать и т.д.
Аноним 2019/11/13 22:09:26  №1520562 431
Реально ли решить задачку с айфоном новичку?
Как дальше заставить прогу вычесть столько, сколько нужно, что бы в минус не уйти.
Аноним 2019/11/13 22:31:58  №1520566 432
>>1520562
>Реально ли решить задачку с айфоном новичку?
Она для новичка и есть.

>Как дальше заставить прогу вычесть столько, сколько нужно, что бы в минус не уйти.
Но сперва нужно синтаксис узнать - какие операторы есть и что делают. Нет смысла задавать такие вопросы.
Аноним 2019/11/13 23:23:12  №1520576 433
У меня есть один очень важный вопрос. Можно ли сделать так, чтобы скрипт отдал клиенту ответ, но при этом сам продолжил свою работу на ещё некоторое время.

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

Ну так вот можно ли решить эту проблему только средствами пхп, без использования кронджоб?
Аноним 2019/11/14 00:20:57  №1520590 434
Аноним 2019/11/14 01:07:00  №1520595 435
>>1520576
нет. только очереди
Аноним 2019/11/14 05:02:21  №1520633 436
>>1520431
>>Роутинг форм, ты имеешь ввиду?
Я думаю он имеет ввиду роутинг SPA фронтред приложения, реализованного к примеру на react.
Если ты никогда не писал на react - то попробуй.

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


Аноним 2019/11/14 05:07:38  №1520637 437
>>1520254
Похоже ты просто не перерос еще классическое MVC на бэкенде со статикой отдающейся клиенту.
Внезапно MVC и тыщи его вариантов отлично живут на фроте. По необходимости получая от сервера только json с данными без какой либо разметки вообще.
Аноним 2019/11/14 05:15:26  №1520642 438
>>1520633
>один и тот же компонент может себя по разному вести на разных страницах
Зачем? Это хуевый пример, когда пишутся сложные компоненты на все случаи жизни. SPA - это когда на одной станице рендерятся разные компонеты, в зависимости от условий. Например в зависимости от урл, когда для разных урл бекендом отдается одна страница. Это кстати наиболее правильное использование SPA, чем когда для урл используется хеш и зачастую не работают кнопки назад/вперед
Аноним 2019/11/14 06:47:19  №1520658 439
>>1520642
Чувак, наш с тобой диалог - абсолютно бесцельное "просто попиздеть". Словил такое густое ощущение.
Аноним 2019/11/14 07:58:40  №1520697 440
Ребятухи, начал изучать ооп и возник такой вот вопрос. Это нормальная практика что если удалить в классе question все public поля, то программа будет работать как ни в чем не бывало? И почему так вообще происходит ведь раз нет поля в классе, то кажется заполнить эти поля никак нельзя при создании объектов. И раз все и так работает зачем что то объявлять в классе questoins? только для наглядности чтоб ничего не забыть?
https://3v4l.org/dWVtb
[
Аноним 2019/11/14 08:09:10  №1520711 441
>>1520697
>И почему так вообще происходит ведь раз нет поля в классе, то кажется заполнить эти поля никак нельзя при создании объектов
Поля могут задаваться динамически через магический метод __set()
Аноним 2019/11/14 08:10:30  №1520712 442
>>1520576
Да, гугли session_write_close
Аноним 2019/11/14 08:15:40  №1520718 443
>>1520712
Пардон, не проснулся, хуйню спизданул, fastcgi_finish_request нужен
Аноним 2019/11/14 09:02:12  №1520797 444
Поясните за симфони. Давно разрабатываю на пыхе, но чаще всего встречаюсь с ларавелом, отдельно используемыми компонентами симфони и всякими сраными легаси на чём угодно (вот такой я неудачник).
Хочу разобраться в том, как правильно готовить симфони, какая там внутри архитектура, какие бест-практики, как правильно юзать доктрину и всё такое.
Чего можно почитать, какие хорошо сделанные примеры приложений посмотреть и всё такое?
Пока нагуглил бест практики на сайте самого симфони и пример оттуда же, но может есть ещё чего дельного.
Ну и чего вообще нужно поизучать в этом котексте (из разряда, если бы я знал, чего спросить - спросил бы)?
Аноним 2019/11/14 09:31:35  №1520845 445
>>1520633
>роутинг SPA фронтред приложения
Речь о jQuery. Ты нормалный вообще - на нём SPA делать?
Был вопрос о нём - вы в ответ бред нести стали. Один с реактом успокоиться не может, второй с роутингом форм носится.
Зачем пхпшнику сдалось ваше SPA в норме, если ему интерфейс накидать? Именно поэтому ваше мнение никому не интерсно - вы даже в суть вопроса неспособны вникнуть.
Аноним 2019/11/14 09:41:11  №1520852 446
>>1520845
ко-ко-кой ты зодиристый, ужс.

Похоже все друг друга не правильно поняли, забей.
Аноним 2019/11/14 09:54:14  №1520865 447
>>1520845
Ты почему-то отказывешься воспринимать тот самый первый пост, что тебе анон написал, чем только выставляешь себя долбоёбом.
Тебе сразу сказали, что нет проблемы взять jquery чтобы навешать пару триггеров. Но в любом сложном случае типа роутинга, зависимости элементов одного от другого сразу лучше брать vue или react.
Аноним 2019/11/14 09:59:30  №1520869 448
>>1520865
Тебя головой в детстве не роняли? Ты третий раз уже пишешь про роутинг на жс, в пхп треде.
Аноним 2019/11/14 10:00:57  №1520872 449
>>1520865
Контекст использования jQuery способен понять исходя из темы треда?
Аноним 2019/11/14 11:15:40  №1520939 450
Сап аноны. Как лучше реализовать теги? Вот есть у меня в бд запись типа: ид, наименование, хуй, пизда, список тегов. Также есть отдельная таблица с этими тега вида: ид, название тега. Можно ли связать столбец из первой таблицы со второй, и чтобы первый столбец был списком со ссылками на второй? Или лучше не ебаться а сделать все обычным текстом, и делать запрос sql "...LIKE %tagname%"? Знаю что вопрос больше по sql, но вы же тут няши.
Аноним 2019/11/14 11:35:20  №1520978 451
>>1520939
Гугли "многие ко многим sql"
Аноним 2019/11/14 11:53:39  №1521013 452
>>1520978
many to many может? А то он найдет говносайты на русском.
Аноним 2019/11/14 11:56:52  №1521016 453
>>1521013
Я специально перевел. А то он потом такой: "А на русском есть че почитать?" А я такой: "Иди учи ингришь, Маня". И понеслась на 20 постов. Ну как обычно в /pr/ происходит.
Аноним 2019/11/14 12:07:04  №1521022 454
А зачем в пыхе сделали $ перед переменными? Я в других языках такого не встречал.
Аноним 2019/11/14 12:14:58  №1521027 455
Аноним 2019/11/14 12:24:23  №1521031 456
Аноним 2019/11/14 12:59:15  №1521060 457
>>1521031
Да какая разница? Эти доллары абсолютно не мешают (даже на самом деле чуть удобнее читать код, глазу есть, за что зацепиться).
Аноним 2019/11/14 13:05:54  №1521064 458
>>1521060
>глазу есть, за что зацепиться
Есть немного.
Аноним 2019/11/14 13:27:19  №1521076 459
Аноним 2019/11/14 13:58:43  №1521092 460
>>1521060
хоть где-то в пхп есть доллары
(мимоjavaцарь)
Аноним 2019/11/14 14:19:31  №1521102 461
>>1521022
Зато объявлять переменные не нужно. Лично меня больше огорчают стрелочки в объекте.

Аноним 2019/11/14 14:19:52  №1521103 462
Аноним 2019/11/14 14:21:29  №1521105 463
>>1521102
Только поначалу непривычно, а потом вполне норм даже.
Да и не суть.
NoLaifer 2019/11/14 14:24:23  №1521108 464
Можно ли сохранить пробелы в получившимся массиве при использовании explode?
$word = explode('/(?=\s)/u', $word); просто не работает
$word = explode(" ", $word); убивает пробелы
NoLaifer 2019/11/14 14:27:48  №1521110 465
>>1521108
решил проблему таким способом

$words = implode(" ",$word);
NoLaifer 2019/11/14 15:52:16  №1521178 466
Аноним 2019/11/14 16:36:38  №1521218 467
Аноним 2019/11/14 17:52:47  №1521283 468
Аноним 2019/11/14 18:01:15  №1521290 469
New videoMedium.mp4 (8690, 1280x720)
720x1280
Аноним 2019/11/14 18:19:48  №1521298 470
>>1521022
>А зачем в пыхе сделали $ перед переменными?

Что-бы можно было писать переменные переменные и переменные функции:

$var = 'hallo';
$var_name = 'var';
echo $$var_name; //напечатает 'hello';

function bar() {
echo ' world';
}
$func_name = 'bar';
$func_name(); //напечатает ' world';



Аноним 2019/11/14 18:45:26  №1521300 471
>>1521298
те $$ это что-то типа кастрированного евала?
Аноним 2019/11/14 19:09:33  №1521321 472
>>1521300
Я думаю, что $$ - реализованы совсем по-другому чем eval. Впрочем это не важно, как они реализованы, главное что они работают и иногда бывают очень полезны.
Аноним 2019/11/14 19:13:49  №1521323 473
>>1521321
Ни одного нормального использования придумать не могу и не видел, за всё время работы.
Лучший код - это явный код, когда точно понятно, что вызывается, когда, какого типа и так далее. Уверен, что со всеми трендами к типизации пыхи, $$ рано или поздно задепрекейтят.
Аноним 2019/11/14 20:10:12  №1521355 474
>>1521323
Насчёт переменных ты прав, но не на счёт функций. Запуск функций через $func_name() просто позарез необходимо в php и даже используется в стандартной библиотеке:
Вот пример передачи названия колбэк функции в качестве аргумента:
set_error_handler("handleError");
Аноним 2019/11/14 20:39:56  №1521366 475
Аноним 2019/11/14 22:46:37  №1521409 476

Аноним 2019/11/14 23:37:24  №1521410 477
>>1521323
>Ни одного нормального использования придумать не могу и не видел
Тоже хотел написать. Но передумал.

>>1521355
>Вот пример передачи названия колбэк функции в качестве аргумента:
>set_error_handler("handleError");
Анонимные функции, не?
360-477 Аноним 2019/11/15 07:40:12  №1521475 478
>>1521022

У тебя просто маленький кругозор. $ используется в bash и ее предках, в perl. В глобальных переменных в Ruby. В конце строковых переменных в BASIC.

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

>>1521102

Стрелочки используются в Си/Си++ для обращения к полям и методам через указатель на объект, а не через сам объект.

>>1521300

Нет. Это "переменная переменная", то есть обращение к переменной, чье имя хранится в другой переменной. Осложняет понимание кода и не рекомендуется к использованию. Аналогично, есть "переменные свойства" и "переменные методы", хотя я предпочитаю для них использовать более читабельный call_user_func.

>>1520797

Надо найти туториал по изготовлению приложения на Симфони, хорошие туториалы на английском. В ходе выполнения читать соотв. разделы документации, чтобы полностью разобраться в используемых компонентах, при необходимости не бояться залезть посмотреть код.
Аноним 2019/11/15 07:41:18  №1521477 479
>>1521218

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

>>1521178

> $word = explode(' ', $word);

Не стоит использовать одну переменную для хранения и массива, и строки. Лучше назвать их по-разному ($words и $phrase).

> $words = " ";
> $words .= $word;
Чтобы не мучаться с лишними пробелами, проще предложения с обрезанными trim() пробелами класть в массив, а в конце склеивать массив через implode. У тебя же в коде выводятся лишние пробелы в начале текста и тебе приходится кривым костылем добавлять пробелы после точек.

>>1521108

Первое не работает, так как explode не поддерживает регулярки. Надо использовать preg_split.

>>1520939

Отношение многие-ко-многим через таблицу связи.

Также, тебе в помощь урок про нормальные формы БД: https://github.com/codedokode/pasta/blob/master/db/normalization.md
Аноним 2019/11/15 07:42:06  №1521479 480
>>1519936

Задача выглядит достаточно простой для jQuery. Делаем список вида "при каком значении какие поля показывать". Более того, можно обойтись почти без JS, вешать на форму класс в зависимости от выбранного значения, а на скрываемые поля повесить атрибут, при каком значении класса их показывать:

<form class="type-x">
...
<div class="field" data-show-for="x y z"> .. </div>

> Сейчас везде и всюду говорится что jQuery не торт и его юзать нельзя.

Если не интересует поддержка старых браузеров, и лаконичность кода, то же самое можно сделать на vanilla js. Зачем тащить монстрообразный реакт, webpack, babel, JSX для этой задачи и связанные с ними головные боли, непонятно.

>>1519974

Динамические формы с валидациями нормально делаются на jQuery или vanilla js при грамотной архитектуре, и реакт не спасет их при неправильном проектировании. Будет такая же лапша. Наоборот, он потребует лишних затрат времени, сильно усложнит работу из-за внезапно всплывающих проблем, потребует ставить вебпак и грузить полмегабайта кода, итд. Например, работа с асинхронными аякс-запросами не самая веселая вещь и потребует добавлять всякие промежуточные состояния "идет загрузка" и "ошибка загрузки". Впрочем, это и на jQuery невесело.

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

И реакт (поправьте, если ошибаюсь) сам по себе эти проблемы не исключит. Все, что он делает - привязку (data-binding) отображаемых данных к данным "модели", которая там представлена огромным анонимным объектом.

А чтобы усложнять код внедрением SPA должна быть веская причина, а не "на хабре много статей про реакт".
Аноним 2019/11/15 07:42:48  №1521480 481
>>1520576

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

Лучше все же это делать в очереди задач.

>>1520697

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

Можно запретить это магическим методом __set.

> И раз все и так работает зачем что то объявлять в классе questoins?

Чтобы при чтении кода было видно, какие есть поля. Также, чтобы можно было добавлять к ним комментарии. А в новом PHP - указывать еще и тип значения поля.

Решение верное.

>>1520562

Надо перед тем, как платить и вычитать что-то, сравнить остаток долга и сколько ты готов заплатить. И взять меньшее из 2 чисел. Если долг = 7000, а у нас с собой только 5000, то платим 5000. Если долг = 2000, а у нас 5000 то платим 2000.

Аноним 2019/11/15 07:43:34  №1521481 482
>>1520566

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

>>1520521

Увы, никогда не интересовался этой темой. Но, естественно, если изучать только PHP и ничем больше не интересоваться, то упрешься в потолок. Крутые специалисты, даже если работают на PHP, обычно обладают кругозором (например: Си, линуксы). Можешь поискать на Хабре статьи про переезд, а также попробовать погуглить вакансии и посмотреть требования.

>>1520043

Используй if, либо тернарный оператор и не усложняй код.

>>1520096

Там есть поддержка старых браузеров.

Аноним 2019/11/15 07:44:52  №1521482 483
>>1520088

Можно пользоваться любой информацией, если это поможет.

>>1520023

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

Если ты глобально установил тот же Апач + mod_php или nginx + php-fpm, то в линуксе они обычно работают от имени пользователя www-data. И этому пользователю нужно иметь доступ к файлам хотя бы на чтение. А в те папки, куда будет писать Ларавель, еще и на запись.

Владельцем лучше назначить себя.

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

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

Аноним 2019/11/15 07:46:27  №1521483 484
>>1520031

>Вернее, что он написал, я понимаю, но что это за команды - нет. find какой-то - это же просто команда поиска, что она может сделать?

Она находит файлы и может выполнить определенную команду для каждого найденного. Вот сайт, который пытается объяснить разные опции в команде: https://explainshell.com/explain?cmd=find+%2Fvar%2Fwww%2Fhtml+-type+f+-exec+chmod+644+%7B%7D+%5C%3B (исполнительные идиоты в моем провайдере зачем-то его блокируют).

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

Также, может тебе поможет гайд по основам CLI https://github.com/codedokode/pasta/blob/master/soft/cli.md

> Всё равно не работает. Если положить в корень test.php, то он нормально отрабатывает, а Ларавел нет.

Проверь командой stat или ls -l, какие права стоят у файлов Laravel, в том числе index.php или что там используется вместо него. Проверь лог веб-сервера, к какому файлу доступа нет.

>>1519817

Вот тебе в помощь важные моменты, о которых надо помнить при использовании AJAX-запросов: https://github.com/codedokode/pasta/blob/master/js/ajax.md

И правильно пишут, нужна защита от уязвимости CSRF.
Аноним 2019/11/15 07:47:56  №1521484 485
>>1519676

Тут не требуется две переменные $x и $b, если они всегда равны, хватило бы одной. Просто писать $sum = $x*$x;

> $x < 10, $b < 10

Это не имеет смысла, так как тут мы пишем не команду, а условие. Запятая используется, чтобы вписать несколько выражений в первый или третий блок, а во втором пишут условие проверки. В нем можно использовать && или ||, но нет смысла ставить запятую.

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

for (действия до начала цикла; условие продолжения; действия после каждого шага) { ... }
for (тут можно запятую; тут не имеет смысла ; тут можно запятую) { ... }
Аноним 2019/11/15 08:17:38  №1521501 486
Аноним 2019/11/15 08:44:29  №1521529 487
Всем привет, создал группу для вкатывающихся в пхп, я сам сейчас на этапе создания списка студентов, более опытные антоны тоже приветствуются.
https://t точка me/anonaprphp
Аноним 2019/11/15 09:20:32  №1521570 488
>>1521529
Этих групп как говна за баней.
Аноним 2019/11/15 09:23:23  №1521571 489
Хочу вкатиться в вордпресс и получать миллионы долларов с фриланса, насколько это сложно и скок времени займет примерно, учитывая что знаю нормально питон/джангу и похапе.
Аноним 2019/11/15 15:39:51  №1521908 490
Аноним 2019/11/15 15:42:24  №1521917 491
>>1521481
>и не усложняй код.
Ясно, вы нихуя не понели.
Кучи скобочек - вот что усложняет код.
Сделать что-то с переменной, если она не null - это настолько частая операция, что для нее очень не помешает однострочная языковая конструкция.
Аноним 2019/11/15 16:41:55  №1521980 492
>>1521917
>Кучи скобочек - вот что усложняет код.
С каких это пор группировка усложняет код?

>это настолько частая операция
По твоему коду не скажешь, что ты способен оценить насколько это частая операция.
Аноним 2019/11/15 17:06:58  №1522009 493
Есть ли у кого то пример кода задачи про компанию "Вектор"?
Не могу допереть что от чего наследовать: отдел от сотрудника, или сотрудника от отдела.
Аноним 2019/11/15 18:47:15  №1522112 494
>>1522009
А у них что-то общее есть, чтобы наследоваться?
Аноним 2019/11/15 20:06:04  №1522159 495
>>1522112
Вроде бы нет. Я просто вижу очевидную связь между тем, что бы наследовать Профессии от Сотрудника. Но как должны взаимодействовать класс Сотрудник и Департамент?
Аноним 2019/11/15 21:20:56  №1522203 496
>>1522159
Ты совершаешь классическую ошибку новичка, пытающегося в ООП - пытаешься применить его там, где оно не нужно.
По сути, забиваешь гвозди микроскопом.
Так вот, наследование - это инструмент, который предназначен для - сюрприз - наследования (расширения) свойств и поведения одного объекта другим. И реально применяется в довольно узком наборе случаев, кроме шуток. Например, когда у тебя есть класс "модель", которая работает с базой данных и в этом случае все "модели" типа юзера, отдела и так далее также являются моделями.

В твоём случае, отдел является сотрудником (или наоборот)? А сотрудник является профессией (или наоборот)? Если нет, то тебе вообще не стоит наследовать их.

Не читал твою задачу, но вообще отдел и сотрудник - это два разных объекта твоей предментной области, а профессия является скорее всего свойством сотрудника.
То есть, у тебя есть классы условно сотрудник, отдел, профессия и у сотрудника должны быть поля "ид профессии", "ид отдела".
Аноним 2019/11/15 22:22:31  №1522277 497
>>1522203
Спасибо. Вроде бы понял. Завтра попробую
Аноним 2019/11/15 22:44:24  №1522311 498
>>1522159
У тебя какая то каша получается.
Немного расширю то, что писал >>1522203
У тебя есть класс сотрудник. Далее у тебя есть класс сторож, класс продавец и класс директор. Они являются сотрудниками. Т.е наследуют из базового класса какие то общие свойства и методы. Например у них у всех есть рабочий график, оклад, стаж, дата приема на работу и какой нибудь метод расчета коэффициента зп который высчитывается на основании стажа и времени работы в предприятии.
А вот что ты собрался наследовать сотруднику от отдела - для меня до сих пор загадка.
Аноним 2019/11/15 22:45:18  №1522312 499
Упс сажа приклеилась
>>1522311
Аноним 2019/11/15 23:28:46  №1522329 500
>>1522311
>Далее у тебя есть класс сторож, класс продавец и класс директор.
Я бы под это классы не делал - с точки зрения кода сторож, продавец и директор являются обычными сотрудниками. Достаточно им в свойство прописать ид должности.
Аноним 2019/11/16 00:28:42  №1522336 501
Двач, помоги, пожалуйста
Я хочу подружить ckeditor с ларкой. Он генерирует выход в html тегах. Только выход через {{}} всё успешно экранирует и я вижу <b>хуй</b> текст. Если убрать проверку, то мне могут поднасрать, сохранив напрямую через post, например. Если вырезать все эти script, onclick и так далее, то можно так же с веселым гиканьем испортить текст юзверу. Как мне усесться сразу на два стула?
Аноним 2019/11/16 00:33:48  №1522339 502
>>1522329
двачую
композиция > наследования, школьники забывают вечно
Аноним 2019/11/16 00:38:34  №1522341 503
>>1522336
никак. найди какой-то редактор, который в bbcode или markdown будет текст размечать, и из него уже комментарии рендери
Аноним 2019/11/16 00:40:19  №1522342 504
>>1522336
либо, как очень хуевый вариант, можешь сделать свой валидатор, который будет только разрешенные теги без аттрибутов сохранять. но ето ебала и ты точно где-то проебешься, такие дела
Аноним 2019/11/16 00:49:37  №1522346 505
>>1522341
>никак
Ох. А как тогда справляются другие? Редактор популярный вроде

Я тут пока надумал оставить поддержку только всяких br и h2, куда точно не навесить скрипты, а все остальное спецсимволами замещать
Аноним 2019/11/16 00:51:30  №1522349 506
>>1522346
>куда точно не навесить скрипты
Отбой, я почему-то думал, что оно не поддерживает onclick


Мде
Аноним 2019/11/16 00:57:19  №1522353 507
>>1522346
Добавляют только в админку такие штуки вроде. Для пользователей давно не видел. Если я не прав, анон покажет.

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

Поэтому разметку рили лучше на маркдауне каком-то хранить, или посмотри другой, который тебя устраивать будет.
Аноним 2019/11/16 01:06:38  №1522354 508
>>1522353
>>1522346
Ну, это не только мобильных приложений касается. Для магазинов, например, те же выгрузки товаров создавать если для маркетплейсов.
Мой опыт показывает, что если менеджерам/маркетологам дать возможность где-то большой красный текст въебать, они его обязательно въебут. А если не давать, то они обязательно попробуют. А ты потом ахуевать будешь, глядя в базу, сколько говна они наворотили.
Поетому если есть возможность, лучше сразу донести до бизнеса, что такие редакторы веселых табличек потом могут кучу проблем сделать и это какбы много часов работы.
Аноним 2019/11/16 01:37:46  №1522357 509
>>1522339
На самом деле там ид должности не надо - это доменный объект и там уже должно само имя должности содержаться.
Я сам тот ещё нуб.
Аноним 2019/11/16 06:39:25  №1522419 510
>>1522329
>>1522339
Meh. Это простой пример в вакууме придуманный за 2 минуты.
Аноним 2019/11/16 11:25:59  №1522599 511
Аноним 2019/11/16 13:08:25  №1522669 512
кто пишет на зенд?
Аноним 2019/11/16 14:11:25  №1522716 513
>>1522669
бекендеры заднеприводные?
Аноним 2019/11/16 14:29:22  №1522736 514
Аноним 2019/11/16 14:57:52  №1522757 515
Аноним 2019/11/16 15:30:30  №1522769 516
>>1522736
Да просто никто на нём не пишет почти, что хорошо, херовый фреймворк этот зенд.
TAXI-кун 2019/11/16 20:13:20  №1522954 517
1111 (01).webm (38524, 1280x720)
720x1280
Крутить баранку, таксовать, это конечно отупляет.
Прилично так просидел за задачкой с айфоном. Читал старые треды, смотрел как другие решали, ваще муть конечно, помогла эта подсказка - прибавляем проценты и комиссию к остатку долга (!не вычитаем ничего пока!)
Вроде уловил логику, теперь кажется каким то простым и понятным.

https://ideone.com/MXyHO1
>>1521484
Спс, мне надо все внимательно изучить и вопросов у меня дофигища, например почему сейчас работает эта строка, а не эта, почему эта переменная сейчас такая и тд. Но поищу сперва в книге.
Аноним 2019/11/16 20:48:14  №1522966 518
Бросаю работу в офисе и вкатываюсь во фриланс, буду ковырять вордпресс и всякие правки делать в верстке, мне 400-500р в день хватит на жизнь, какие подводные? опыт работы 1 месяц в конторке бекендером.
Аноним 2019/11/16 21:58:43  №1522990 519
>>1522954
У тебя в последней строке вывода подсчет суммы выплатты ломается.
Аноним 2019/11/16 22:00:26  №1522992 520
>>1522990
А, не, все ок, сорян.
Аноним 2019/11/16 22:03:37  №1522995 521
1573941789739.jpeg (70, 500x503)
503x500
>>1522966
> какие подводные?
Все зависит от того что ты из себя представляешь. А учитывая что
> опыт работы 1 месяц в конторке бекендером.
Думаю что пока что мало что. Хотя мб у тебя есть портфолио.
У меня опыт фрилансинга был 4 года назад на фл.сру. Это ебаная помойка. Сейчас не знаю что и как там но думаю в лучшую сторону нихуя не поменялось. Про акк щя стоит 2к лол нахуй.
1. Адекватных заказчиков там 1%. Да и то они обычно выбирают того у кого репа не по нулям. Остальные дают задачи на уровне "сверстать лендос адаптив пихельперфект за ночь бюджет 1к пожалуйста отнеситесь серьезно!!!! Кто не готов ни откликайтесь!!!! Оплата только после того как скините вёрстку!!!! В начале ответа напишите "Владимир Путин молодец"!!!!
1.1 сразу готовься к тому что тебе придется САМОМУ ОБЩАТЬСЯ с самыми тупыми заказчиками. И улыбаться и отвечать на из вопросы если хочешь чтоб тебе заплатили твои 500р.
2. ВордПресс вобрал в себя все самое худшее на что способен пхп. Когда будешь исправлять какой нить баг на новом проекте охуеешь от плагинов/тем и от синтаксиса. Там каждая макака придумывает свои стандарты. Проще фреймвор выучить.
3. Ты будешь сидеть дома. А если у тебя с дисциплиной все по плохо...
4. Придется постоянно мониторить новые проекты и пытаться их отбить от индусов которые делают все за 100р.
5. Постоянно будешь трястись за рейтинг и отзывы.
Мой совет короче. Поработай на галере год а там уходи
Аноним 2019/11/17 00:42:01  №1523015 522
>>1522954
>/ Посчитаем расходы 20 раз на 20 месяцев вперед /
Так неправильно делать. Нет никаких 20 месяцев - есть только кредит и выплата. Месяцы код сам должен считать, насколько помню.
Программирование на то и программирование, что цифры любые могут быть, вплоть до 999 месяцев.

>for ($month = 1; $month <= 20; $month ++) {
>...
> if ($creditBalance <= 0)
> break;
Лолб. Цикл со счётчиком превращается в штаны в условный цикл который и надо было использовать изначально.
Совместимость Slim 4 и Twig Аноним 2019/11/17 05:10:52  №1523056 523
Анончики, начал делать задание про файлообменник. Поставил slim 4 и twig, но вместе они не хотят работать. Ошибка "Using $this when not in object context". Поставил Slim 3 и всё норм, работает. Можно как-то поправить, чтобы Slim 4 работал с Twig?
Аноним 2019/11/17 08:18:59  №1523085 524
>>1523056
>slim 4
Мне он вообще не понравился - они зачем-то статику запилили в передаче сервисов.
Аноним 2019/11/17 10:00:28  №1523127 525
>>1522995
Спасибо за развернутый ответ, понимаю что вордпресс говно, но он слишком популярен чтобы его игнорировать, я еще подумывал удаленку выбить, видел вакансии куда не требуется опыт каким-нибудь версталой, можешь что про это рассказать?
Аноним 2019/11/17 12:15:01  №1523253 526
>>1523127
>он слишком популярен чтобы его игнорировать
90% заказов на нём - нищеброды за 500р.
Аноним 2019/11/17 12:16:50  №1523259 527
>>1523127
>видел вакансии куда не требуется опыт каким-нибудь версталой
Кидал уже отменили? Месяц отработаешь за спасибо.
Аноним 2019/11/17 12:40:50  №1523280 528
>>1523253
Двачую. Он популярен в нише индусятины и низкоквалифицированной рабочей силы за копейки. Там, где нормально платят, вакансий по вордпресу не наблюдается.
Аноним 2019/11/17 12:52:58  №1523295 529
>>1523259
Пока труд договор не заключу работать не буду.
Аноним 2019/11/17 12:54:02  №1523299 530
>>1523295
Тогда тебе перезвонят.
Аноним 2019/11/17 12:58:42  №1523306 531
Вот это вот, то что в шапке советуется для новичка http://codedokode.github.io/phpbook, это норм курсик для стартующего или получше чего можно найти?
Аноним 2019/11/17 13:01:18  №1523311 532
Аноним 2019/11/17 13:10:56  №1523323 533
>>1523299
Ну 10 контор перезвонят, 1 возьмет на работку.
Аноним 2019/11/17 13:13:02  №1523325 534
Аноним 2019/11/17 13:14:26  №1523326 535
>>1523323
Если портфолио нет хоть какого - не возьмёт никто. 1 месяц опыта в какой-то шаражке не катит.
Нах ты нужен кому без скиллов, кроме как разводилам всяким?
Аноним 2019/11/17 13:17:57  №1523330 536
Аноним 2019/11/17 13:21:40  №1523334 537
>>1523330
А не для идиота с чего начать лучше? Знакомы спрашивает.
Аноним 2019/11/17 13:25:02  №1523338 538
>>1523326
Есть несколько сайтов и пару скриптов на петухоне в гитхабе, скиллы мои на собесе проверят.
Аноним 2019/11/17 14:37:19  №1523407 539
http://codepad.org/qgxRoWag
В чём может быть проблема?(повторений много)
Знаю, говнокод
Аноним 2019/11/17 14:45:07  №1523410 540
>>1523407
Проблема в рандоме?
Нахуй ты закрываешь радость мира
Аноним 2019/11/17 15:56:44  №1523469 541
>>1523407

Поставь после echo $text; строку echo "------\n"; и повысь число шагов в цикле до 10.

И тогда наверно поймешь.
Аноним 2019/11/17 17:54:48  №1523566 542
>>1523127
>Спасибо за развернутый ответ, понимаю что вордпресс говно, но он слишком популярен чтобы его игнорировать,
Когда будешь пытаться исправить/допилить что-то на вп ты проклянешь все на свете. Аноны >>1523253 >>1523280 дело говорят.
Один раз редактировал форму комментариев. Добавлял поле. Так вот. В этом говне нет мб ща есть шаблона формы. Все блять через функции нахуй добавляется. Удобно, правда?
Плюс знаешь почему он популярен? Потому что всякие пиздодельные заказчики, желая сэкономить, ставят бесплатные плагины, в которых ВНЕЗАПНО находятся анальные плаги. И в один прекрасный момент сайт вирусится. Там на самом деле куча всяких прикольных моментов может быть. Например редирект юзеров с сайта, при рефере, например, с гугла. И как бы в коде все окей. Симптомов заражения нет.А трафик падает.
Понаставят там свои сео свистелки и перделки, которые все мета теги превращают в суп с говном, а потом ой чойта все сламалось это ты веноват!!111 до того как тебе дал в руки сайт все роботало!1111111 АЙ АЙ АЙ ПОЗИЦИИ ПАДАЮТ!!11111
Короче не стреляй себе в ногу. Серьезно. в /web чувак писал про то, как они там темы для вордпресса продавали. Поищи тред. Там треш.
Я уже не говорю про настройку интернет магазина(!!!!) на вордпрессе. Напоминаю, что wp это изначально система для блога!
Учи фреймворки, не проебывай время. Один день изучения фрейворка для тебя будет полезней, чем 1к проектов на WP за 100р.
> я еще подумывал удаленку выбить, видел вакансии куда не требуется опыт каким-нибудь версталой, можешь что про это рассказать?
Меня друг спас с фриланса. Я на контору, в которой он работает, работал удаленно. Так. Макака эникейщик. Потом я пошел без нормального опыта и с минимальным набором знаний в местную контору практически за еду. И там с трудом, но начал развиваться. С самого начала психологически помогало то, что рядом есть кто-то, кто может помочь / подсказать.
Ща вот думаю куда дальше двигаться. По идеи надо бы перекатывать в дс/дс2. На удаленку не хочу. Ибо целый день дома такое себе.

Аноним 2019/11/17 19:13:20  №1523645 543
>>1523334
>Знакомы спрашивает.
А он безрукий что ли - сам пост написать не может?
Аноним 2019/11/17 20:29:02  №1523719 544
>>1523566
>Учи фреймворки, не проебывай время. Один день изучения фрейворка для тебя будет полезней, чем 1к проектов на WP за 100р.

Согласен, но за учение фреймворка мне платить не будут, в лучшем случае только через пару месяцев и то в офисе, на фрилансе/удаленке нужны мидлы, а вот на задания с CMS можно претендовать без опыта вообще, хотя и экосистема этих цмс невероятно хуевая.
Аноним 2019/11/17 20:44:41  №1523738 545
>>1523719
Напиши себе в резюме год работы фрилансом на пхп и пиздуй жуном в какую-то крупную контору. По ходу дела будешь учиться, жолжно взлететь если ты не tupoy. Ну там скажи, что на yii первом работал. Его все-равно уже не юзает никто, так что сможешь время пока тупить будешь АДАПТАЦИЕЙ К НОВОМУ ФРЕЙМВОРКУ объяснить. Ну ты только там, что такое классы и mvc прочитай перед собесом.
Анон правду говорит, что вордпресс это пиздец. Опыт на вордпрессе за опыт не считается. Вордпресс юзают в основном те, у кого денег нету и тебя будут наебывать и кидать (ну или платить 500 рублей, что одно и тоже).
Аноним 2019/11/17 21:47:54  №1523768 546
>>1523738
Да пускай лезет на этот ВП, зачем вы его отговариваете?
Хочется человеку в говне с мухами копаться за копейки - так на здоровье.
Аноним 2019/11/17 22:33:56  №1523788 547
>>1523719
Есть 2 пиздец какие хуевые cms с которыми приходилось работать - жумла и ВордПресс. Их избегай по возможности.
Есть битрих - он кривой пезда. Но за него платят. И есть смысл в нем разбираться. Хотя и неприятно. Вроде его позиционируют как фреймворк сейчас. Пиздец блять.
Анон кстати хороший совет даёт >>1523738. Хз правда получится ли у тебя это провернуть на удалёнке. Обычно конторам удоленщики нужны чтоб кидать нудную и низко оплачиваемую работа на которую тратится обычно много времени и после которой хочется выпилиться помню как то всю ночь исправлял ошибки html синтаксиса на страницах древнего сайта лол.
Плюс там могут тебя поставить на повременную оплату с учётом времени в каком нить ебаном битрих24. А потом в конце месяца тебе пишет начальник "почему на такую то задачу потратил час вместо 15 наносек?" И начнется мозгоебля на 2 часа по каждой задаче. Плюс за день могут понаставить 2 задачи суммарно за которые получишь 200р, а могут 69 задач за которые ты тоже плачешь 200р которые нужно сделать ещё вчера.
Короче может быть весело. А может и нормальное что попадется.
А почему ты уходишь с текущей галеры после месяца плаванья? И почему хочешь именно хикковать?
Аноним 2019/11/18 08:15:43  №1523879 548
Блядь, опять в нихуя не делание вкатился незаметно.
Я плачу по ночам в подушку и прошу Всевышнего дать мне уже дисциплину и силу воли.
Так обидно уже ну почти-почти вкотившись топтаться на пороге.

Истино успех/не успех - только лишь следствие личностных качетств человека. Чел с сильной волей и упорстовом вкотится за полгода.
Аноним 2019/11/18 08:41:23  №1523893 549
>>1523879
Просто тебе это не нужно. Если бы у тебя заканчивалась еда и ты или вкатился бы, или умер от голода - не было бы проблем с мотивацией.
А так, ты подсознательно ощущаешь, что тебе и так хорошо и потому не делаешь нихуя.
Аноним 2019/11/18 08:59:58  №1523903 550
>>1523788
Я кстати прикидывал, как бы я сделал заебись cms - и пришёл к выводу, что нет смысла, кардинально лучше чем есть уже не сделать.
Всё дело в том, что лучшее на текущий момент представление бизнес-логики - это программный код (по сути, формальный язык описания бизнес-правил и бизнес-механизмов), со всеми его встроенными механизмами типа ооп, метапрограммирования, комментирования, тд и экосистемой с контролем версий, статическими анализаторами, тестами и всё такое.
А cms-ки - они не про код, они про накликивание всего в интерфейсе и использование каких-то готовых кусков кода, встраиваемых в некую уже существующую систему, то есть априори про что-то менее гибкое, менее проработанное и более волшебное.
Даже если прикрутить кодогенерацию и на основе накликанностей будем генерировать правильный код на божественной симфони, то в итоге пользователи всё равно будут взаимодействовать с такой цмс через кнопочковый интерфейс, что возвращает нас к предыдущему состоянию, когда работа ведётся не программированием, а еблей настройкой внешних модулей.

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

Из всех известных мне вариантов, на двух стульях более-менее ровно пытается усидеть только Drupal, но в итоге они от этого же и страдают. Их охуенная без шуток, кстати, лучшая среди всех cms'ок архитектура задирает сложность, не позволяя мартышкам быстро лабать говносайтики, что завышает стоимость часа разработки и пугает клиентов - а cms-очная суть (основанная на накликиваемой магии) не позволяет нормально программировать эту штуковину.
Аноним 2019/11/18 09:37:35  №1523922 551
>>1523788
7 лет опыта. Вообще никогда в жизни не работал с цмсками. Начал с написания говносайтиков с каким-то чуть-чуть кастомным функционалом на чистом. 7 лет назад толи они еще не оч популярные были, толи я дурачек был. Потом пошел работать в ентерпрайз.

Один раз папке на вордпресе установил яндекс-метрику. Попробовал засунуть ее код хедера, посмотрел, что они нихуя не на всех страницах подгружается - подумал, что ну его нахуй в етом говнище разбираться и плагин для яндекс-метрики ему скачал. Такие дела.
Аноним 2019/11/18 10:23:14  №1523959 552
>>1523893
Ты сейчас описал причины по кторомы 90% населения скатвыыается в пизду.

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

Единственное мы люди осознаем свои косяки,и потенциально можем влиять на себя.
Аноним 2019/11/18 10:26:33  №1523963 553
>>1523903
>>А cms-ки - они не про код, они про накликивание всего в интерфейсе...
Чет ты мудришь.
cms этот про то что бы собрать сайт\блог\магазин не имея вообще навыков программирования. цмс заняли свою нишу. И огромное количество людей ими пользуются имея только зайчаточные знания прогинга. Или даже не имея их вообще.
ЦА цмс - не программисты вообще.
Аноним 2019/11/18 11:27:42  №1523990 554
Если я знаком с фреймворками, а мне дадут срочно сделать задание на cms - я не растеряюсь? Или там совсем все просто?
Аноним 2019/11/18 11:52:17  №1523996 555
реал-тайм система на пхп,херовая затея?
Аноним 2019/11/18 12:02:23  №1524002 556
>>1523990
Недооцененный комментарий сарказм, анон твой вопрос пипец дегенеративен
Аноним 2019/11/18 12:04:45  №1524004 557
>>1523963
Я всё о том же, о чём и ты, просто раскрыл полнее. CMS не может стать идеальным программным продуктом, потому что от неё требуют универсализации и простоты на уровне загружаемых компонентов и зачаточных знаний разработки. И чем сильнее ты делаешь CMSку более "программируемой" тем сильнее ты толкаешь её в сторону от ЦА.
Аноним 2019/11/18 12:12:57  №1524013 558
>>1523996
Зависит от нагрузки и финансовых возможностей. Если речь о сотнях RPS с откликом до секунды, то осилишь.

>>1523990
Если у тебя будет задача срочно что-то сделать в любой незнакомой системе, то ты растеряешься. Это нормально, потому что - сюрприз - система незнакомая, а все системы, все cms-ки и все фреймворки ты никогда знать не будешь или ебанёшься в процессе. Выбирай один нормальный фреймворк симфони или ларавел, тут уже десятки анонов уже писали об этом, каждый 10-й пост одно и то же и специализируйся на нём, хотя бы первые 2-3 года, пока учишься. Изучай бест-практики, архитектуру и всё такое.
Аноним 2019/11/18 12:22:31  №1524022 559
>>1523893
>Просто тебе это не нужно. Если бы у тебя заканчивалась еда и ты или вкатился бы
Как вкатывание даст ему еду? На вкат нужно время, а жрать нужно каждый день и желательно несколько раз в день.
С такой логикой проще вкатится в курьеры или в пятерочку, жрать будет что.
Аноним 2019/11/18 12:22:56  №1524023 560
>>1524013
>Если речь о сотнях RPS с откликом до секунды
проэктное предположение-1к в сек
Аноним 2019/11/18 12:55:43  №1524050 561
>>1523879
Да такая же хрень. Второй месяц пишу в лучшем случае пару строк иногда больше бывает, да на форумах сру, но ничего толком не изучаю.
Типа наступил на грабли прокрастинации. Алсо заметил, что лучше не забрасывать больше чем на пару дней - потом пипец лень уже будет по-новой начинать.
Аноним 2019/11/18 13:04:14  №1524058 562
>>1524023
Ну короч смотри, это на самом деле более чем реально для чистого php без особого тюнинга. Но самое тяжёлое место - это как правило база данных и операции над большими данными, тебе в первую очередь нужно думать над тем, как именно ты будешь решать такие проблемы, проектировать архитектуру с учётом кэширования, всяких materialized view, предподсчётов и всё такое. Во вторую очередь, тебе следует подумать над транспортом, что именно использовать для связи компонентов, сокет или ещё что-то, нужен ли тебе двусторонний мессаджинг, постоянное соединение, всё такое. Тут всё ещё зависит от того, клиент-серверное у тебя приложение, или какой-то обработчик крутится прямо на клиенте. Во втором случае всё проще с транспортом, но сложнее с ограничениями по памяти.
И уже потом, сформулировав все требования к архитектуре, выбирай язык и фреймворк. Можешь собрать всё и уже здесь написать повторно, мы тебе точнее скажем.

В двух словах - на php такое сделать можно, если руки растут из правильного места.
Аноним 2019/11/18 13:11:55  №1524064 563
>>1524058
>на php такое сделать можно, если руки растут из правильного мест
читал статьи,где не рекомендуют такое на пхп,советуют ноду с сокет ио и монгой.
на самом деле динамики там не сильно много будет,примитив,но нужный примитив.структура БД примитивна.за основу всзять ларку и прикрутить уже эту фичу
Аноним 2019/11/18 13:36:48  №1524101 564
>>1524064
Монгу точно советуют необоснованно, любая база будет достаточно быстрой на маленьких масштабах.
Нода действительно лучше подходит для реалтайма за счёт своего встроенного неблокирующего IO.
Но php тоже справится, хоть и несколько хуже. Вопрос в том, как ты его приготовишь. Соответственно, если хорошо знаешь пыху и плохо ноду - бери пыху и читай, как готовить или бери и то, и то и использую ноду как прокси, нормальное решение. Если опыт примерно никакой и там, и там, то бери ноду, будет попроще.
Аноним 2019/11/18 13:42:57  №1524112 565
>>1524101
>Нода действительно лучше подходит для реалтайма за счёт своего встроенного неблокирующ
а свул?
Аноним 2019/11/18 14:37:46  №1524153 566
>>1524112
Нода архитектурно заточена под неблокирующие операции, а php-нет. Как свул поможет, если в пыхе работа с файловой системой блокирующая? ORM-ки блокирующими операциями пользуются? Библиотеки не чистят статический кэш, потому что никто не подумал о том, что приложение демонизируется? Ну и сам-по-себе свул - это всё-таки не родной компонент экосистемы, а что-то внешнее, чёрт его знает, как оно может проявиться и когда. А дебажить сегфолты - это крайне неблагодарное занятие (поэтому я бы скорее amp взял, он хотя бы на корутинах построен, а они для пыхи родные)

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

Ну или можно взять amp/swoole/reactphp/ratchet, но они меня все так или иначе напрягают своей чужеродностью для пехапешной экосистемы. Но ты можешь попробовать, вроде так тоже делают и оно даже работает.
Аноним 2019/11/18 18:23:21  №1524293 567
Сука так впадлу последнюю неделю дорабатывать в офисе, просто пизда, зато потом уволюсь, поживу недельку и на удаленочку сяду.
Аноним 2019/11/18 18:42:04  №1524302 568
Аноны, как правильно делают - есть оче большая форма, в ней некоторые поля скрываются/появляются. Соответственно в результате в $_POST разные данные.
Как мне "деактивировать" лишние/скрытые в данный момент инпуты, что бы они не появлялись пустыми полями в $POST?
Аноним 2019/11/18 19:18:16  №1524327 569
>>1524302
Тут разобрался - атрибут disable. Но опять же, из JS его можно изменить. Данные присылаемые как то на беке проверять? Типа для каждого вариант своя некая маска.

Такой вопрос - допустим поьзователь загружает мне на сервак пять своих файлов - как правильно их временно сохранить? СОздавать уникальный и временный каталог куда они будут загружаться?
Аноним 2019/11/18 19:32:53  №1524335 570
>>1524327
>Данные присылаемые как то на беке проверять?
Да.

>СОздавать уникальный и временный каталог куда они будут загружаться?
Можно и так.
Аноним 2019/11/18 20:09:32  №1524365 571
>>1524002
Мимо дегеративного вопроса не судьба пройти? Хуево тебе живется наверное
>>1524013
>Если у тебя будет задача срочно что-то сделать в любой незнакомой системе, то ты растеряешься.
Да, я понимаю. Просто я с cms не знаком, но ковырял yii/lara/symf. Вот и возник поврос, стоит ли время уделять на ознакомление с цмс-ками, или забить болт и дальше учить фреймворки.
>Но php тоже справится, хоть и несколько хуже
Я конечно хуй с горы, но имхо для всего есть свой инструмент. Забивать гвозди отверткой можно, но не нужно ведь
>>1524302
Валидация же в любом случае нужна. Допустим я тебе запрос не через формочку отправлю, с нужными мне данными, без валидации никак же
Аноним 2019/11/19 05:09:21  №1524477 572
>>1524365
> Я конечно хуй с горы, но имхо для всего есть свой инструмент. Забивать гвозди отверткой можно, но не нужно ведь

Продолжая твою аналогию, "лучше, конечно, пилить деревья бензопилой, но если не умеешь ей пользоваться - возможно, проще будет топором".
Аноним 2019/11/19 06:06:06  №1524488 573
Где почитать стандарты написания документации, например
var_dump ( mixed $expression [, mixed $... ] ) : void
как вот эти все скобочки расставлять внутри, для чего многоточие как правильно именовать "абстрактный" аргумент, я уверен, где то есть стандарт этого всего вот. Код быстро разрастается, иногда трудно вспомнить даже порядок аргументов или метод например, хочется конструкторы и публичные методы вынести на одной страничке в алфавитном порядке где все легко найти будет. Загуглить не смог, все не то.
Аноним 2019/11/19 06:33:29  №1524499 574
>>1524477
Это в случае если ты мимопроходил, а не нормальный специалист
Аноним 2019/11/19 06:45:31  №1524503 575
>>1524499
Это смотря где я мимопроходил, а где нет.
Я сразу написал, что:
> Соответственно, если хорошо знаешь пыху и плохо ноду - бери пыху и читай, как готовить или бери и то, и то и используй ноду как прокси, нормальное решение. Если опыт примерно никакой и там, и там, то бери ноду, будет попроще.

Надо писать на том, что знаешь, потому что всё что угодно можно сделать на каком угодно языке на самом деле. Вопрос в затратах, а потратишь ты меньше там, где ты уже разбираешься.
Аноним 2019/11/19 15:20:31  №1524769 576
Суп, жвач. Помоги дурачку, чот я где- то обсераюсь (вирт. серв мне даже говорит, где), не могу понять, как фиксить и куда исправлять.
Помогай, прошу.

При вводе числа и нажатия на кнопку происходит целое ничего.
Аноним 2019/11/19 15:28:37  №1524774 577
>>1524769
Оно очевидно не приходит, поэтому на 19 строке у тебя вываливается первый нотис, в $_POST нет поля 'number'.
Из-за этого в $var тебе пишется null, после чего ты на 33 строке пытаешься сделать echo $array[null], а ключа null в этом массиве очевидно нет. Вот тебе и второй нотис.
Аноним 2019/11/19 15:32:51  №1524777 578
>>1524774
>в $_POST нет поля 'number'.
Но я же в 9 строке делаю ему number.
Аноним 2019/11/19 15:33:13  №1524778 579
>>1524777
В 8 строке

Быстрофикс.
Аноним 2019/11/19 15:41:12  №1524783 580
>>1524778
Посмотри внимательно на свой инпут на 8 строке. Очень внимательно. А лучше возьми инпут мыла из формы ответа двача и сравни со своим
Аноним 2019/11/19 15:51:06  №1524802 581
>>1524783
В форме двача тип - текстовый, параметр value пуст (тут- то я и проебался, кажется), есть имя.

Изменил свой инпут:
type="int" value = "3" name="name" (3 для тестов)
Так же $post указал name.

На странице из строки пропал number, но все так же указывает на две ошибки, только теперь в 19 строке написано:
Undefined index: name

ЧЯДН, анон?

Аноним 2019/11/19 16:13:13  №1524815 582
Аноним 2019/11/19 16:19:05  №1524822 583
>>1524802
Учи английский. А лучше выведи весь массив $_POST
Аноним 2019/11/19 16:32:52  №1524835 584
>>1524822
>array (size=1)
> 'butt' => string 'Результат' (length=18)

Как я понял, он взял последнее, что в него заносили, а первое не успешно забыл нахуй. Я прав?
Как тогда сделать два POST запроса, чтоб они не перемешались? Или тут лучше поочередно делать ГЕТ и ПОСТ?
Аноним 2019/11/19 16:47:09  №1524841 585
>>1524835
Аноны, я уже перепробовал многой хуйни, не знаю, как это выполнить. Я совсем дурак, блять, что ли?
Аноним 2019/11/19 17:11:22  №1524856 586
>>1524769
Разве <p> имеет свойство method?
Аноним 2019/11/19 17:13:02  №1524858 587
>>1524841
Вёрстку учи - рано тебе пхп ещё.
Аноним 2019/11/19 17:58:08  №1524878 588
>>1524856
>>1524858
Блять, я шизоид. Точно же.
Спасибо, что напомнили.
Аноним 2019/11/19 23:11:02  №1525031 589
Вопрос по четвёртой симфонии.
Шаблон твиг всегда задействуется через метод render?
Разбираю чужой код, через поиск по директории не нахожу имена некоторых твиг-шаблонов.
493-589 Аноним 2019/11/20 02:15:55  №1525060 590
>>1525031

Нет, есть еще аннотация @Template в контроллерах.

>>1524769

Тебе стоит изучить формы в HTML. Набери в гугле "HTML5 формы" и прочитай первые 10-20 результатов. А только потом возвращаться к PHP.

У тебя input находится вне формы, и не имеет атрибута name. Потому он не передается при отправке формы.

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

- https://www.w3.org/TR/html52/sec-forms.html#configuring-a-form-to-communicate-with-a-server
- https://www.w3.org/TR/html52/sec-forms.html#forms-form-submission

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

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

Также, в строке 19 ты делаешь ошибку. Массив POST может быть пуст, и обращение к несуществующему полю выдает ошибку. Так быть не должно, надо проверять наличие элемента в массиве перед тем, как что-то с ним делать.

Аноним 2019/11/20 02:17:25  №1525062 591
>>1524835

Нет, неправ. POST отражает содержимое тела присланного браузером POST-запроса. Подробно, как именно формируется массив, описано в документации PHP:

- https://www.php.net/manual/ru/language.variables.external.php
- https://www.php.net/manual/ru/reserved.variables.post.php

Стандарт HTML описывает, как POST-запрос формируется браузером, а эта документация - как его разбирает PHP. Не ленись читать документацию.

Если ты плохо знаешь протокол HTTP (почему?), то в помощь мой недописанный урок: https://github.com/codedokode/pasta/blob/master/network/http.md

>>1524488

Про скобки в мануале описано тут: https://www.php.net/manual/ru/about.prototypes.php

Если ты хочешь документировать свои функции, используй стандарт phpDoc: https://ru.wikipedia.org/wiki/PHPDoc

Он позволяет тебе сгенерировать "мануал" из своего кода. Вот пример мануала из кода Симфони:

- мануал https://devdocs.io/symfony~2.8/symfony/component/httpfoundation/request
- код https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/HttpFoundation/Request.php

Также, можно попробовать использовать IDE с автодополнением (они, кстати, тоже умеют читать phpDoc).
Аноним 2019/11/20 02:18:22  №1525063 592
>>1524302

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

>>1524327

С файлами надо проверять расширение, чтобы тебе не загрузили index.php или .htaccess, сделать белый список разрешенных расширений. Либо самому выбирать им имена при сохранении.

>>1524153

> бы, если бы не знал ноду, поднял бы её рядом с самым обычным php запущенном через php-fpm, чтобы держала сокеты и слала http-запросы в пхп

Нафига? Уже есть nginx, который это умеет делать. Хотя, если цель именно максимальная производительность, то стоит смотреть на Го или Си++. Нода ведь тоже интерпретируемый язык, и скорость выполнения кода на ней будет одного порядка с PHP. Откуда этот миф, что якобы Нода быстрее?

Нода используется там, где есть много малоактивных запросов (уведомления по веб-сокетам). Если надо обрабатывать огромное число запросов в секунду, я не уверен, что у нее есть значительные плюсы перед PHP. Хотя это лучше проверять тестами.

Могу сказать, что Си, например, применялся для высокопроизводительных сетевых демонов во Вконтакте. за исходниками можно пройти на Гитхаб: https://github.com/vk-com/kphp-kdb

> Нода архитектурно заточена под неблокирующие операции, а php-нет.

Потому, что, внезапно, большинство бизнес-логики это последовательные действия в стиле найти пользователя, найти купленные им товары, найти рекомендации к ним итд. И последовательный код писать гораздо проще и удобнее.
Аноним 2019/11/20 02:19:03  №1525064 593
>>1524058

> операции над большими данными

Операции над большими данными и "реалтайм" плохо сочетается.

>>1523903

Логика CMS в том, что если тебе нужен еще один блог или форум, то незачем писать его код с нуля.

>>1523788

> почему на такую то задачу потратил час вместо 15 наносек?

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

>>1523738

> кидать (ну или платить 500 рублей, что одно и тоже).

Нет, не одно и то же.

>>1523306

Ты можешь почитать и сравнить с другими курсами.
Аноним 2019/11/20 02:19:35  №1525065 594
>>1523127

Если ты хочешь что-то делать на вордпресс, то нужно знать верстку, знать PHP, изучить документацию по написанию тем и плагинов под Wordpress, его API, почитать статьи вроде "20 лучших плагинов для вордпресс", чтобы не изобретать уже написанное, почитать статьи вроде "20 лучших тем на вордпресс".

>>1523056

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

>>1522954

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

Простое число - это число, которое делится только на 1 и на само себя. Примеры простых чисел: 2, 3, 5, 7, 11. 4 не является простым, так как делится на 2. 9 не является простым, так как делится на 3. Напиши программу, находящую все простые числа от 1 до N и определи с ее помощью все простые числа меньше 100.

Проверить, делится ли x на y, можно оператором взятия остатка от деления %: $rem = $a % $b; Если остаток равен нулю, то a делится на b, а если не нулю, то не делится. Простое число делится только на 1 и само себя и не делится на все остальные числа.

Если сразу решить слишком сложно, можешь начать с более простой задачи: дано целое число, определи, простое оно или нет.

Также, можешь показать код и попросить подсказку.
Аноним 2019/11/20 02:20:22  №1525066 595
>>1522599

Для начала стоило бы что-нибудь написать в README, а то трудно понять, что к чему.

>>1522009

Наследуются только однотипные сущности (вроде "Банк наследуется от Организация" или "Танк наследуется от СредствоПередвижения"). Так как Банк - это Организация, то мы можем не создавать класс Банк с нуля, а взять за основу Организацию и расширить ее.

Например, у Организации есть поля "директор", "форма собственности", "ИНН". А Банк наследует эти поля и добавляет к ним "номер лицензии".

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

У сотрудника и отдела нет ничего общего. Сотрудник это не Отдел, Отдел это не Сотрудник. Следовательно, наследование здесь не применимо. Мы можем уволить Сотрудника, но не можем уволить Отдел. Мы можем добавить Сотрудника в Отдел, но не можем добавить Сотрудника в Сотрудника.

>>1522159

В Департамент можно добавлять Сотрудников. В Департамент можно назначить боссом Сотрудника. В Департаменте можно поменять босса. Из Департамента можно уволить.
Аноним 2019/11/20 02:21:24  №1525067 596
>>1522336

Ты используешь twig? Встроенный шаблонизатор Laravel? Там есть способ выводить контент без экранирования спецсимволов.

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

Для фильтрации можно использовать HTML Purifier.

>>1522353

Ты видимо не знаешь. Маркдаун поддерживает вставку произвольного HTML.

Конверторы BBCode часто написаны на регулярках и уязвимы к вставке произвольного HTML.

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

>>1522354

Красный текст можно сделать и в HTML, и в markdown.

>>1522342

Уже есть HTML purifier.

Аноним 2019/11/20 05:07:30  №1525092 597
>>1525063
> Нода ведь тоже интерпретируемый язык, и скорость выполнения кода на ней будет одного порядка с PHP.
Удивлю, но нода будет быстрее. V8 под капотом делает дохера всяких оптимизаций.
Плюс, на ноду можно воткнуть socket.io, который предоставляет удобную программную обёртку вокруг вебсокетов.
Аноним 2019/11/20 05:49:38  №1525101 598
>>1525067
Суть в том, что если хранить в бд формат html, то данные можно отображать только на веб-страницах.
Если тебе нужен raw-text, если тебе нужно отображать через нативные элменты ифона, а не вебвью, то при попытке конвертировать html в это, ты похеришь всю разметку. Тот же bbcode конвертировать в это куда проще (за счет скромного количества тегов). Проблема не в красной кнопке в целом, а в том, чтобы была возможность ее отображать корректно всегда.

Про HTML Purifier:
>Если вырезать все эти script, onclick и так далее, то можно так же с веселым гиканьем испортить текст юзверу
>никак
>HTML Purifier
>script, onclick
ты не прав

> >>1522342
> Уже есть HTML purifier.
я не прав
Аноним 2019/11/20 08:51:06  №1525184 599
Привет, котики. Вкатился к вам с вопросиком: если у меня уже есть база и я хочу прикрутить к ней Доктрину, мне генерить энтити генерилкой (чё-то к ней даже документации нет и 1.5 примера 7 летней давности) или так никто не делает и пишут и аннотируют энтити вручную?

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

У меня есть либа для работы с одной старой базой, я хочу сделать новую версию этой либы, в которой будет ОРМ, шоб не писать вручную классы и sql код.
Аноним 2019/11/20 13:18:54  №1525403 600
>>1525060
>Нет, есть еще аннотация @Template в контроллерах.

"@Template" тоже нигде не нашлось

Кстати, забыл уточнить, что тот шаблон используется для генерации письма, а не страницы. Письма отправляются через некий "soa-mailer" (параметры для генерации передаются через curl).

https://symfony.com/doc/current/mailer.html

Нагуглил ссылку выше, но ничего подобного в коде тоже не нашлось.
Аноним 2019/11/20 13:26:57  №1525406 601
А это нормальная практика устанавливать права 777 для папки var/www в линуксе, чтобы удобно в IDE работать? Или можно как-то поизящнее сделать? Только поставил линукс, разбираюсь.
Аноним 2019/11/20 17:48:54  №1525568 602
3dkR2.jpg (214, 1200x980)
980x1200
ОП, проверь плиз.
Вектор Часть 2: https://ideone.com/xKNNMf

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

Вопросы:
Например, в классе есть метод, который что-то сортирует и принимает определенный флаг - например, DESC и это константа. Дак вот куда их лучше помещать? В класс или вынести в самый верх и определить через define() ? Я поместил в класс. Например: $collection->sort(Collection::RANK). Не слишком громоздко получается?
Аноним 2019/11/20 19:41:06  №1525660 603
Если что, я не ОП.

>>1525406

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

>>1525568

Не знаю, знаешь ты или нет, но если нет, то тебе нужно изучить вопрос, как в Объектно Ориентированном Программировании ветвления (if-ы, switch-и) заменяются полиморфизмом. Не в смысле что-то сейчас переписать, а просто понять это как идею.
Аноним 2019/11/20 22:09:20  №1525743 604
Как вы считаете - стоит ли выносить в сервис один метод из контроллера? Под этот метод подтягивается библиотека. Стоит ли убирать в отдельный класс?
Аноним 2019/11/20 22:14:33  №1525748 605
>>1525743
Заодно спрошу - есть ли смысол на Актив Рекор делать репозиторий, чтобы работа в БД в том же контроллере не болталась, раз уж такая пьянка с сервисами у меня пошла?
Аноним 2019/11/21 05:42:47  №1525791 606
>>1525743
Вкратце - да, можно контроллер разбить на маленькие классы-операции, каждая из которых делает что-то своё. Это нужно для того, чтобы гибче управлять зависимостями для каждой такой операции.
>>1525748
Репозиторий в первую очередь содержит точные методы по работе с базой данных. Например, вместо Find().Where().OrderBy() репозиторий будет содержать метод "FindUsersByArticles" и внутри такого метода можно использовать active record. Это не идеальное решение, но всё равно лучше, чем голые запросы прямо в бизнес-логике.
Аноним 2019/11/21 06:10:20  №1525794 607
Аноним 2019/11/21 07:16:46  №1525803 608
Аноним 2019/11/21 08:25:44  №1525832 609
>>1525803

О, спасибо, вот как это называется.
Аноним 2019/11/21 09:08:46  №1525849 610
когда 5 симфони выйдет?
Аноним 2019/11/21 09:10:06  №1525852 611
Аноним 2019/11/21 09:11:10  №1525854 612
Аноним 2019/11/21 17:37:38  №1526225 613
Аноним 2019/11/22 11:49:21  №1526736 614
>>1525748
Есть конечно, у тебя все запросы будут в одном месте для каждого кейса. У меня только проблема была с жадной загрузкой, было несколько почти одинаковых кейсов, только нужно было грузить разные отношения. Я потом просто возвращал сам объект квери билдера и явно вызывал get(), чтобы если что, то можно было врезаться и подгрузить что нужно. Не идеально, но работает.
Аноним 2019/11/22 12:15:22  №1526756 615
>>1526736
>Не идеально, но работает.
Где-то читал, что небольшая избыточность кода на рабочем проекте вполне норм и даже благо.
Аноним 2019/11/23 14:43:55  №1527787 616
А как сделать постоянно работающий из командной строки скрипт? Через вечный цикл while (true)? Вот я хочу, чтобы раз, допустим, в час он что-то чекал в интернете и меня каким-нибудь образом оповещал.
Аноним 2019/11/23 16:55:55  №1527884 617
Аноним 2019/11/23 18:47:33  №1527983 618
Selection016.jpg (18, 635x161)
161x635
>>1527787

Оповещение тебе нужно писать самому.
Например, можешь настроить отправку почты со своего сервака.
Настрой ssmtp, а отправлять будешь из php чем-то типа shell_exec("sendmail ....
Намана работает, я себе довольно давно сделал такой костыль.
Если постоянной работающий - это 1 раз в час, то открываешь файл /etc/crontab и добавляешь подобную строчку. В часу 60 минут (0, 1, 2, .... 58, 59) и ты просто первой цифрой задаешь на какой минуте выполнять скрипт, соответственно, он будет выполняться каждый раз когда на часах будет эта минута (то есть каждый час).
Аноним 2019/11/23 18:50:38  №1527987 619
Я в кроне не силен, но если не ошибаюсь, то при правильной настройке почты в Linux, тебе крон сам может отправлять письма, в теле которых будет вывод stderr твоей команды. Типа это задумано чтобы админ напихал всякой лабуды в крон, и если какая-то команда сфейлится и выведет ошибку в stderr, этот вывод автоматом отправится админу на почту.
Аноним 2019/11/24 11:25:06  №1528359 620
Я сейчас ебнусь, почему nginx хер настроишь на локалке? Вроде все так же, как и с апачем - но нихуя не работает
Аноним 2019/11/24 13:10:14  №1528447 621
Аноним 2019/11/24 14:20:02  №1528524 622
Что такое псевдоколонки?
Аноним 2019/11/24 14:21:46  №1528529 623
Типа, я создаю картинку с колонками большого размера, из-за чего у меня получаются колонки на сайте, которые в %соотношение могут раздвигаться в зависимости от размера окна браузера?
>>1528524
Аноним 2019/11/24 15:07:06  №1528594 624
>>1528359
Потому что не разбираешься. И nginx, и апач - довольно простые штуки, проблемы гуглятся и нормально решаются.
И у обоих, кстати, на редкость мерзотный синтаксис конфигов.
Аноним 2019/11/24 17:48:34  №1528752 625
>>1528594
>на редкость мерзотный синтаксис конфигов
Впервые вижу своё мнение высказанное кем-то другим.
Как ни начну конфигурить, так жопа горит. Ну неужели нельзя было сделать проще? Это же сраные настройки программы и нефига тут свой ЯП городить с регулярками, которые больше нигде не нужны.
Аноним 2019/11/24 20:07:06  №1528850 626
>>1528752
Потому что лет 15 обоим (апач даже старше), чем дальше в прошлое - тем больше всё не для людей. Приходилось на работе сталкиваться с программистами "за сорок", это пиздец, чего они пишут. С ужасом представляю, что когда-то кто-то так скажет про мой код за пределами /pr
Аноним 2019/11/24 22:03:42  №1528943 627
>>1528850
>чем дальше в прошлое - тем больше всё не для людей
Тоже верно.
Аноним 2019/11/25 00:21:21  №1528960 628
>>1528594
Ок, так в чем моя проблема?
Аноним 2019/11/25 05:12:07  №1528986 629
>>1528960
Ты хоть текст ошибки приведи, или пример конфига. У по понедельникам плохо с телепатией.
Аноним 2019/11/25 11:13:06  №1529137 630
>>1523056
Наверное поздно отвечаю, анон. Во-первых посмотри, есть просто твиг, а есть твиг специально для слима, он называется твиг\слим. Может в этом ошибка. И юзай третью версию слима, четвертая у них в разработке я так понял, она еще сырая
Аноним 2019/11/25 13:47:35  №1529294 631
так аноны, сначала писал в питон треде теперь пишу тут. изучал несколько полгода питон и джангу чтобы на джуна вкатиться, в результате нихуя не выходят тк нужны только мидлы и сеньоры, в то время как на пыхе дохуя вакансий в моем зажопье. так вот вопрос что стоит делать то мне сейчас и в каком порядке чтобы освоить пхп и ларавель? пока что начал с официального мануала чтобы понять синтаксис самой пхп
Аноним 2019/11/25 14:49:59  №1529349 632
>>1529294
>что стоит делать то мне сейчас и в каком порядке чтобы освоить пхп
Учить пхп.

>и ларавель
Учить пхп и ларавель.

Очевидно же.
Аноним 2019/11/25 14:59:45  №1529353 633
>>1529349
Поддвачну, сначала читаешь мануалы и бест практики по пыхе, потом по ларе. Потом делаешь два-три пет-проекта, параллельно перечитывая бест практики. Потом ищешь работу. PROFIT
Аноним 2019/11/25 15:43:34  №1529419 634
>>1529353
> два-три пет-проекта
ну то есть по классике пилить свой бложик и потом свою имиджборду и идти проситть на собесах на джуна, так?
Аноним 2019/11/25 17:05:00  №1529503 635
>>1529419
По сути - да, как и везде. На собесах можешь показывать тестовые, рассказывать, что и как делал (советую, как сделаешь, попоказывать эти тестовые знающим людям и поспрашивать фидбек/подопиливать, чтобы по красоте было, заодно и разберёшься лучше)
597-634 Аноним 2019/11/25 17:53:33  №1529533 636
>>1528850

Я не думаю, что дело в возрасте, а скорее в навыках.

>>1528752

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

И что не так с регулярками? Они много где используются и ты должен их знать.

>>1528524

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

>>1528359

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

>>1527787

Если вдруг тебе понадобится именно постоянная работа, а не по расписанию, то пишется скрипт для командной строки, и из него делается сервис - программа, работающая в фоновом режиме. Для этого пишется systemd юнит, который будет запускать твою программу при старте компьютера, собирать ее вывод в логи, а также перезапускать при падениях.
Аноним 2019/11/25 17:54:57  №1529535 637
>>1525743

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

class LikeService
{
public function addLike(User $user, Comment $comment) {}
}

При этом разбор запроса пользователя, копание в GET/POST/COOKIE, формирование ответа - это задача контроллера, который подготавливает данные и вызывает нужные методы сервисов. Сервисы не занимаются взаимодействием с пользователем.

Другой пример - методы для проверки правильности комментария и его добавления:

class CommentService
{
public function validateComment(Comment $comment) {}
public function insertComment(Post $post, Comment $comment) {}
}

Если что, у меня это расписано в уроке по MVC: https://github.com/codedokode/pasta/blob/master/arch/mvc.md

>>1525748

Считается, что Репозиторий - это объект, который абстрагирует коллекцию записей и содержит методы для работы с ними. Я не очень понимаю, в чем смысл создания Репозитория, если в Active Record методы работы с БД помещаются в модель.

Вот опсиание паттерна: https://martinfowler.com/eaaCatalog/repository.html

> A system with a complex domain model often benefits from a layer, such as the one provided by Data Mapper (165), that isolates domain objects from details of the database access code. In such systems it can be worthwhile to build another layer of abstraction over the mapping layer where query construction code is concentrated.

Тут речь про использование Data Mapper, а не Active Record.
Аноним 2019/11/25 17:55:51  №1529536 638
>>1525568

> define("MANAGER", "manager");
В новых версиях можно и стоит писать const X = 1;

> class CollectionException

Не очень удачное название, так как оно не отражает суть ошибки. Обычно исключения называют: InvalidArgumentException, IOException, DivideByZeroException, по сути ошибки, а не по месту возникновения. Некоторые полезные исключения уже есть в составе PHP и ты можешь их использовать: https://www.php.net/manual/ru/spl.exceptions.php

В твоем случае подошли бы InvalidArgumentException, InvalidClassException и тд.

> \tfinal public function setRank(int $rank):bool {
> ...
>\t\t\treturn false;

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

Для комментариев к функциям стоит осваивать phpDoc: https://ru.wikipedia.org/wiki/PHPDoc

> class Collection
> \tprivate $method;
>\tprivate $sortFlag;

Вот это странно. С какой стати порядок сортировки является свойством коллекции? Она как-то сохраняет этот порядок при любых операциях? Судя по коду, нет. Зачем тогда это сделано свойством объекта? В моем представлении, коллекция это просто набор сотрудников, и единственное ее свойство - массив сотрудников. Или я ошибся?

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

usort($this->employees, function($a, $b) use ($getter) {
return $a->$getter() <=> $b->$getter();
});

Соответственно, setMethod будет не нужен.

> const ASC = 1;//сортировка по возрастанию

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

const ORDER_ASC = 1;
...
const FIELD_RATE = 4; (или SORT_BY_RATE)
...

В других языках для группировки констант есть тип Enum (перечисление), в PHP пока его не завезли, и некоторые делают отдельные классы вроде FieldNames, состоящие только из констант (и есть базовый класс для этого: https://www.php.net/manual/en/class.splenum.php , а также сторонние классы: https://stitcher.io/blog/php-enums). Хотя в большом приложении это приводит к избытку классов и я так не делаю.

Также, вместо цифр можно использовать слова, например const FIELD_RATE = 'rate';

> \tpublic function __construct(Employee ...$employees){

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

> public function sort(int $sortProperty, int $sortFlag = self::ASC):Collection

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

return ... call_user_func(function(){ throw ...

Это какое-то извращение. Тут надо просто использовать if:

if (!usort(...)) {
throw new LogicException(...);
}

В функции sort() можно убрать все блоки else и сделать код проще.

> public function select(int $property, $value) {

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

$coll = $coll->select(function ($e) { return $e->getRank() < 3; });

А благодаря стрелочным функциям ( https://stitcher.io/blog/short-closures-in-php ) в PHP7.4 можно будет писать

$coll = $coll->select(fn ($e) => $e->getRank() < 3);

> \t\t\t\tif (empty($selectedEmployees)) {
>\t\t\t\t\tthrow new CollectionException("Элементы не найдены!\n");

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

> public function takePercent(int $percent):Collection {

Эта функция слишком специфичная, и я не вижу смысла добавлять ее в класс коллекции. Логичнее было бы добавить метод "взять X сотрудников, начиная с Y" и это был бы метод, который был бы более универсальным и пригодился бы в будущем для другий ситуаций. По умолчанию для Y можно поставить значение 0.

> extractEmployees(int $number = self::ALL) {
> const ALL = 3;//все копии

А как тогда извлечь 3 сотрудников? Надо либо ставить значение вроде -1, либо использовать встроенную константу INF (бесконечность: https://www.php.net/manual/en/math.constants.php ), получается красиво, но она имеет тип float, а не int.

> public function extractEmployee()
Логичнее extractFirst.

> public function extractEmployees
> \t\t\t} elseif($number == 1) {
>\t\t\t\treturn $this->extractEmployee();

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

> public function fireEmployees(Collection $collection){
> if ($realEmployee == $sample) {
А вот тут проблема. Сравнение по == сравнивает поля объектов, а по === идентичность (читай мануал). Тебе скорее всего нужно проверять идентичность, но из-за клонирования в extractEmployees это невозможно. В итоге, твоя функция удалит не те объекты, которые требуется.

> public function createEmployee(

> public function changeEmployees(Collection $collection, int $property, $value){
Тут наверно тоже имеет смысл использовать коллбек. Тогда UPRANK/DOWNRANK будут не нужны, а код станет проще.


> public function backup(){
> public function restore(){
Думаю, это не нужно, так как можно просто клонировать компанию целиком оператором clone.

В padRight/left логично возвращать не false, а обрезанную строку.


> } catch(CollectionException $e){
> \tcontinue;
Ты игнорируешь ошибку и скрываешь информацию о ней, что может затруднить отладку. Это из-за того, что ты выбрасываешь исключения тогда, когда никакой ошибки нету.

> \t} catch(DepartmentException $e){
>\t\techo $e->getMessage();
>\t\texit();
Это не требуется, по умолчанию и так выводится текст исключения и завершается программа.

> $department->changeEmployees($highRankAnalyst, Collection::BOSS, true);

Логичнее было бы сделать метод replaceBoss(). Который сам найдет и разжалует старого босса.

В общем, программа требует доработки, упрощения и улучшения кода.

> Например, в классе есть метод, который что-то сортирует и принимает определенный флаг - например, DESC и это константа. Дак вот куда их лучше помещать?

Можно в класс как ORDER_DESC. Можно и как глоб. константу, или даже сделать класс-enum, если это используется во многих классах.

> Например: $collection->sort(Collection::RANK). Не слишком громоздко получается?

Нет.
Аноним 2019/11/25 17:58:15  №1529537 639
>>1525406

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

>>1525403

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

>>1525184

Один из вариантов писать Entity и по ним генерировать миграции, другой - писать миграции руками.

>>1525101

> Тот же bbcode конвертировать в это куда проще (за счет скромного количества тегов).

Для BBCode тебе придется писать свой парсер для преобразования в абстрактное синтаксическое дерево. Для HTML парсеры уже есть (а также есть XSLT для преобразования в BBCode, json или любой другой формат). Если ты не используешь инлайн CSS стили, а только теги и предопределенные классы, то это может быть проще. Причем парсеры HTML, скорее всего, можно запускать прямо на устройстве.

>>1525092

Но Вконтакте писали свои демоны на Си, а не на ноде, Гугл использует Го, а не ноду.

Аноним 2019/11/25 19:05:58  №1529578 640
>>1529503
ну видимо так и сделаю. единственное что сейчас пока трудно - представлять как это все реализовывать и переключиться с логики питона и джанго на пхп
Аноним 2019/11/26 05:16:06  №1529740 641
>>1529537
> Но Вконтакте писали свои демоны на Си, а не на ноде, Гугл использует Го, а не ноду.
Ну это такой себе аргумент, на самом деле. Вконтакте может себе позволить нанять взвод сишников, чтобы написать и поддерживать свой протокол поверх сокетов + сервис под это дело.
Гугл тем более (и да, до недавнего времени в мире го с вебсокетами всё было слегка грустно - общаться можно, а нормальных библиотек нет).
Сокет.ио с нодой же работают максимально просто, воткнул - заработало. Сразу есть подписки, ack/nack'и и прочие радости. Для мелокого и среднего бизнеса максимально удобно.
Аноним 2019/11/26 05:42:18  №1529754 642
image.png (78, 808x282)
282x808
>>1528986
>>1529533
В том и проблема что ошибок не вижу.
nginx -t показывает ОК
systemctl status nginx показывает ОК
Настроил конфиг (Взял с Yii2 доков и поменял рут с доменом). Линканул в site-enables. Выдает 502 gateway.
https://ideone.com/H6JCgp Вот конфиг.
Fpm работает нормально. Возможно его тоже где то настроить нужно?
Аноним 2019/11/26 08:49:16  №1529862 643
>>1529754

Если 502 - надо смотреть логи нгинкс и логи php-fpm (так как может быть проблема в последнем). По моему, нгинкс выдает 502 когда fpm превышает таймаут ответа. Скорее всего ответ будет в логах php-fpm или PHP.

Конфигурация логов в нгинкс (первая ссылка в гугле) https://docs.nginx.com/nginx/admin-guide/monitoring/logging/
Аноним 2019/11/26 09:05:28  №1529883 644
>>1529862
Спасибо за наводку, целую
Аноним 2019/11/26 09:49:30  №1529914 645
Аноним 2019/11/26 11:33:25  №1530006 646
>>1529535
>Смысл сервиса в том, чтобы вынести в него какую-то бизнес-логику
Ну так я для этого и спрашивал - делаю хостинг файлов и хочу попробовать на тонких контроллерах.
Сделал UploadsManager для содержания логики, который используется в 2х контроллерах: в 1 - сохраняет файл в нужном виде через другой сервис внешней библиотекой генерит или назначает миниатюру, и во 2 - отдаёт полный путь по имени из БД, в своём хранилище. Так норм?

>Я не очень понимаю, в чем смысл создания Репозитория, если в Active Record
Смысл в том, чтобы убрать работу с сущностями из контроллера.
Можно конечно просто в метод контроллера это всё убрать.
Аноним 2019/11/26 16:59:49  №1530201 647
ОП и Компания, проверьте пожалуйста мой "Вектор". Не могу подступиться к антикризисным мерам. Может что то делаю не так и нужно сделать код более универсальным. Я так понимаю чтобы отсортировать всех инженеров нужно юзать usort, а как писать пользовательскую функцию для нее без понятия. Да и после сортировки это нужно потом с помощью slice вырезать 40% инженеров чтобы проводить дальнейшие манипуляции, а как резать то? на какую длину? как посчитать скоклько у меня инженеров работает в департаменте? count считает всех работников без учета профессии. В общем я хз куда плыть =(
p.s знаю что нужно еще создать класс компания, клонировать ее и заприватить в классах все что можно. но как резать инженеров ума не приложу.
https://3v4l.org/MgNH3
Аноним 2019/11/26 17:00:47  №1530204 648
Создан:
>div ="extras"
в нём лежат:
><a href>
линки

Сделано так, чтоб НЕ менять все линки на странице, а только вложенные в экстрас. Как мне их выбрать? Пытался:
>#extras > a
>#extras a
Но оно не работает так.

Как решить проблему/что делать?
Аноним 2019/11/26 17:07:12  №1530212 649
Я знаю, что там ещё много способов вложения всякого говна, не только div, но я их всех забыл, может быть надо что-то другое использовать... >>1530204
Аноним 2019/11/26 17:10:31  №1530215 650
А, всё, решил: div a
Подскажите, как можно это лучше сделать

>>1530212
>>1530204
Аноним 2019/11/26 17:19:27  №1530223 651
Аноним 2019/11/26 17:46:46  №1530252 652
Имеет смысл начинать с прочтения книги PHP 5? Или с тех времён уже всё десять раз изменилось?
Аноним 2019/11/26 18:26:21  №1530292 653
>>1530252
Если делать нехер, то конечно можно. Есть нормальная книжка по 7пхп для новичков. Но по пастам ОПа быстрее будет
Аноним 2019/11/26 18:29:23  №1530294 654
>>1530292
От делать нехер, хотя бы понимание общее составить.
Аноним 2019/11/26 18:36:57  №1530299 655
>>1530294
Ну, еще плохого и старого нахватаешься. Я бы наоборот старался от легаси говна подальше, особенно в пхп
Аноним 2019/11/26 19:50:05  №1530349 656
>>1530252
не слушай. Посты ОПа такая себе тема. Оно не для начинающих и не совсем о том, что нужно.

Найди универсальную книгу по пхпкссджаве и прочитай её. После чего отдельно новые книги последних годов, актуальные по всё той же пхпкссджаве.
Аноним 2019/11/26 19:51:58  №1530350 657
Аноны, захотел тянуть данные с API кладр (улицы-адреса, все это). Понял что нихуя не понимаю как это сделать.
Как из серваке из метода обработчика роута отправить запрос на сторонний сайт?
Исходящие данные я так пони нужно обернуть в JSON и отправить POST. А чем отправлять то?
Аноним 2019/11/26 19:54:18  №1530352 658
>>1530349
>Оно не для начинающих
Плюнул тебе в ебало
>и не совсем о том, что нужно.
Два раза
Аноним 2019/11/26 19:54:45  №1530353 659
Аноним 2019/11/26 20:22:01  №1530373 660
>>1530353
Не-не, нихт библиотеки.
Как нативно в пхп отправлять?
Аноним 2019/11/26 20:33:52  №1530378 661
>>1530373
Сделал с помощью file_get_contents() но чет не понял гет... пост...
Буду читать
Аноним 2019/11/26 20:42:46  №1530381 662
Аноним 2019/11/26 23:46:35  №1530438 663
Сап двощь, делал кто систему для генерации картинок разных размеров из какого-то источника? Например я загрузил картинку обложку, и мне для приложения нужна эта картинка в определенном уменьшенном размере.
Есть два стула как я понял. Первый это при первой загрузке картинки все размеры из какого-то конфига создавать, из плюсов можно сразу в какое-то хранилище выгрузить и не нужно локально хранить файлы. Не уверен правда стоит ли в бд хранить инфу о всех сгенеренных размерах или только одну запись о картинке а дальше по какой-то конвенции имя генерировать, например image255x255.png или может вообще как в бутстрапцсс сделать xs md lg чтобы отвязаться от конкретных размеров. Из минусов, если вдруг в конфиге добавить новый размер то надо как-то или перегенерировать все другие картинки, или просто по умному самую близкую по размеру отдавать, вот тут неясно.
Второй стул это генерировать лениво и по запросу, пока что не знаю как это сделать для картинок которые хранятся в облаке, для локальных картинок можно было бы file_exists делать или просто хранить в бд все размеры уже готовые. Еще тут проблема когда два запроса одновременно поступают а картинка миниатюра еще не сгенерена, и нужно придумать какой-то лок механизм чтобы скрипты несколько раз одно и тоже не делали, в общем сложнаа
Аноним 2019/11/26 23:55:27  №1530440 664
>>1530438
Сейчас доки cloudflare почитал, он это всё умеет, даже в webp умеет конвертировать
Аноним 2019/11/27 07:06:31  №1530521 665
>>1530252
вроде три книжки по пхп 7 переведенных имеется, смотри на озоне
Аноним 2019/11/27 07:22:57  №1530528 666
S91127-102109.jpg (263, 1080x1920)
1920x1080
Я эту читал, мне нравилась. Полностью, правда, не прочел - мне легче документация и гугл дается
Аноним 2019/11/27 08:30:55  №1530556 667
Аноним 2019/11/27 08:55:49  №1530562 668
Аноны, есть свойства. Я хочу чтобы после каждого извлечения свойства выполнялся метод класса. Как это сделать, если не вручную? Что то на подобие __set()
Аноним 2019/11/27 09:00:00  №1530565 669
>>1530528
А я вообще ни одной не прочитал - вначале лекции смотрел и задания делал, потом местные задачки и статьи всякие читал на хабре. Вроде и без книжек нормально понимаю ООП, паттерны, протокол и jQuery его вообще по документации изучал - изи же.
Так что на любителя все эти книги.
Аноним 2019/11/27 09:30:17  №1530580 670
В гайде вскрывается тема деревьев, алгоритмов и тд? Есть пастта как лучше это изучать и на сколько оро вообще требуется?

ньюфак
Аноним 2019/11/27 10:19:37  №1530605 671
image.png (106, 452x300)
300x452
че за хуйня?почему ставится мариадб вместо mysql?
Аноним 2019/11/27 10:33:32  №1530619 672
двач, выручай - хочу готовый скрипт формы заявки на php, который хранит заявки в базе данных. Гугл мне дает только мусор с отправкой формы на почту.

можешь накидать линков или хотя бы как гуглу объяснить что мне не надо формы на почту, мне надо формы с их хранением в базе данных
Аноним 2019/11/27 10:51:45  №1530638 673
Аноним 2019/11/27 11:22:17  №1530673 674
двач помоги, в гугле нет нихуя.
ловлю хуйню когда пытаюсь подключиться в виде: Call to undefined function mysqli_connect()
при этом сервак сам пишет: Веб-сервер
Apache PHP расширение: mysqli, curl, mbstring
Версия PHP: 7.1.32
в чем проблема блять?
Аноним 2019/11/27 11:39:15  №1530693 675
Аноним 2019/11/27 11:56:29  №1530725 676
пхп.PNG (10, 644x307)
307x644
ос.PNG (11, 436x192)
192x436
>>1530693
качал ласт версию опенсервера под шинду если что. сама дб не пустая и содержит данные. в инете везде ттолько хуита под бубунту
Аноним 2019/11/27 11:56:53  №1530726 677
Год назад сделал сайт на laravel 5.7, попутно его освоив процентов на 10. Помню, что учился по ютубу и раздражало, что курсы для старых версий и постоянно что-то не работает. Вроде всё по инструкции - но не работает. И часами выискивать, что же и где нужно поправить под текущую версию.

И вот снова предстоит использовать Laravel. А он, собака, уже 6.5. Скажите, сильно он с 5.7 изменился? Уроки для какой версии уже можно использовать?
Аноним 2019/11/27 12:25:12  №1530773 678
>>1530725

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

if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}

Аноним 2019/11/27 12:40:23  №1530783 679
Добрый день, господа. На днях пришлось сделать мини-сайт на опен сервере с формой авторизации/регистрации. В инете натыкался на инфу, что стоит проверять роль пользователя по миллиарду значений из бд, я же сделал проверку по 1 значению в 1 таблице и все работает корректно. В чем моя ошибка или в чем смысл создания миллиарда столбцов в нескольких таблицах бд для проверки определенной роли пользователя? Как вы можете понять, я новичок, так что не пиздите ссаными тряпками. Заранее спасибо
Аноним 2019/11/27 13:42:45  №1530825 680
>>1530726
6.0 же месяца полтора назад только вышел?
Аноним 2019/11/27 14:27:34  №1530838 681
>>1530825
$ php artisan --version
Laravel Framework 6.5.0

Сам в шоке.
Аноним 2019/11/27 14:39:33  №1530845 682
>>1530638
так-то принцип я понимаю, но... надо полноценный пример а не:
"вот вам две строчки, а теперь ебитесь сами со всякими мультибраузерами, кодировками, платформами, проверками, безопасностью, etc"


Может все таки кто подскажет - как нагуглить решения для публикации заявок с их хранением в базе данных и привязкой к пользователям.
А то что мне гуглпомой предлагает только формы с отправкой на почту и упорно не хочет искать по другому
Аноним 2019/11/27 14:43:33  №1530848 683
>>1530726
>>1530838
Он на semver перешел, удалили может какие-то депрекейтед методы а так ничего не поменялось
Аноним 2019/11/27 14:51:14  №1530853 684
>>1530845
>"вот вам две строчки, а теперь ебитесь сами со всякими мультибраузерами, кодировками, платформами, проверками, безопасностью, etc"

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

Аноним 2019/11/27 15:06:01  №1530874 685
>>1530845
>так-то принцип я понимаю
Видать не понимаешь.

Универсальных решений для базы данных не существует - она разная бывает, с разными полями - для разных форм. Не считая самих баз данных.
Универсальная - только сбрасывать на почту.
Аноним 2019/11/27 15:25:17  №1530909 686
Аноны, объясните такую вещь.
Есть АПИ "https://kladr-api.ru/api.php". Я делаю формочку, в которой AJAX-ом динамически подгружаются адреса. Столкнулся с такой проблемой - не могу загрузить прямо из странички данные с этого АПИ - пишет ошибка CORS.
Я в своем запросе передаю заголовок "origin : "localhost".
АПИ "https://kladr-api.ru/api.php" в свою очередь в заголовках ответа мне не возвращает заголовок 'Access-Control-Allow-Origin'. Означает ли это что они отказывают во всех кросс-доменных запросах?

У них есть свое джейквери приложения для, я его не смотрел, но логично что это приложение напрямую взаимодействет с сервером АПИ, и значит кроссдоменные запросы они обрабатывают. Но как же заголовок 'Access-Control-Allow-Origin'? Он по идее должен обязательно возвращаться если кроссдоменные запросы разрешены.


Если я к этому АПИ отправляю запрос уже с своего сервера - то все АПИ отлично работает и данные возвращает.

Или обычная цепочка работы со сторонними апи это когда форма вэб-морды отправляет запрос контроллеру на сервере, контроллер отправляет запрос на стороннее АПИ, получает ответ и возвращает его формочке обратно?
Аноним 2019/11/27 15:43:25  №1530952 687