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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Клуб изучающих PHP #113 /php/ 1511146 В конец треда | Веб
Опять зима стоит у двери, а мы изучаем язык 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? — Да, однозначно. Посмотри любую вакансию.
grammar.png56 Кб, 500x644
2 1511147
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

Если тебе лень выравнивать код руками, закачай его на 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
3 1511149
Напомню себе, как будет время, проверить из позапредыдущего треда:

- 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) на большинство постов даны ответы.
4 1511200
Может не туда вопрос а нуден ли пхп в 2019?
5 1511230
Оп продает свои говнокурсы! Не верьте ему! Он никогда не был рпограммыстом!
6 1511237
>>11230
И какие курсы он продает?
7 1511266
>>1511162
Таки спорно. С одной стороны, ты прав и действительно нет смысла что-то усложнять, если нужно выкинуть пользователю html-ку с парой кнопок, то jquery будет гораздо проще.
Но:
1) jquery уже подрастерял свою актуальность, не полностью, но... Во-первых, браузеры подсократили различия между собой (только говносафари ещё удивляет), нет такой острой необходимости в умной обёртке, учитывающей их. Во-вторых, сам js уже эволюционировал, на ванильном js-е можно сделать то же самое с чуть-чуть большим количеством кода.
2) Любой софт имеет тенденцию к усложнению со временем. Тебе нужно показать пользователю одну формочку, вторую, добавить валидацию, эффектик, что-то ещё, анимацию красивую... и в какой-то момент ты понимаешь, что оно слиплось в ком из лапшевызовов апи браузера и работы с глобальным состоянием, стоящий на костылях и хаках, чтоб быстрее. И переделать это на любой нормальный фреймворк займёт часов 20. И ты приходишь такой к начальнику и говоришь, что да, добавить новую форму - два часа, но тебе нужно ещё двадцать, потому что вот так вот. И ты услышишь следующие аргументы: "а чего ты сразу нормально не сделал?", "ну оно же работает сейчас, правильно?", "у нас нет денег на бессмысленные украшательства, не трать на это времени", "просто добавь кнопку, как-нибудь потом перепишешь" и тд и тп. В итоге будешь жить с этим легаси-говном или, матерясь, срочно переписывать его нормально.
Я это к чему, у бизнеса почти никогда нет ресурсов переделывать то, что и так приносит ему денег. Проще уже сразу сделать нормально, потратив на жалкий час больше, там не так много работы, сделать одну сраную форму на сраном реакте и пропустить через сборщик. Зато потом легче будет, если что.
8 1511269
Вопрос по 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 ) {
$dicBuilder = new \DI\ContainerBuilder();
$dicBuilder->addDefinitions( "dic-cfg.php" );
$dicBuilder->useAutowiring( false );
$dic = $dicBuilder->build();

return $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. На первый взгляд выглядит адекватно, но, возможно, я что-то упускаю.

Как поступить более правильно? Или, может, все варианты сосут и есть какой-то другой?
8 1511269
Вопрос по 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 ) {
$dicBuilder = new \DI\ContainerBuilder();
$dicBuilder->addDefinitions( "dic-cfg.php" );
$dicBuilder->useAutowiring( false );
$dic = $dicBuilder->build();

return $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. На первый взгляд выглядит адекватно, но, возможно, я что-то упускаю.

Как поступить более правильно? Или, может, все варианты сосут и есть какой-то другой?
9 1511304
>>11269

>dicBuilder


dickBuilder
10 1511306
>>11269
Все варанты - костыли с говном, никогда не делай такого. Любой контейнер зависимостей имеет встроенные способы разрешения этих самых зависимостей. Ищи в документации - там всё есть, только поискать.
А вот то, что ты не почитав нормально доки по либе, которую решил использовать, да ещё и потом костыли писать начал - хуёво. Избегай такой практики - самому же потом фейспалмами лицо разбивать не придётся.
11 1511308
>>11200
Иначе поставь вопрос - чем лучше питон, или нода или руби? И зачем тебе, допустим предпринимателю выбирать не пхп?
То что хотят программисты - это маня хотелки. Важно что хотят те кто платят бабки. И думаю всякие помидоры всегда пляшут от этого.
12 1511311
>>11306
В документации я ничего не нашёл. Единственное, что хоть сколько-то релейтед https://github.com/PHP-DI/demo/search?q=$container&unscoped_q=$container

Но это, по сути своей, 1 вариант, только без копипаста. Разве это адекватное решение?
13 1511331
>>11308
Не понимаю зачем ты на такие посты отвечаешь. Каждый тред очередной шизоид всплывает с таким вот вопросом.
И невдомёк болезному, что те, кто варится в этой всей теме знают рыночек побольше его, причём в разы. Вопрос нубский, жирный и неуместный.
14 1511333
>>11331

>Вопрос нубский



Ну так я нуб, думаю с чего начать. Вот и спросил.
Тут ведь для начинающих тред.
15 1511334
>>11333

>думаю с чего начать


Думай молча.

>Тут ведь для начинающих тред.


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

>Думай молча.



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

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



С чего ты решил что тут должно быть как ты хочешь?
17 1511353
>>11269

>Как взаимодействовать с контейнером из классов?


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

>Как поступить более правильно? Или, может, все варианты сосут и есть какой-то другой?


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

>Вся соль контейнера в том что тебе не нужно взаимодействовать с ним из классов



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

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



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

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

>>11355
Ну, допустим. А какие очевидные минусы имеются к варианта 3 (кинуть контейнер через set)? Или тут уже принципиальной разницы нет?
20 1511399
>>11363

>Ну, допустим. А какие очевидные минусы имеются к варианта 3 (кинуть контейнер через set)? Или тут уже принципиальной разницы нет?



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

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


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

Если я работаю из винды, то мне требуется поставить smtp сервер какой нибудь. Настроить его, и уже из своих скриптов отправлять на него письма, которые уже этот сервер будет рассылать куда нужно.
Так?
22 1511410
>>11404

>я работаю из винды


Опенсервер что ли?
.png114 Кб, 1588x887
23 1511411
Вопрос по БД. Допустим есть здоровенный JSON на 1.5к строк, который отдает сервер, и мне нужно его сохранить в бд. Структура сложная как пикрилейтед. Какая структура таблиц делается в таких случаях? На каждый array делать новую табличку и привязывать по айдишнику что ли?
24 1511415
>>11410
Есть разница между опен сервером и ручной сборкой апач + пхп?
И то и другое есть
25 1511426
>>11415
Почту из опенсервера отсылаешь?
26 1511439
>>11411
Либо да (нет), либо хранить как json в sql базе, либо хранить как json в json-ориентированной базе типа монгодб на выбор
27 1511466
>>11439

> в json-ориентированной базе типа монгодб


Спасибо няша, не знал про существование такого.
28 1511476
>>11426
Вообще ниоткуда не отсылаю пока что, хочу толково понять что к чему. О том и вопрос
29 1511495
Поясните что есть api? Это ссылкка, которая возвращает какие то данные (для фронтенда в json, например)?
30 1511498
Почитал про phpMailer, в документации сказано что он позволяет отправлять из винды письма на smtp сервер. То есть реализует некий smtp клиент ? Этот клиент не может быть написан на пхп, так как является системным приложением и написан на с++?
Я правильно цепочку понимаю:
Мой пхп код -- вызываю smtp клиент, он формирует письмо и отправляет на smtp сервер, который отправляет письмо адресату . Так ?
15719211225700.jpg87 Кб, 720x696
31 1511527
>>11146 (OP)
Здарова, пыхеры.

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

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

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


Сам жээс фулстак.
32 1511641
>>11527
/web
33 1511689
Как понять работу контейнера? Допустим я зарегестрировал зависимость в контейнере симфони
$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 в контроллерах. Как они обьявлены глобально?
Подскажите хотя бы как это загуглить, ибо как не ищу выдает одни и те же доки на разных языках, но там только описано как задать зависимость, например.
34 1511712
>>11689

>У меня будет один и тот же обьект Session в обоих случаях? Или создадутся 2 разных обьекта?


А тебе в исходниках посмотреть не судьба эти методы?
35 1511730
>>11712
Без негатива и всего этого, но я не понимаю о каких ты методах.
36 1511744
>>11730
Да я без негатива вроде, хз.
Смотри тот метод, где разрешается зависимость очевидно - как оно там работает. Исходники-то открыты.
Ты ж программист.
37 1511747
>>11744
Я уже все пересмотрел. Сейчас пробовал респонсы создавать разные контейнером и менять в контент. Пришел к выводу что он создается один и тот же. Это радует.
Только пропала одна проблема - появляется новая. Symfony Session компонент просто не работает. Когда пытаюсь его создать - пишет что сессия уже запущена. Но на метод $session->isStarted() возвращает false. Пробовал и session_abort до этого делать и гуглить. В гугле самая большая проблема в том, что выдает запросы по работе с самим фреймворком, а не с компонентом.
38 1511748
>>11747
Но, конечно же, "все пересмотрел" !== "все понял и разобрал"
39 1511771
Здравствуйте аноны!
Я в некотором замешательстве. Лениво учу python довольно продолжительное время, знаю синтаксис и не более. Да и то поверхностно. Не могу понять где применить этот язык и куда двигаться, везде кричат что нет вакансий, дикая конкуренция итд. Короче полная дизмораль. Подумываю пересесть на стул с php. Скажите, у вас есть четкий алгоритм прихода к успеху на работу? Не уткнусь ли я в лес непонимания куда мне двигаться дальше? У меня тройка по математике и я хочу простую ламповую работку для сыча. Пхп тоже требует адский стек технологий?
40 1511814
>>11498
бамп!
Аноны, кто в теме объясните подробно.
Как phpmailer может отправлять напрямую письма из винды, если это поидее надстройка над mail(), которая по дефолту вызывает в linux функцию sendmail, а в виндовс на сколько я понимаю не вызывает нихуя ( или вызывает какую то виндовую почтовую службу все таки? )
41 1511815
>>11689
В принципе в контейнере всегда должен храниться один и тот же объект. Когда ты запрашиваешь объект, идет проверка - если объекта в "хранилище" контейнера нет - он создается, а если нет - возвращается уже созданный объект.
У ОП-a есть урок который позволит понять чуть лучше:
https://github.com/codedokode/pasta/blob/master/arch/di.md
42 1511864
>>11814

>кто в теме объясните подробно


В гугле куча статей, а ты до нас доебался.
43 1511947
>>11815
Ты не прав. В контейнерах может лежать по сути фабрика, есть такой подход. В том же симфони контейнере можно указать, тебе кэшировать объект или каждый раз пересобирать его заного.
Ну и да, главная задача контейнера - резолвить зависимости между компонентами, а все прочие кэши-хуеши - дело десятое.
мимо
44 1511979
>>11771
Везде нужен стек. Но на пхп легче, можно хоть в те же вордпрессы вкатиться. Я хоть и нуб, но не особо понимаю преимущество питона в вебе, язык сам по себе тормознутый, так еще и конкуренты аля пхп => и работы меньше.
45 1512015
>>11689

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

Контейнер Симфони относительно сложный, для изучения лучше взять что-нибудь простое вроде 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 )
45 1512015
>>11689

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

Контейнер Симфони относительно сложный, для изучения лучше взять что-нибудь простое вроде 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 )
46 1512017
Аноны, объясните, почему я не могу через 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.



Такая вот ошибка пишется.
47 1512042
>>12017
--ignore-platform-reqs
48 1512071
>>12017

Композер, как я понимаю, обновляет версии в большую сторону. Проще всего удалить папку vendor и composer.lock и запустить установку заново.
49 1512072
ОП, спасибо за ответы! Ты няша:3
50 1512200
>>11771
Бамп вопросу, я может не совсем правильно спросил, имелось ввиду смогу ли я вкатится во что нибудь простенькое вроде пилить сайтики на фрилансе. На начальном этапе и 20-30к зарплата ьудет норм. Что для этого необходимо знать?
51 1512241
>>12200
Очень много всего, на самом деле. Для начала, попробуй сделать студентов или файлообменник из оп поста. Дальше уже сам будешь видеть какие у тебя пробелы.

Алсо, не рекомендую сразу во фриланс нырять, ты с 90% будешь пилить адовый говнокод.
52 1512275
>>12015
Ребят, я уже спрашивал но конкретного ответа не получил. Какая загруженость на работе в веб-конторах? На данный момент я сижу с утра до ночи и либо код пишу либо что то читаю. Пока что все устраивает, но понимаю, что если дальше так продолжу то выгорю или ослепну нахуй. А на счет работы боюсь что меня возьмут, а я не буду успевать работу выполнять.
53 1512277
>>12241
Тоесть ты предлагаешь учиться на собственных проектах. Придумывать сайт с функционалом, потом реализовывать его. Что скажешь о cms, оно вообще нужно или сразу фреймворк учить? Имеет ли смысл пилить свой движок для сайта?
54 1512281
>>12275
Сильно зависит от конторы. Среднее по больнице никто не даст.
55 1512284
>>12277
У пхп ждунов только ларавел конторы. Бойся как огня всяких вордпресс контор. Не делай сложных заданий дома. Налегай на жс. Быстрее вкатишься.
56 1512294
>>12284
А если контора делает и на cms и на фреймворках?
57 1512298
>>12294
Хочешь СМС изучать или программистом стать? Программист не ограничен пхп проектами.
58 1512306
>>12298
Да и вообще ты сможешь себя программистом в полном смысле считать только когда в командной разработке участвовал. СМS подразумевает что один чушка по быстрому накидывает плагинов и проверяет чтобы это все минимально работало.
59 1512309
>>12298
Это не мой пост, мне лучше чтобы без cms , а то это зашквар как я понял. У python и php есть точки соприкосновения? Будет профит если знать оба языка?
60 1512317
>>12306
У меня в городе просто нет вакансий для чистого Laravel junior. Везде упоминается Yii как минимум. А то и на cms скажут шаблон натянуть - хер знает. Стоит ли мне без опыта в такую контору идти чтобы его набраться? Или сидеть ждать чуда/искать фриланс на ларке/symfony.
61 1512320
>>12309
Зашкар или не зашкар понятия какие-то детские. Это твой путь или не твой, может кто хочет стать cms одиночкой на арворке. Кто-то веники вяжет и неполохо себя чувствует.
62 1512474
>>12241

>Алсо, не рекомендую сразу во фриланс нырять, ты с 90% будешь пилить адовый говнокод.



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

>>12298

>>Программист не ограничен пхп проектами.


Золотые слова. Я как в пхп основательно въехал - для меня в node.js все значительно яснее стало.
63 1512533
>>12474

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


Хочу когда с пхп разберусь и стану хотя бы мидлом - начать учить другие языки. Считается ли это нормой? Помню в треде писали что нужно выбирать что то одно - там и сидеть.
64 1512536
>>12533
Скорее наоборот, чтобы стать мидлом придется учить другие языки и технологии. Иначе будешь на одном месте сидеть.
65 1512543
>>12533
У бекендеров принято ещё и фронтенд знать хоть как-то. Тот же js тебе по-любому изучать придётся. Никто не мешает потом на него перекатиться.
Ноду ту же щупал, наверное, каждый второй из местных.
66 1512740
>>11814
Кажется я понял почему PHPmailer может отправлять smtp-почту - потому что соединение реализуется черкз сокеты. А их пхп нативно поддерживает.
Я прав?
67 1512743
>>12740

>черкз сокеты. А их пхп нативно поддерживает.


через костыль
68 1512775
>>12743
Подробнее плиз!
69 1512787
>>12775
Да никакого костыля. Как все языки работает с сокетами через с обертку
70 1512791
Делаю задачку по учебнику,
что не так?

<?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";
}
?>
71 1512801
>>12791

>что не так?


Ты нам в угадайку играть предлагаешь что ли? Проблему опиши.
72 1512818
>>12801
Идеон говорит что-то не так с синтаксисом 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";
}
?>
72 1512818
>>12801
Идеон говорит что-то не так с синтаксисом 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";
}
?>
73 1512822
>>12818
} перед elseif
и } перед else
74 1512853
>>12822

>if ($humanSum > $cpuSum);{


>elseif($humanSum < $cpuSum);{


Точка с запятой тут не ставится.
75 1512861
>>12853
Точно! Спасибо.

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

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

Cannot use [] for reading
76 1512864
>>12861
У тебя опять синтаксис неправильный.
77 1512866
>>12864
В чем?
Сдается не шторм мозги ебет по поводу { и [
NoLaifer 78 1512872
памагити

не могу понять почему не преобразует в верхний регистр
https://ideone.com/8zFsVm
NoLaifer 79 1512873
>>12872
клавиша шифт, задание
80 1512910
>>12866

>В чем?


Ты теперь на каждый пук будешь у нас спрашивать?
Сходи и сам посмотри как правильно писать на пхп надо.
81 1512923
>>12910
Если такой психованный, мог бы не отвечать.
Вахтер местный что ли?
82 1512928
>>12927 (Del)
будем надеяться,что тебя забанят
83 1512932
>>12910
>>12925 (Del)
>>12923

Прекращайте. Пусть неадекват сам с собой разговаривает.
7.png17 Кб, 1416x261
84 1512970
Анон, делаю калькулятор (пушо с переводом цифр в слова не справился):
1) Откуда берётся ноль? Пробовал убрать с помощью $i+1, но не вышло.
2) Я хочу, чтобы у меня в $a записывались числа при помощи цикла, после чего при появления знака '+' - он прекращал записывать цифры в $a и начал следующие цифры после знака '+' записывать в $b. Как это реализовать?
85 1512975
>>12970
Или я хуйню делаю и лучше сделать через прег_сплит?
86 1512989
>>12975

>я хуйню делаю


Вся твоя жизнь в трёх словах.
87 1513081
>>12970

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

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

Здесь оператор точка перед склеиванием преобразует число 0 в строку "0" и к ней приклеит следующую цифру.
88 1513083
>>12872
>>12873
подправил немного, но не работает все равно
https://ideone.com/pdNw4I
89 1513101
>>13081
Бля, точно, спасибо.

А как можно добавлять число к числу, без преобразования в строку?
$a += - не преобразует, но он тогда просто прибавляет цифры. Какой-то оператор для этого существует?
90 1513103
>>13083
Поэтапно разбери и посмотри, что работает, а что нет.
91 1513109
>>13083
даже когда>>13103
не присваивается в функции строка
но я не понимаю почему
там есть равно, значит должно блин
сейчас кстати попробую обьявить
$str= ' ';
92 1513113
>>13101

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

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

число = число умножить на 10 + новая цифра.
93 1513127
>>13113

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


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

>Формула такая:


Формула чего?..
94 1513180
>>12536
>>12543
Ну фронтэнд это ясное дело. Просто все обычно к стеку так привязаны, советуют делать упор конкретно на него. А я хочу и все фреймворки шарить, и в ноде копаться, и в питоне. Но если так даже принятно, то в чем вся "болезненость" перехода на другой язык? Или это все сказки неосиляторов?
95 1513182
>>13109
>>13103
>>13083
>>12873
>>12872
ВСЕ РАЗОБРАЛ! Спасибо за внимание, оп не нада
потом еще запятые доделаю, устал я
https://3v4l.org/uaKV2
96 1513322
>>13180

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



Я с ноды начинал, у нее документация для нуба - ад адский. Я вообще нихуя не понимал. Че от чего наследуется, и нахуя оно вообще нужно. И как из этого говна сайт собрать. Потом между делом изучил питона синтаксис, но питон рыночек порешал. На нем крайне мало для нуба работы.
По итогу пришел в пхп, выучил sql, и так по гайдам, по видосам и прочем я разобрался и в сессиях, и в ООП и в том как вообще должно быть организованно приложение. Слои, контейнеры и все такое.
Я все еще нуб, но именно на пхп я начал понимать что к чему.
Сейчас для одного человека пилю личный кабинет для сайта, за небольшие деньги, типа первый проект. И все дается через боль, но идет вперед.
И когда я возвращаюсь к node иногда - я прям гораздо проще понимаю что к чему, яснее.
Но это я с позиции нубаря.
97 1513410
>>13180

>А я хочу и все фреймворки шарить,


Время

>и в ноде копаться, и в питоне.


Время x20

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


Во времени. Если ты можешь тратить на это всё по 25 часов в сутки большую часть своего свободного времени то все ок.
Нет проблемы выучить yii, laravel и symfony ибо в целом они все mvc, только со своими внутренними правилами. Если поймешь какой-нибудь один из них, то с другими будет уже проще разбираться.
Тоже самое и с другими языками программирования. В них свой синтаксис, свои нюансы, свои библиотеки/фреймворки/мода.
Нужно следить за новыми версиями языка/фрейворка. Обновляться если в новой версии есть какие то исправления по критическим проблемам / улучшение производительности.
Я все ржу когда вспоминаю как в 7.0 или 7.1 зарезервировали слово Object и на одном проекте пришлось в коде все это переименовывать
Нет смысла быть человеком-оркестром. Стоит грамотно выбирать то, что учить.
Плюс не забывай, что если постоянно работать и/или учиться то можно просто ебнуться и выпилиться.
98 1513424
Ребзя, а как понять на каком уровне находится анон и какой уровень нужен, чтобы идти на РАБоту?
Понятно, что учиться можно бесконечно. Да и некоторые аноны с нулевыми знаниями работать шли и там уже учились.
99 1513454
>>13410

>Нет проблемы выучить yii, laravel и symfony ибо в целом они все mvc


Ну я узнал о psr-7. И сейчас в компонентах ковыряюсь. Как я понимаю в пхп фреймворки все на одном фундаменте построены.

>В них свой синтаксис, свои нюансы, свои библиотеки/фреймворки/мода.


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

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


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

>>13424
Можешь откликнуться на вакансию - пришлют тестовое. Даже если ты его не сможешь сделать/сделаешь плохо, то для тебя это какой никакой а опыт. Возьмут - хорошо, не возьмут так хоть практики прибавиться.
100 1513474
>>13410

>Нет смысла быть человеком-оркестром. Стоит грамотно выбирать то, что учить.


А я считаю, что поковырять стоит всё что интересно и дотянешься, но при этом иметь собственный стек в котором сечёшь.
101 1513557
Как решается эта задача?

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

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

Я не понимаю вообще эти ебаные циклы.
Это какая-то дичь.
102 1513572
>>12787
назови мне библиотеку,где сокеты норм работают в пхп?
103 1513600
>>13557
Скачай видеоурок какой-нибдуь и посмотри. Или на ютубе. Всё станет ясно и понятно.
Советую именно так делать. Если всё ещё не поймёшь - гугли как сделать такой цикл (таблица умножения). Но не копируй, а разбери по строке, что происходит и почему прибегаю к туториалам, которые ты прошёл.
104 1513610
>>11149
То у одного регнуться нельза, у другого дебильные ограничения на название группы, у кого-то код отформатирован так, будто копипейстом за одну ночь настрочено.

Вы там своё говно вообще тестируете?
105 1513665
>>13600
Сможешь ли ты в спойлере хотя бы показать как?
Логика от меня начисто ускользает.
Я третий день сижу за этим и похоже зря теряю время.
106 1513680
>>13665
Если надо что-то совсем плюшевое, то:
for I>N
{
echo "<tr>$X</tr><tr>x</tr><tr>$X</tr><tr>=</tr><tr>pow($X)</tr>"
}
107 1513693
>>13680
Вообще нихуя не понял.
Слишком сложно.
Слишком ебануто.
Я всё, всем удачи.
109 1513703
>>13693
чувак так далеко не уедешь. Расскажи как ты пытался решить эту проблему, какой код писал, что именно было не понятно.
110 1513746
>>13695
а почему говорят,что лучше нода с сокетами?
111 1513761
>>13693
Ты совсем что ли тупенький?
for ($i=0;$i<9;$i++){
}

Дальше сам разбирайся
112 1513762
>>13703
Я знаю что не уеду.

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

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

$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.

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

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

Просто цикл при увеличении на единицу понятен, но дальше просто космическая пропасть сложности.
113 1513763
>>13762
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>";
114 1513764
там знак умножения проебался, сам вставишь >>13763
115 1513766
>>13762
Просто не твоё.
В IT много разных профессий - попробуй что-нить более понятное и не задротное.
116 1513767
>>13762

>$a =1


>$b = $a$a;


Не нужно

>for ($a = 1; $a < 10; $a++) {


правильно

>echo "$a X $a = $b";


неправильно.
echo "$a X $a = " . $a
$a;
lsyfyl.jpg30 Кб, 600x600
117 1513770
>>13410

> Нет проблемы выучить yii, laravel и symfony ибо в целом они все mvc


Тащемта то, что называется mvc в yii и (частично) laravel - это хуита, которую перенесли из старых GUI-шных приложений и не адаптировали нормально под веб.
Ну и в принципе, 99 погромистов из 100 понимают "модель" как слой работы с базой данных, "контроллер" как место, где нужно писать (бизнес) логику, а "вьюху" как место, где нужно принтить данные.
Что, естественно, не так.
118 1513772
>>13763

>>$b<=9;



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

Один знак < меньше достаточен только 10 указать и явно все окончится 9кой.
119 1513773
>>13770

>Что, естественно, не так.


А как? Ворвался - отвечай на свой ответ чтобы не быть баттхёртом.
120 1513780
>>13772
Потому что мне захотелось так сделать?
121 1513785
>>13780
Я думал что за каждым символом стоит большее понимание чем просто: захотелось.
122 1513789
>>13785
Ты хули доебался, долбоёбина?
Ну блядь, сука, мне надо числа от ОДНОГО до ДЕВЯТИ выводить, я и сделал цикл от ОДНОГО до ДЕВЯТИ, а не десяти. Иди на хуй, чёрт ебаный
123 1513790
>>13789
Если стоит просто < 10, 9 и будет последней цифрой и 10 не выведет никак.

В остальном твой бомбаж как бы говорит что ты говно.
124 1513792
>>13790

>послал выблядка на хуй


>анон считает, что это бомбёж а не призыв к действию


Выключай свои маняфантазии и иди работать.
image.png54 Кб, 1276x680
125 1513794
Пытаюсь получить бесплатный домен tk на freenom.com, и не получается. Они прикрыли лавочку, или я где-то туплю? Где ещё можно получить домен бесплатно? Мне любой, лишь бы его можно было прикрутить к уже купленному vps.
126 1513798
>>13792
Я понял что ты тот шизик что тут срет.
layers.jpg48 Кб, 600x450
127 1513810
>>13773
Если вкратце, то:

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

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

Там много всего и ещё больше тонкостей, читай про clean architecture, hexagonal architecture и domain driven design.
128 1513848
>>13810
Ты как-то нахватался всего по верхам.
Ерунду написал.
130 1513881
Знаете, лично я не понимаю, почему ВСЮ логику сейчас принято пихать в модель. А в контроллере остаётся только передаточное звено. "О, юзер хочет сделать вот это - пнём вот этот метод модели и отдадим юзеру результат!". Я не вижу, чем этот подход лучше, чем толстый контроллер. Ну, кроме "стильно-модно-молодёжно".
131 1513891
>>13881
Покажи кодом - что сам написал на эту тему. Кукарекать в треде любой ждун умеет.
132 1513893
>>13881
Всем. Тестируемость, гибкость, расширяемость.
133 1513896
>>13881

>толстый контроллер


Лапша не нужна.
134 1513905
>>13891
А это уже переход на личности. Давай так: я мимокрокодил и вообще не кодил ничего, окей? Ты в любом случае круче меня.
>>13893
>>13896
Вот хоть убей не вижу профита.
135 1513906
>>13905

>не вижу профита


Так это твои проблемы.
136 1513915
>>13905

>я мимокрокодил и вообще не кодил ничего


А какой тогда смысл с тобой вообще время терять? Притащил статей чтобы срач начать, а сам отношения к разработке не имеешь.
Иди-ка ты в/б, дружок.
137 1513923
Анишки, пока вы сретесь, может кто подскажет:
имеет место проблема с кешированием сайта, сделанного на slim
Суть проблемы - делается урл типа /delete/2
по нему система удаляет файл с айдишником 2, обычный анлинк. Проблема в том, что к концу дня этот урл перестает удалять файл.
НО, если я очищаю кэш браузера, то урл начинает работать и срабатывает еще пару раз. А потом по-новой очищай. Вопрос - кто-нибудь сталкивался с подобным? Куда хоть копать? В сторону браузера? В сторону хостера (бегет)? В сторону слима? Я добавил в шапку сайта заголовок с ноу-кэш. Не помогает. Смотрел в трех разных браузерах - везде одинаково.
138 1513950
>>13923

>Куда хоть копать?


Я бы копал в сторону хттп-заголовков на запрет кэширования.
139 1513951
>>13950
А, в глаза ебус. Сорян.
140 1513977
>>13848
Ты или по пунктам критикуй, или не возникай. И да, сам попробуй уложить архитектуру приложений в 2 абзаца.
Ну и да, если совсем кратко:
- "модель" - это модель предметной области, содержит бизнес-логику
- "контроллер" - это то, что нужно делить на две части, собственно, "хендлер" (вычитывает нужные данные из запроса) и "юз-кейз" (валидирует данные, вызывает модель)
- "вьюха" не нужна совсем.
141 1513979
>>13810

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


Минуточку, а скул-запросы куда лепить? В контроллер? Или во вью? Куда их ещё-то, как не в модель? И как можно написать запрос, который будет ничего не знать, в какую базу он полезет: в оракл или в майскул?
142 1513980
>>13979
в сервис
контроллеру насрать, каким образом получается нужный набор объектов из модели
он только говорит "а дай-ка мне такие объекты"

потому что завтра ты поменяешь БД на обращение к микросервису, и чо, будешь контроллер еще переписывать?
а там и до гуя дойдешь?
143 1513989
>>13980
Анон дело говорит. Ты описываешь интерфейс, скажем:
interface UsersRepository {
public function Load(int $userId);
public function Save(int $userId);
public function LoadByName(string $name);
}
И используешь его в сервисах и юз-кейзах. А этот интерфейс уже может реализовывать MysqlUsersRepository, который и делает запросы.
144 1514006
swoole для реал проэетов пойдет или ну его наз и поставить ноду?
145 1514007
>>14006
ну его нах
146 1514009
>>13977

>по пунктам критикуй


Пережовывали сто раз уже на форумах. Нах ты сюда это принёс, болезный? Ни кода, ни своих наработок - только чужие статьи и чужие мысли.
Кого критиковать, тебя? Ты никто вообще.
147 1514011
>>14006
Хз, я не пробовал, но с большой настороженностью отношусь к любым таким надстройкам над php. Может и норм, но я бы всё равно ноду взял.
148 1514013
>>14011
ну я про то же.асинк-это не про пых
149 1514015
>>13980

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


Зачем контроллер? Модель. А "сервис" - это уже не MVC же получится. Я что-то запутался в вебе образца 2019.

Олсо, за это "мы делаем сайт визитку, но вдруг завтра он станет порталом на микросервисах и оракловой базой в распределённом кластеере? Давайте предусмотрим всё!" известный всем нам товарищ рекомендовал в своей книге (обязательной для изучения любому программисту) пиздить ногами.
150 1514018
>>14015
Что за книга? Прям увожением проникся к товарищу.
городить абстракции на абстракции только потому, что так можно, и может пригодиться когда-нибудь - признак дегенерата от программирования
151 1514020
>>14018

>Что за книга?


Честно говоря, я забыл и как его звали, и как называлась книга. Не то Кнут, не то Страуструп, а может ещё кто-то из их компании. Постоянно мелькает эта книга, а я постоянно забываю название.
152 1514028
Как делать задачу?
Клавиша shift
Если ты общаешься в интернете, то, наверно, заметил, что у некоторых людей есть дурная привычка, вопреки всем правилам и нормам русского языка, начинать все предложения (и даже иногда имена) с маленькой буквы. Поскольку никакие аргументы на таких людей не действуют, давай исправим их текст с помощью языка PHP.

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

http://sandbox.onlinephpfunctions.com/code/943693eba4c9584583afc1fa406796417445212a
153 1514030
>>14020
Ну я понел примерно.
Помню первые парсеры писал и с ООП игрался - наворачивал одно на другое вечерами - библиотеку на фасад, с тором чтоб и многопоточно, и по SOLID всё надо красиво. Потом заметил, что я третий день пишу ёбань и ни строчки конкретной логики, и написал за полтора часа всё что надо. Тогда и понятно стало, что тормозить надо все эти фантазии и писать конкретику, иначе дроч один.
154 1514031
>>14015
Надо, Федя. Надо. Это за бабло заказчику извлоль быстрее, некогда проектировать и так сойдет. Когда учишься нужно айл ду май бест всегда делать. Вот наспупит реальный случай, когда сеньор-помидор психанет и нахер уволится, и придется тебе придумывать архитектуру 1000 человекочасов. А ты обосрешься и будешь дальше всю жижнь свои мокрописьки писать. Оно конечно понятно что 90% веба - это мокрописки. Но хочедца расти над собой.
155 1514035
>>14030
Ты еще Энгельса с Марксом покритикуй, мол чо там думать, все взять и поделить.
156 1514045
>>14035
Когда котлеты будут, товарищ? Обещали ближе к выходным, а уже среда.
157 1514051
>>14045
- Дарья, когда котлеты будут?
- Через десять минут Филипп Филиппович.
- Молодой человек, изволите обследоваться, приходите после обеда к трем часам.
158 1514053
>>14051
Молодой человек, помогите пожалуйста

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

159 1514058
160 1514060
Объясните нюфане, если компания хочет создать приложение и собирается использовать фреймворки, то она берет фреймворк для пхп вроде ларавеля ИЛИ она берет фреймворк для джс вроде реакта ИЛИ она берет и то, и другое и пытается их помирить?
161 1514064
>>14060
Она берет фреймворк типа битрикс и берет джуна типо знающего жиквери и пытается их померить
162 1514065
>>14058
/[.!?]+/u =====> /\s/u
Разбивает теперь по словам....
Возможно я неправильно описал проблему.
С предыдущей маской /[.!?]+/u получается это
__________________________________________________________
array(3) {
[0]=>
string(11) "ну что"
[1]=>
string(47) " не смотрел еще black mesa "
[2]=>
string(86) "я собирался скачать ,но все как-то некогда было"
}
__________________________________________________________

Вроде бы всё ок, но остаются пакостные пробелы в начале и конце строки... Как бы их убрать?
163 1514067
>>14064

> померить


Школьник иди нахуй, борда для 18+.
164 1514071
какая у ларки производительность в приеме запроса и отдаче странички?
165 1514072
>>14067
Я хател напесать "помереть" извенити
166 1514102
>>14072
Тагда аставайся.
167 1514105
>>14067

>борда для 18+


Тематика вроде для всех. Обычный форум в общем-то, только анонимный.
.png4 Кб, 904x22
168 1514109
image.png101 Кб, 1032x727
169 1514115
>>14109
А это нафига тогда запилили?
170 1514118
>>14115
Шоб ты долго не искал самое важное
171 1514126
>>14015
Понятно, что для сайта-визитки сложного бекенда не надо.
Но:
1) Не все пишут сайты-визитки;
2) Софт имеет свойство усложняться, а не упрощаться со временем;

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

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



Что почитать чтобы сразу нормально делать на пхп?
175 1514446
>>14439
Для начала, использовать онли симфони либо ларавел, если мало опыта. yii и cms-ки - это архитектурный ад.
Во-вторых, прочитать гайды, советы и бест практики по выбранному фремворку.
В-третьих, выше уже писали. Изучать clean architecture, hexagonal architecture и ddd, а затем их реализации на php, лучше на конкретном фремворке. Лучше пока ещё ничего не придумали.
176 1514480
>>14446

>используйте симфони если мало опыта


Вот этого не слушайте - он бредит.
177 1514485
>>14480
Ты в глаза долбишься что-ли?
Симфони, либо ларавел, если мало опыта.
Много опыта -> симфони
Мало опыта -> ларавел
178 1514749
>>14446
Интересно где найти контору, которая делает все на чем то одном. Как правило это студия где делается все и на всем, от wordpress до laravel. Или ДСах это норма?
179 1514958
Привет если кто работал с битриксом а в особенности их рест апи сочуствую

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

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

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

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

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

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

Наличие всяких жидких штучек вроде серверного батчинга с референсами через по сути обращение к серверным php переменным не сильно в этом помогает, мы даже думаем тупо не поддерживать такое.
cat.jpg49 Кб, 1242x968
180 1515134
>>11146 (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.
Например, для водителя это будет: Имя, возраст, зарплата, стаж, категории, марка личного автомобиля".

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

Двач, очень прошу, объясни в чем тут дело? Как правильно?
cat.jpg49 Кб, 1242x968
180 1515134
>>11146 (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.
Например, для водителя это будет: Имя, возраст, зарплата, стаж, категории, марка личного автомобиля".

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

Двач, очень прошу, объясни в чем тут дело? Как правильно?
181 1515143
>>15134
У тебя же есть конструктор, почему бы тебе не закинуть в его конструктор $_POST?
182 1515146
>>15143
Три разных класса же, я же не знаю заранее какой класс выберет пользователь.
183 1515166
>>14749
Зависит от конкретной конторы и её типа. Если тебя интересуют аутсорсеры, то те, которые подешевле, берутся за всё подряд. Те, которые подороже, могут себе позволить крупных закачиков и какую-никакую архитектуру, они так и так будут тяготеть к нормальным фреймворкам. Но тут всегда нужно очень внимательно смотреть на саму контору, чтобы в ад не попасть, даже крупняк бывает очень херовый и лучше бы в такой не попадать.
А у продуктовых контор основной продукт уже на чём-то написан, можно хоть на собеседовании об этом спрашивать.
184 1515171
>>14485

> симфони


медленная и усложненая система
185 1515179
>>15166
Ну у меня в городе из контор только пару контор берущихся за любую работу как я понимаю (любой регион и любая сложность). Я вот начитался, и теперь боюсь идти, ибо скорее всего работать придется со всем cms/yii/laravel
186 1515186
>>15171
Современный, хорошо задизайненный набор компонентов. Лучше в мире php пока не придумали.
187 1515187
>>15179
Ну упрашивай и договаривайся, чтобы на laravel работать тогда.
188 1515215
Цикл в цикле это говнокод ?
189 1515220
>>15215
Смотря когда. Иногда без него не обойтись, но по возможности лучше так не делать, конечно.
190 1515240
>>15134

>ajax запросом отправить ее на сервер, где нужно получить список полей (свойств класса), сформировать под каждое из них <input> и снова отправить на сервер


Мне кажется это лишнее, лучше сразу их куда-нибудь скласть и при смене пункта в селекте рисовать нужные инпуты.
191 1515253
>>15134
Если задача - просто дать пользователю возможность менять профессию, то городить что-то со свойствами классов изначально ошибочно.
Делаешь класс UserStorage с методами add и get, делаешь класс ProfessionStorage с теми же методами add и get, делаешь класс UserProfessionStorage с методами addForUser и getForUser.
(Чтобы не заморачиваться с бд, то каждый из классов, может писать и читать из файлика, это изи пишется)
так что твоё действие "получить для юзера профессию" будет выглядеть, как:
$profId = $userProfs->getForUser($user->id); // возвращает id профессии или null.
if ($profId !== null) {
$prof = $professions->load($profId);
// тут делаешь с профессией, что хочешь.
}
192 1515272
>>15146
Фабричный метод тебе в помощь.
Хотя, скорее всего, ты неправильно архитектуру пилишь с ООП это надо продумывать.
193 1515284
>>15253

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

>>15272

Такие были условия задачи. Не уверен, что там подразумевались паттерны, но постараюсь разобраться, спасибо тебе.
194 1515372
Посаны, разбираюсь с ООП.
Собственно, такие вопросы: https://ideone.com/8Xfm05
1. Есть price и weight. Если я хочу с ними работать, например с учётом ндс цену вывести, то в каком виде и где я должен рассчитывать ндс? Без разницы куда вставить расчёт ндс? Внутри product?
2. функции - являются методами, верно?
3. Если я хочу создать отдельный метод, в котором будет выводиться только цена и ндс, то надо просто создать второй метод с нужными данными, после чего вызвать его? Нужно ли мне ещё один констракт создавать для этого, потому что при создании new Product у меня будут значение кроме ндс и цены, такие как вес, название и пр.?
195 1515375
>>15372

>3.


Так, с 3им разобрался, нужно указывать все значения констракта, просто новый метод не будет их выводить. Тупанул.
196 1515384
>>15372
1. Ты неправильно понимаешь "суть" (тм) ООП. ООП - это не про то, чтобы нафигачить классов, это про то, чтобы представлять код в виде объектов (сервисов), каждый из которых выполняет свою работу и по необходимости обменивается сообщениями (вызовами методов) с другими. Всякие инкапсуляции и наследования - это уже частность, следствие объектности.
Также прочитай про SOLID, в частности про принцип единой ответственности.
Грубо говоря - если у тебя есть user, то это просто объект для хранения данных о пользователя, и всё, кроме геттеров и сеттеров там ничего держать не нужно.
Если тебе нужно считать цену - то тебе нужен PriceCalculator, который берёт, скажем, продукт и возвращает посчитанную цену для него.
Если тебе нужно вывести что-то куда-то (запринтить объект в виде html в output), то тебе нужен Renderer, View или что-то такое.

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

2. Метод - это функция, исполняемая в контексте или конкретного объекта (может обращаться к его свойствам), или класса (если метод статический).
images.jpeg5 Кб, 225x225
197 1515397
Анончики, кто работал с яндекс облаком? Не могу разобраться с api для загрузки объекта в хранилище. Может кто помочь?
198 1515448
>>15384

>1


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

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

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

Твой код должен выглядеть условно как-то так:
Роутер (принимает запросы и вызывает коллбек) -> Хендлер (получает объект запроса и вызывает нужный сценарий из бизнес-сервиса) -> Бизнес-сервис (описывает сценарии типа "добавить продукт в корзину", "оплатить заказ", вызывая специализированные сервисы по необходимости) -> Инфраструктурные сервисы (база данных, калькуляторы, счётчики, любая фигня) -> начинаем возвращаться назад -> Бизнес-сервис (всё рассчитал, сохранил, возвращает ответ) -> Хендлер (получил от бизнес-сервиса ответ, прокидывает его в сервис, отвечающий за отображение ответа) -> Отображатель (или View, выводит или возвращает какие-то данные в каком-то виде, например продукты в json или ордеры в html)
201 1515531
>>15508

>Соответственно, твой класс Product задизайнен неверно, потому что у него откуда-то нарисовался метод printInfo(). А твой класс Product, очевидно, хранит информацию о продукте. Всё, если тебе нужно принтить продукт - создавай productPrinter либо Renderer, что-то такое.


Это весьма сомнительное умозаключение. Сделать для дебага функцию printInfo у продукта - это совсем не такая уж плохая идея.
А вообще не плохо было бы сделать сразу несколько классов для продуктов:
1) Продукт как модель, хранящий данные продукта и работающий с базой данных.
2) Продукт как View, отображающий продукт тем или иным образом. Таких View может быть разумеется несколько.
3) Контроллер для продукта, который получает запросы пользователя, выбирает нужный продукт, объединяет нужный продукт с нужной View и выдаёт ответ пользователю.
202 1515543
>>15508
Я сбацал пример по-быстрому, смотри комментарии: https://ideone.com/qtYObS
203 1515550
>>15531
Это у тебя сомнительное умозаключение. У него в printInfo понаписаны `<div style='border: {$this->border}; ` и прочее, это явный рендеринг уже. Да и принтится любой объект элементарным print(serialize($object)), так что специальные методы в принципе не нужны.
204 1515570
>>15550
Ну тогда ты прав конечно, 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() и посмотреть строение любого объекта или массива.
205 1515573
>>15570
function print_r_die($object) {
ob_clean();
print_r($object);
die();
}

Самофикс
206 1515574
>>15570
Это в любом случае костыли. С момента создания xdebug надобность принтить объекты практически исчезла, потому что ты смотришь непосредственно на данные в памяти.
207 1515578
>>15574
Мне не нравится дебажить при помощи xdebug. И я как дебажил принтами, так и буду продолжать.
208 1515691
>>15578
Для меня это звучит, как "мне не нравится ездить на автомобиле, буду как привык, на лошадях".
Дебаггеры не просто так придумали.
Прочем, как только ты окажешься на достаточно сложном проекте - поймешь. Ох, как же я как-то в своё время заколебался дебажить логику процессинга заказов на одном очень крупном интернет-магазине.. 15 шагов у дерева статусов, нетривиальная логика переходов, куча условий.. Мммм, мякотка.
209 1515719
>>15543
Пиздос. Ваще нихуя не понятно.

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

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

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

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

К тому же, по скольку мы добавили её в констракт, $test = new Product(Запросит здесь NDS указать, а как я её тут укажу?.. 'getPrice()'?)
210 1515722
>>15543
Точнее строение понятно, но вот что ты там понаписал...
211 1515724
Сори, что совсем тупые вопросы задаю. Просто я без явного примера использования не могу самостоятельно допердолить, как подобное реализовывается. (Ну как не могу - мой максимум то, что я расписал выше, но это всё теоретически и скорее всего неправильно)
>>15719
212 1515725
>>15719
Мне в голову пришла совершенно тупая мысль: почему бы тебе не вывести логику расчёта НДС в субд?
three-toed-sloth.jpg65 Кб, 750x585
213 1515729
>>15725

> субд


кто
214 1515733
>>15729
СУБД
215 1515738
>>15733
Друже, я делаю элементарные задания. Если ты про фигню типа sql, то я до такого ещё не дорос.
Мне просто бы понять, как правильно сделать это и дальше по примеру этого работать с остальными заданиями до новых вопросов. >>15719
216 1515747
>>15719
Давай начнем с того, что ты нормально вопрос сформулируешь. Что хочешь сделать и что не понятно.
217 1515760
>>15747
Я же всё вроде расписал.
>>15372

>https://ideone.com/8Xfm05


Вот тут вот оригинал кода. Хочу добавить функцию расчёта ндс, чтобы цена с ндс выводилась, но я точно не уверен, как это делается, потому что со всеми этими паблик/констрактами и прочем создалась путаница в голове и я не совсем понимаю строение кода и как его применять.
Собственно, все вопросы которые у меня возникли находятся именно в этом посте >>15719
1013177221.jpg38 Кб, 445x650
218 1515806
>>15760
Ну и зачем ты пытаешься лезть в ООП, если не понимаешь как оно работает. Посмотри на ютубе видос про создание инернет магазина, блога и тд или почитай пикрелейтед.
219 1515816
>>15806
Большое спасибо за помощь, можешь дальше не отвечать на поставленные вопросы!

Пиздец, каждый вопрос в треде - за место внятного ответа на простые вопросы говорят 'иди читай то, иди читай сё', или предлагают какую-то невъебенно-сложную залупу или же вообще отвечают не по теме, предлагая какие-то базы и прочую хуйню.
Я уже прочитал несколько статей и посмотрел гайды и мне непонятны очевидные вещи, потому что я НЕ ВИДЕЛ как эти вещи решаются на пример. Поэтому я жду ответа правильно ли я понял, как это делается или же что-то нужно изменить/что-то я не понял/делается как-то иначе > >>15719
220 1515820
Реально, в чём проблема написать 'ты понял правильно, делается так так и так, а в этом случае ты понял не правильно и делать надо как-то иначе'.
Я сразу вспоминаю тот видос от какой-то пизданутой психиаторши, которая говорит о программистах и которую тут форсили. На фоне происходящего в треде из срачей и пиздежа не по делу кажется, что она не такая уж и пизданутая.
221 1515834
>>15820

>Реально, в чём проблема написать 'ты понял правильно, делается так так и так, а в этом случае ты понял не правильно и делать надо как-то иначе'.


Проблема в том, что тут сидят такие же чуваки и им нахуй не впёрлось заниматься твоим образованием.
Ты идиот ваще? Нанимай репетитора и будет он тебе всё расжёвывать, а у нас самообучение в ходу.
222 1515841
>>15816
Просто судя по твоему сообщению, у тебя на самом деле отсутствует элементарная база, в этом нет ничего плохого. Я рекомендовал тебе посмотреть видосы на ютубе как раз чтобы ты посмотрел как вся эта хуйня работает на примере. Можешь глянуть канал этого чувака что по ссылке, он неплохо рассказывает про ооп и mvc, как только вникнешь в то что он объясняет, многие вопросы сами по себе отпадут.

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

Я точно так же тут где могу отвечаю на лёгкие вопросы, где не могу - молчу.
224 1515846
>>15841

>у тебя на самом деле отсутствует элементарная база


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

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

Просмотрю уже завтра на свежую голову. Может быть найду ответы, спасибо.
225 1515850
>>15842
Тебе правильно намекнули - ты в теории плаваешь. Без теории ты проста очередная макака за клавиатурой.

Если не делал задачи из ОПпоста, то не лезь ваще никуда пока.
226 1515863
>>15846

>у меня даже не с ООП проблема, а скорее с базой и построением кода при применение ООП


В твоих сорцах не только с ООП проблема. Ты даже данные неправильно выводишь - через эхо никто не выводит разметку уже лет 15 как. За это по яйцам бьют в хороших коллективах.
У тебя именно базы нет.
227 1515876
>>15863
А как выводят?
228 1515878
>>15876
ПХП сделан для того, чтобы безболезненно впиливаться в вёрстку, а у тебя наоборот - вёрстка болезненно всунута в ПХП.
Просто чтобы посмотреть данные, то можно выводить через var_dump. Особенно православно получается, если ещё и xdebug накатить.
229 1515880
>>15878
А. Так если я не хочу вардампить, то в чём проблема эко использовать? Ну ладно.
230 1515882
>>15880

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


Да не хоти. Только потом не надо обижаться, если тебя макакой кличут и книжки советуют.
231 1515889
>>15882
Ну с учётом того, что вар дамп был использован, почему бы не перестать его использовать и вписать эко?..
232 1515914
>>15889
Речь не об echo, а о вёрстке в коде.
Перемешивать логику и представление, а потом говорить, что не понимаешь ООП это, как бы, несколько неправда.
233 1515946
>>15816
Тебе никто ничего не должен. Учить тебя никто не нанимался. Если что то не получается - ты ОБЯЗАН, как минимум, нормально сформулировать свой вопрос:
"Ребята, помогите. Нужно сделать это вот. Я не понимаю вот тут, пробовал так и сяк, гуглил такое и сякое."
А когда человек заходит и пару постов ноет что у него что то не выходит, при этом считая что ему все должны быстро кинуться и помочь - это свинство.
Не понимаешь ООП? У ОП-а есть хорошая теория и пару задач практических. Понимаешь теорию, но нужна практика? Загугли бля, есть куча практических примеров, реализаций всего и вся. Или ты хочешь чтобы в треде тебе в 1000 раз что то расписывали? Скинули ссылку на видос по MVC - посмотри же его, а не ной что кто то хуевый не ответил на твой вопрос
234 1515947
>>15946

>Тебе никто ничего не должен.


Где я написал, что мне кто-то должен? Это вы тут некоторые делаете вид, что чё-т полезное пишите, на деле же из 5 человек только 1 чё-т дельное скажет.

>А когда человек заходит и пару постов ноет


>ноет


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

>Скинули ссылку на видос по MVC - посмотри же его, а не ной что кто то хуевый не ответил на твой вопрос


А где я, долбоёб, ною? Я сказал человеку спасибо и сказал, что посмотрю.

Иди короче хуй соси, дебил. Вот о таких анонах-проггерах я ранее и писал. Попробуй ещё раз доебаться до меня, я тебя опущу за каждый пункт как это сейчас сделал.
235 1515959
>>15947
Да мне вообще до пизды. Можешь дальше в глаза долбиться и думать что прав. Я тебе написал как это выглядит со стороны. Опустил он меня, лол. Откуда вы такие лезете отпускатели
236 1515964
>>15959
Если до пизды, почему под себя сренькаешь?
237 1515965
>>15964
Ты же тред засираешь, а не я. Не удивлюсь если ты тот самый шизик-перекатывальщик с JS
238 1515966
>>15965

>засираешь тред



>задал простой вопрос


>не получил ответ



))00
239 1515969
>>15966

>>задал простой вопрос


Об чём вопрос-то?

мимо
240 1515979
>>15384

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


проиграл с этого эксперта по ООП.
241 1516096
>>15979
Ну давай, поясни мне за active record. Заранее знаешь, что я тебе отвечу. Возможно даже Фаулера процитирую, чтобы совсем наверняка.
242 1516125
>>15478
Ну и какие идеи у тебя по этому поводу?
243 1516156
>>16096
Да зачем же сразу актив рекорд? Хотя бы какие-то преобразования на приватными данными делать - уже методы нужны. Тот же жснонабле интерфейс например.
244 1516168
>>16156
Во-первых, ты неправильно понимаешь концепцию приватных полей. На то эти поля и приватные, что они требуются исключительно для работоспособности данного класса и не должны торчать наружу.
Во-вторых, JsonSerializable - это костыль, потому что у объекта может быть много разных представлений в формате json. Самый простой пример - динамический набор полей, какие поля в get-е задал, такие и хочешь получить (есть такая практика в rest api).
Или, к примеру, проверки доступа - такое бывает, что некоторые поля можно возвращать не всегда, например, есть разница, в показе json-представления объекта пользователю (вернув его из апи) или послать этот объект в другой сервис (сервис аналитики, к примеру). Если ты всю эту логику будешь писать в юзере, у тебя получится божественный класс с кучей ответственностей.
Поэтому не путай тёплое с мягким, User - это такой DTO, отвечает за передачу объекта пользователя между компонентами твоей системы, ни для чего более. Для сохранения его в базе тебе нужен будет UserRepository, для представления его в json тебе нужен будет отдельный JsonEncoder или даже UserJsonEncoder (смотри компоненты симфони, которые сериалайзеры, они совсем не зря сделали их именно так или иначе).
245 1516178
Аноны, у меня какая то очень странная дичь с моим приложением на slim 3.9.
Вдруг в один момент у меня перестали работать редиректы:
return $response->withRedirect('/', 301);
Не работают и все тут.
Посмотрел раннюю версию - там все работает. Начал сравнивать - вроде все одно и тоже. Начал дикую еблю с обменом файлов, рокировкой каталогов. И выяснил вот что.
Структура index.php таковы, что зависимости находятся в другом файле и подгружаются в index.php.
Типа такое - require_once $_SERVER['DOCUMENT_ROOT'] . "/dependences/dependences.php";
Методом перебора я выяснил что если который в файле зависимости подкинут в файл глючной версии - то все работает. Херня только в том, что код и там и там одинаковый.
Более того, если код из глючного файла поместить прямо в index.php - а сам файл заккоментировать - то все будет работать нормально.
А если создать еще один файл подгрузки зависимости и в него поместить глючный код - то работать редирект не будет. Но если же в этом новом файле удалить глючный код, и записать идентичный код из старой рабочей версии приложения - то работать будет.
Я если честно слегка фрустрирую от этих дел. Мож кто то встречался с таким?
246 1516179
>>16178

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



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

самофикс
179-244 247 1516291
>>15372

> Есть 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 у меня будут значение кроме ндс и цены, такие как вес, название и пр.?



Ты не можешь сделать два конструктора. Можно, впрочем, сделать статический метод для создания объекта.
248 1516293
>>15384

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



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

>>15979
>>15863

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

>>15820

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

>>15834

Не вперлось - так пройдите мимо, зачем флейм устраивать? Вопросы заданы вполне нормальные и на них можно спокойно ответить. Все ли в порядке с человеком, который в ответ на нормально заданный вопрос агрессивно реагирует?
249 1516294
>>15719

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

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

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

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

>>15215

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

>>15134

> Разобраться с тем, как создать объект на основании информации их $_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>
249 1516294
>>15719

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

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

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

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

>>15215

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

>>15134

> Разобраться с тем, как создать объект на основании информации их $_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>
250 1516308
>>16293

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


Про обмен сообщениями - это в первую очередь был референс в сторону классического определения ООП, каким оно задумывалось изначально, пока не превратилось в карго-культ трёх главных слов.
Ну и да, обмен сообщениями - это всё ещё хорошая абстракция, потому что она превращает какие-то классы и функции в логическую структуру программы, где есть сервисы и они вызывают друг-друга. Сообщением тут является метод + аргументы. По моему опыту, когда человек усваивает эту аналогию, его код тут же становится чище, ему становится легче разделять ответственности и не лепить всё в одно место.
251 1516311
>>16291
Спасибо!
image.png13 Кб, 507x183
252 1516316
Кто-нибудь разбирается в сокетах?

Взял сокетный чат 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
image.png13 Кб, 507x183
252 1516316
Кто-нибудь разбирается в сокетах?

Взял сокетный чат 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
253 1516424
>>16168
Нафига ты тогда песню про геттеры-сеттеры завёл,если у тебя все поля публичные?
Алсо, актив рекорд вполне рабочий паттерн, что бы не говорили такие пафосные снобы вроде тебя.
254 1516431
>>16293

>Такие посты тут не нужны.


Тебя вот забыли спросить, что тут нужно. Это не твой личный тред.
map.jpg614 Кб, 770x2160
255 1516441
Что думаете о пике?
256 1516450
>>16431
Ващет это он создаёт эти треды и во многом благодаря ему они все ещё держаться. Если это ОП конечно.
257 1516452
>>15841
Это нормально, что я понимаю, что делает человек с видео, но вернувшись к коду через час забываю, как это работает и зачем это вообще нужно?
258 1516459
>>16450

>благодаря ему они все ещё держаться


Другие треды без всяких ОПов держатся. Если ОП что-то делает, то это никак не даёт ему право указывать остальным как себя вести - это уже свинство. Да и не касается его это никак и не должно касаться.
Алсо, не надо из двача доброчан лепить - гарантированно будешь послан.
259 1516462
>>16424
Актив рекорд рабочий в простых случаях, когда нужно на коленке mvp сварганить. А в сложных системах смешение отвественностей ни к чему хорошему не приводит. И с этим спорить тоже бесполезно, все тонкости сравнения active record vs data mapper уже по сто раз обсосаны и куча статей на эту тему написана.
Не понимаю, как вас самих не корёжит видеть в одном классе методы из разных предметных областей
А геттеры-сеттеры нужны в сложных случаях, когда у тебя внутри объекта что-то нетривиальное хранится. Например, объект времени, там могут лежать таймстамп, таймзона и микросекунда, всё такое. В простых случаях для DTO сойдут и публичные свойства.
260 1516479
>>16452
Да. У всех так (кроме совсем умников, которых очень мало). Понять мало, нужно еще что то сделать самому по мотивам, что бы закрепить. Желательно в этот же день. И желательно, поменьше заглядывать в исходное видео.
Такие вещи объясняет "Learning How to Learn" by Barbara Oakley.
261 1516494
Скиньте какую-то простую реализацию Active Record. В гугле ничего внятного не нашёл - какой-то говнокод из 13 года разве только. Компоненты фреймворков мне ещё рано ковырять - жидко обосрусь в процессе.
Суть в том, что в общих чертах я понимаю, что в родительскую абстрактную модель пихается круд, с привязкой к свойствам дочернего класса, но как-то с реализацией не получается совсем.
262 1516499
>>16494
Можно свою, у кого есть если.
263 1516586
>>16494
Разбей все на небольшие задачи. Начни с простого. Сделай класс с двумя полями - одно строковое для имени таблицы, второе для словаря ['Имя поля' => 'значение']. И одним методом save() по вызову которого значения из словаря будут записываться в таблицу. Потом добавь возможность загружать в этот класс данные из таблицы - сначала просто по айди (если сможешь то можно и сразу по более сложным запросам). Проще всего наверное будет сделать через фабричный метод, хотя обычно наворачивают какие-то конструкторы запросов. Теперь надо добавить возможность отличать новые классы от загруженых из базы (для новых класов при сохранении вызывается инсерт, для старых апдейт). После этого обмазываешся магией __get/__set и скрываешь реализацию (словарь с значениями полей). В общем у тебя есть примитивный AR класс. Дальше уже добавляешь что нужно. Возможно стоит подумать в сторону синглтона - чтобы когда ты создаешь несколько объектов которые соответсвуют одной и той же записи в таблице то чтобы при изменении одного объекта сразу апдейтился второй (без записи в таблицу и обязательно при записи). Это не обязательно синглтоном наворачивать - как минимум есть вариант с наблюдением/ивентами. Также очень полезно будет помечать поля которые были изменены (и сохранять старые значения) - но это уже когда будешь добавлять события жизненного цикла, типа beforeSave, afterSave и т.д.
264 1516596
CodeIgniter это пиздец и суицид карьерный? Он-то конечно "mvc", но код вместо того чтобы быть похожим на жабу как Симфони становится все какой-то лапшой уровня самописных фреймворков из туториалов с медиума, еще и ООП какое-то убогое
265 1516644
>>16586
Завтра заморочаюсь тогда.
266 1516647
>>16586

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


Это, как ни странно, я уже продумал - по наличию айдишника. Если он пустой - вставляем, если там что-то есть, то апдейт.
267 1516786
>>16596
Это пиздец, очевидно же. Кроме symfony, laravel и микрофреймворков (если ты шаришь) в мире php лучше ничего не трогать.
268 1516838
у пхп есть билиотеки для упрощения работы с сокетами.
пилить велосипед штатными средствами неохота
269 1516845
>>16838
Ты забыл знак вопроса.
И да, погугли выше и предыдущий тред, эта тема обсуждается здесь раз в неделю точно. Вкратце: php не особенно для этого предназначен, лучше даже не пробуй и используй какие-нибудь прокси для этого.
270 1516846
>>16845
а где то я видел пост,там один сказал против,а другой,да не ссы,там все НАТИВНО))
271 1516847
>>16846
короче,тогда придеться либо ноду юзать,либо aiohttp
272 1516851
>>16494
https://www.yiiframework.com/doc/api/2.0/yii-db-activerecord
https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRecord.php
Можно еще конечно посмотреть модель из Eloquent, но она пиздец какая сложная.
273 1516853
>>16838
У меня на проде работает Centrifugo. Отличное и простое решение без всяких пхпшных демонов. Есть хорошая и поддерживаемая либа https://github.com/centrifugal/phpcent для работы с ним.
274 1516857
>>16853
Поддвачну этого просветлённого
275 1516882
>>16851
Там не столько в сложности дело, сколько в навороченности - мне суть нужна, а не фичи.
276 1516889
>>16882
Ну ты же понимаешь, что "суть" - это класс с набором полей и методами save() и load() - и пишется за 5 минут?
277 1516926
>>16882
Суть можно посмотреть в документации фреймворков.
В Yii довольно лакончиные исходники, поэтому там разобраться весьма легко.
278 1516976
>>16926
Главное всерьёз нигде такое не использовать. yii это кал
279 1516982
>>16976
Так да, но обычно за тебя выбирает рынок, на Симфони нужны одни мидлы да сеньоры в крупные компании, а вкатывальщик еще повезет если yii будет ковырять, с высокой вероятностью онлайн магазин запчастей на битриксе будет творить
280 1516995
>>16976
Почему кал? Полгода где-то сижу джуном в конторе, которая свой продукт пилит. Фичи пилить достаточно просто, документация неплохая, в целом работать с ним приятно. Откуда такой хейт?
281 1517004
>>16441

>>Что думаете о пике?



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

мимо Марти Макфлай
282 1517011
>>16786
slim подходит под твое условие?
Мне нравится на нем писать и ебаться с библиотеками.
Ща делаю небольшой заказ на нем.
283 1517013
>>16846

>>да не ссы,там все НАТИВНО))


Речь шла про принципиальную поддержку. А так для реального приложения на сокетах node повеселее будет
284 1517056
>>16982
На Laravel скорее всего набирают джунов. Он похуже симфони, но зато дико популярен и уж точно лучше yii. Ну и даже на симфони полюбому можно найти что-то, если захотеть.

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

>>17011
В целом норм, но если ты джун, лучше поищи себе контору, где сможешь научиться правильным вещам у сильных ребят, это сильно ускорит твоё развитие.
285 1517058
>>17056

>>В целом норм


Ок, спасибо.
286 1517241
Сейчас пробую разобраться с паттерном MVC.
Сделал простую гостевую книгу (Ввод имени, отзыва, сохранение и вывод данных из файла).
https://github.com/RamPG/guestbookOOP/tree/master
В плане работоспособности кода не смог разобраться с ошибкой: когда файл пуст, он выбивает Undefined offset, пробовал empty и isset, но безуспешно.
В плане архитектуры вижу только одну корявость - это класс View, я просто разорвал класс и запихал туда HTML документ. Как можно сделать лучше? Создать отдельный файл page . php и вызывать его через include?
Не обращайте внимания, что все в одном файле, с этим чуть позже разберусь.
sage 287 1517262
>>17056

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


настолько умирает что скоро yii3 скоро должна полноценно выйти (:
288 1517387
>>17262
Я видел ченджлоги, они не впечатляют. Вместо нормальной архитектуры и компонентов symfony они обновили мажорную версию и перелезли на PSR-овские интерфейсы. Ну так себе. Выглядит словно, что чуваки просто насилуют труп. Очень надеюсь, что его как можно быстрее закопают и оно перестанет отравлять людям жизнь.

Ну и да, для меня вообще неочевидно, что именно из yii нужно спасать? Коряво реализованную систему внедрения зависимостей, наполовину состоящую из статических вызовов? Консольную тулзовину на скриптиках? Магически унылый active record с костыльной событийностью? Уёбищную систему плагинов? Напрочь стандартную MVC архитектуру хотя нет, с хуёвым роутингом? Дешёвую кодо-генерацию, которая генерирует ненужные вещи, которые пишутся за 5 минут? Гайды и рецепты на уровне 2010?
Yii и ему подобное говно умерло в тот момент, когда люди узнали о компонентах симфони, стоит это признать. Сейчас если ты хочешь написать mvc, ты берёшь любой роутер, пишешь код контроллеров, модель и сцепляешь это всё через любой контейнер, с любой ORM. В итоге, ты получаешь то же самое, но более качественное и не обременённое внешними зависимостями, делающее только то, что нужно. Под любую задачу есть симфони-компонент или библиотека, просто делаешь composer require и пишешь нужный тебе код. Yii остался где-то в прошлом, когда каждый писал свой умеющий всё комбайн. Ну и имхо, для тех, кто до сих пор не научился разрабатывать системы сложнее, чем mvp и просто копипастит код из примеров и stack overflow. Джуниоров и вечных джуниоров, одним словом.
289 1517549
>>17241
Твои view файлы для каждой страницы должны храниться в разных файлах. Отдельно должен лежать layout, в котором они будут рендериться. Сделал примеры как это можно организовать максимально просто.
https://www.codepile.net/pile/X5JXblNd
https://www.codepile.net/pile/wW8mEXLN
290 1517554
f
291 1518023
>>17241
View, грубо говоря, это твоя html страничка которую ты пихаешь в content-body твоего сервер-ответа.
292 1518026
>>18023
Анон выше кинул примерно как они рендерятся. Я когда список студентов делал - просто нужный для контроллера html файл подключал. Но я сам еще не особо в этом разбираюсь.
293 1518079
>>18023
>>17549
Спасибо за ответы, попытаюсь разобраться.
1573409102641.webm2,1 Мб, webm,
1280x720, 0:08
sage 294 1518107
>>17387

>yii exists


>анон с дващей

295 1518142
Надумал вкатиться в веб. Начал с изучения HTML, потом думаю разобраться с CSS и начать наконец учить какой-нибудь язык программирования, возможно PHP или Python, пушто хотелось бы идти в направление к back-end'у. Можете что-нибудь посоветовать? А в идеале мне бы товарища, который хочет идти в этом направлении со мной. Вместе будет проще же.
296 1518161
>>18142

>Вместе будет проще же.


Не-бу-дет.
297 1518168
>>18161
Поцчему? Аргументируй. И как в таком случае облегчить обучение и не сдуться?
298 1518177
У этого треда есть чатик в телеграме?
299 1518181
>>18168

>Поцчему?


Чем тебе такой же вкатывальщик поможет? Всё скатится к обоюдным смехуёчкам и мемесам в телеграмме.
Осваивать всё равно каждому по одиночке придётся.
300 1518186
>>18181
Ну в идеале они могут друг с другом новой инфой делиться. Закрепляя эту инфу для себя, и подталкивая товарища к чему то новому. Но это, конечно же, в идеале.
301 1518191
>>18181
Справедливо, но на второй вопрос ответа не поступило.
>>18186
На это и рассчитывал.
302 1518193
>>18191

>на второй вопрос


>как в таком случае облегчить обучение и не сдуться?


Никак. Оставайтесь в жопе.
303 1518196
>>18193
И тебе не хворать.
Другого от двачей ожидать было наивно.
304 1518199
>>18191

>Справедливо, но на второй вопрос ответа не поступило


Бля, бро. Все зависит от того в какой ты ситуации находишься и кто по жизни. У тебя же своя голова на плечах есть? Есть. Вот она тебе и нужна чтобы самому себе на такие вопросы отвечать "а как мне будет лучше". Мы то откуда знаем
305 1518201
>>18186

>они могут друг с другом новой инфой делиться


То же самое можно делать и на тематических форумах, типа как в этом треде аноны отвечают.

>подталкивая товарища


Это психологическая уловка - дескать вдвоём уж мы-то не сдуемся никак. На самом деле вам обоим будет одинаково влом этим занимать.
Просто очередная попытка переложить ответственность на плечи товарища.
306 1518202
>>18196
Фразу загугли.
307 1518209
>>18199
По жизни я е6аный лентяй и хикка со стажем. Дважды пытался вкатываться в программирование, но не вышло. Сейчас я изменил пару переменных, но нет никаких гарантий, что снова не обосрусь. Поэтому я и надеюсь на какую-то поддержку, потому что сам не могу справиться.
308 1518210
>>18201
У меня друг в вузике на it инженера учится, у них с этим все ок. Есть компания ребят которая делает что по кайфу. Разные технологии щупают, пытаются что то делать. Конечно это все на уровне "и там и сям", но им вроде как интересно. Так что если люди реально хотят - то почему бы и нет, это будет точно в плюс.
309 1518212
>>18209
У меня самого только с третьего раза что-то получаться стало.
310 1518213
>>18210
Над ними в вузике стоят и теребят, а над вами никого не будет. Ну и они во вкус уже вошли, а тебе ещё только предстоит это всё.
311 1518220
>>18202
До сих пор факт нахождения в жопе не помогал.
312 1518221
>>18209
За какое время планируешь вкатиться, что с работой в твоем регионе. Мыслить нужно отсюда начинать. В ОП-посте есть нормальный гайд по вкату, когда сделаешь файло-обменник спокойно можешь искать галеру . Я, учась в вузе почти на 3 курсе, начал с него. Мне понравилось как он написан, ведь в вузе у меня учат полнейшией хуйне (аля ООП с первой ссылки в гугле на листочке). Вот, спустя 3 месяца в своей залупе нашел работу, осталось мелкие детали обсудить. Но я и до вуза уже в минимальное программирование умел. Только от тебя зависит сколько времени уйдет. Но желательно сильно не перенапрягаться ибо можно кукухой поехать.

>>18213
Нет, они по собственной инициативе этим занимаются. Тот же web им не говорят пилить. Но для себя, пощупать, они не против. Да и технологии разные обсуждают часто - вариться в тусовочке очень даже полезно. Если там не отбитые аутисты сидят, конечно
313 1518222
>>18221

>Но для себя, пощупать, они не против.


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

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


Я как-то ходил в конфочу местных и нихуя хорошего там не увидел. 95% пиздежа по левой теме и только 5% по делу.
Если в правилах конфы нет чётких требований общения, то всё скатится к мемам и смехуёчкам. По опыту уже знаю.
А все те, где указаны эти требования ничем не лучше этого треда\любого тематического форума.
314 1518223
>>18221

>В ОП-посте есть нормальный гайд по вкату, когда сделаешь файло-обменник спокойно можешь искать галеру


нипонел. Но спасибо.

>Но желательно сильно не перенапрягаться ибо можно кукухой поехать


Да, у меня с распределением ресурсов не очень ^^"
315 1518376
>>18142
tg - @still_make_it_work
Тоже вкатываюсь, так что вот.
316 1518430
>>18209
Мертворожденная идея потому что для эой цели

>>поэтому я и надеюсь на какую-то поддержку, потому что сам не могу справиться.



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

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

Увы, тебе придется в первую очередь самому привозмочь свои психологические проблемы
317 1518490
Антоши, а посоветуйте годный тест на знание пхп, хочется проверить свои знания.
318 1518505
Аноны помогите! Нужен шаблон маленького интернет-магазина с динамическим каталогом товаров и чтоб можно было прикрутить саму продажу и прием оплаты а можно и без этого. С меня куча нефти за помощь. Нужно в учебных целях.
319 1518528
>>18209

>По жизни я е6аный лентяй и хикка со стажем


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

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

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

>вордпресс


>говно говна


Как-то пробовал его. Темки васянские хорошо накатывать и удобно, но вот разработка на нём - пробитое днище. Архитектура отсутствует и вместо неё одни костыли. Весь вордпресс это один большой костыль над простецкой системой для блога. Уже тогда стало понятно, что такие вещи изучать не стоит - костыли индивидуальны для каждого проекта и в другом они не пригодятся.
А ведь там ещё и плагины накатывают, которые друг от друга зависят. Ояебу какой кошмар.
Как эта адская хуетень ещё не подохла я удивляюсь.
321 1518567
>>18540

> Как эта адская хуетень ещё не подохла я удивляюсь.


Есть целый класс говнокодеров, которые только на нём и работают. Своя экосистем получается. Одни хотят заплатить поменьше и получить побольше, а другие хотят говнокодить за гроши и не париться.
322 1518608
>>18567
Это еще и во всем мире, в Пиндосии и Германии каких-нибудь на пхп девелоперов и энтвиклеров как раз часто требуют вордпресс/друпал, прямо как у нас любят написать в требованиях жс жквери вьюжс вордпресс джумла модх пхп ларавел йии симфони опыт 5-10 лет 35к
323 1518612
>>18608

>друпал


Этот вроде на симфони сделан.
324 1518613
>>18608
Эй, ты забыл !C-Bitrix. Не быть тебе эйчаром.
325 1518614
>>18613
Да, вот ты правильно написал, херка напишет латиницей, еще лучше "Bitrix Framework, уверенное знание Bitrix API".
Вот кстати одна из типичных пиндосских индусовакансий с вполне такой зп даже
https://job-openings.monster.com/magento-developer-php-milwaukee-wi-us-tekpartners-solutions-llc/213582793
326 1518617
>>18614

>Bitrix Framework


Вот это своими глазами как-то видел.
327 1518621
>>18617
Да я видел УВЕРЕННОЕ ЗНАНИЕ JSON
328 1518625
>>18621
Пфф, уверенное знание SOAP.
329 1518631
>>18608
Друпал тащемта сделан хотя бы наиболее качественно, да и на симфони компоненты переехал. Хотя вся ирония в том, что именно его хорошее качество и прочая архитектура ему и мешает, cms-говношлёпы ссутся использовать что-то сложнее скриптиков в стиле php4, а хорошие разработчики в любом случае не хотят на cms что-то делать.
330 1518636
>>18631
А на пыхе бывают полноценные пхп 7 проекты, шоб со стрикт тайпс и функциональщиной?
331 1518645
Сап дващь. Делал кто-то на прод счетчик просмотров страницы? Я вот думаю как реализовать лучше и пока что есть несколько вариантов но не знаю какой лучше.
Для защиты от накрутки думал идентифицировать запрос по фингерпринту и не давать чаще чем в 5 минут например обновлять счетчик.
Сам счетчик можно много как реализовать, начиная от колонки в таблице view_counter и заканчивая отдельной таблой PageViews со всей инфой и считать из неё. Была еще упоротая мысль кроном каждые 30 мин из гугл аналитики выгружать просмотры по страницам и обновлять в бд данные.
332 1518651
>>18636

>полноценные пхп 7 проекты


Что ты имеешь ввиду?
333 1518674
>>18631

>хорошие разработчики в любом случае не хотят на cms что-то делать


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

>>18674
В этом и смысл cms'ок, что ты поставил, накликал что-то и оно работает - и не надо платить разработчикам, архитекторам и так далее. Для малого и среднего безнеса - то, что нужно.
335 1518701
>>18645
А для какой цели?
Можешь логи нгинкса парсить демоном на фоне.
Можешь свой счетчик в sql поставить, но если приложение окажется нагруженным, то ето узким местом может оказаться из-за локов при записи.
Можно в очередь кидать записи и оттуда уже разгребать демоном.
336 1518733
Как в пыхе дергать данные с радиобаттонов, то есть какой именно нажат? На каждом радио есть атрибут с уникальным value, это как я понял будет получать пыха.
337 1518745
>>18733
Сам браузер решает какой именно нажат (группировка по атрибуту name) и в запросе устанавливает соответстdующие name=value
338 1518747
>>18745
Как? name же одинаковые у группы, а потом в name присвоится value нажатой? Это бред.
339 1518748
>>18693

>накликал что-то


>и не надо платить разработчикам, архитекторам и так далее


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

>Для малого и среднего безнеса


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

Когда пользователь кликает по какому-то из радиобаттонов с одинаковым name, браузер следит за тем, чтобы выделение с остальных снялось. Когда пользователь отправляет форму, в форме по ключу name будет стоять значение кликнутого радиобаттона.
341 1518755
>>18752
Понял, спасибо, только value 1 2 3
342 1518758
>>18748
Да нифига, какой-нибудь простенький сайт с контентом, интернет-магазин, формочку там для обратной связи, туда-сюда.. Там нагрузок не было и не будет, удобство может быть и не очень удобным и всё такое. Какой-нибудь, к примеру, сайт для заказа цветочных букетов. Маленькая витрина с фотками и наборными компонентами, форма заказа и админка для выкладывания контента и управления заказами/статусами заказов.
343 1518760
>>18747
>>18752
value в примере не поменял
Ну то есть ты в php просто получаешь $_GET['a'] и тебе выводится тот, который чекнул пользовватель.
344 1518763
>>18760
А у меня форма с методом POST
$_POST['a']
345 1518820
>>17387
Пиздец манямир, из разряда пэхэпэ мертвый язык, скоро всех програмистов заменят нейросети !!!!!!!!!!!!!!1
346 1518832
Подскажите что за хуйня: Есть переменная $conn в файле connection.php в ней хранится подключение к бд. Есть два стула файла: index.php - в нем вся мишура, и main.php - там у меня функции. Так вот, эта переменная видится в index.php, но не видится в main.php. Чому так? Причем оба подключаю методом include, и все они находятся в одной папке.
347 1518858
Сап аноны, у меня вопрос. Знач на винде пользовался homestead, но шинда изрядно надоела, да и для моего некропк запускать виртуалку на вин 10, это гиблое дело. Поэтому вопрос, есть ли какие то альтернативы для линукс?Не очень бы хотелось поднимать виртуалку, может есть какие то альтернативы?
348 1518872
>>18832
Нада код смотреть - так ничего не понятно.
349 1518878
>>18858

>Laravel Homestead


>Included Software Ubuntu 18.04



Ты просто хомячок. Какая тебе альтернатива. Свой хуюмстед ты же не осилишь запускать из чрута
350 1518947
>>18872
Да я уже разобрался, пхп не видит инклюд в функции пиздос как удобно
351 1518951
>>18947

>пхп не видит инклюд в функции


О - область видимости. Надо знать.
hex 352 1519073
Бля ребят я уже просто заебался, не могу ввести в бд текущую дату! Мне надо именно в datetime(не timestamp) а он тупо нули записывает, как я только не пытался. Проштудировал кучу сайтов\статей. Поменял все, и тег в input , и форматы, и прогонял через функции превращения в стринг и тп. Не знаю что делать, надо тупо ввести эту дату в бд!
hex 353 1519075
>>19073
Ебать походу сделал..

убрал mysqli_real_escape_string
hex 354 1519077
А до этого id на name поменя(да был косяк) но когда исправил, все равно не работало. Еще mysqli_real_escape_string снял. Тогда сработало. Пиздец
355 1519086
>>19073

>Мне надо именно в datetime(не timestamp)


А что так? Таймштамп потом в датетайм перегнать - как 2 пальца, насколько я помню.
356 1519088
>>19086
Просто такое задание было в инете ,хы
357 1519139
>>19073
Напишу снова: всё что может делать сама СУБД, пусть делает сама БД, например высчитывает timestapm через NOW().
sage 358 1519264
>>19073
Кстати совет. Юзай сокращённый открывающий тэг только для краткого эко. <?= "Привет"?> В остальных случаях всегда <?php
Стандарты все дела
359 1519271
>>19264
OK, спасибо
360 1519305
>>11146 (OP)
Ребят, пролистал/pr как я понял вы тут самые добрые (аниме), поэтому обращусь с вопросом к вам - я работаю юристом, но мне это надоело, постоянный негатив от клиентов, все они проблемные, душные и я думаю вкатится в програмириование/кодинг. С перспективами потом перебраться в Москву, начать зарабатывать в идеале 100к примерно.

Какой язык учить, с чего начать?
361 1519317
>>19305

>Какой язык учить, с чего начать?


Смотря к чему у тебя душа лежит. Если пофиг и просто ищешь место поспокойнее и потеплее, то учи JS, на фронтендеров нынче спрос большой.
362 1519318
>>19305
php норм, но готовься, что для нахождения любой нормальной работы нужно въебать кучу времени и сил в обучение. Минимум 2-3 года только для того, чтобы перестроилось мышление и можно было хоть как-то называться разработчиком, а не кодомакакой.
И это не снобизм, просто область реально огромная и нужно, знать, понимать, как устроены и уметь использовать туеву хучу инструментов, протоколов, приёмов и всё такое. Ну и зависит от того, что считать разработчиком, cms-формошлёпы же тоже что-то там делают.
363 1519319
>>19318

> область реально огромная


Не php в смысле, а "разработка по".
364 1519320
>>19305
Хм. Ну для начала стоит отметить, что программирование делится на кучу сфер, от науки, то секьюрити.
Из самых популярных: Web, мобильная разработка( деление на андроид\айос) , десктоп (опять же apple\windows). Игры опять же разные платформы.. консоли.
Для начала выбери направление. В ом же вебе есть разные стаки.. например php/js/html (бэк) + frameworks. Или Js/ Css/ html + frm(фронт). Или Python/js... (бэк)
А когда выберешь. Можно выбрать язык..
Если просто хочешь денег то выбери самое востребованное - web or mobile.. А там тоже есть свои самые полпулярные языки+фреймы
365 1519442
>>19317
>>19318
>>19320
Спасибо большое, часть из этого не понятно, в плане того что выбрать, но web звучит как то проще и понятнее.
366 1519469
>>19442

> web звучит как то проще и понятнее.


В целом , так оно и есть. Но щас опять же наплодили кучу технологий.. поэтому учить надо пару языков и сверху пару фреймворков. К примеру, стажор бэкендер должен знать на базовом уровне: Php/Js/Html/ ООП ,MVC, Larqvel/Yii.
367 1519558
>>19318
Я бы врачем стал, но я уже старый и ойти. Работал в больнице, в стационаре каждый второй на лехухе или бнв катает. Им люди сами за профессионализм несут.
И статус - если ты хороший уролог/гинеколог ты в друзьях у топ своего мухосранска будешь находиться всегда.
Конечно нужно не всратым терапевтом калымить, а идти на оперирующие специальности. Но там и ответственность, мама не горюй. И почет, и пиздец уважение. Представь как горд врач, когда с того света вытаскивает кого то?

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

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


Двигаем человечество в будущее, пока очередной гордый врач стотысячного алкаша с того света тащит.
А как же.
369 1519584
>>19558
Но вообще тебе с таким подходом нехуй в ИТ делать.
370 1519589
>>19584
Двачую. Заебали рефлексирующие нормисы.
371 1519597
>>19589
Толсто.

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

<?php

for($x = 1, $b = 1; $x < 10, $b < 10; $x++, $b++) {
$sum = ($x $b);
echo "$x
$b = $sum\n";
}
373 1519678
374 1519679
>>19676

>$sum


Почему переменная называется $sum, а на самом деле это продукт умножения?
TAXI-кун !!wFUNz5.GRA 375 1519681
>>19679
Тут ты прав. Прост увидел из прошлых примеров и не стал заморачииваться как на инглише это записать.
376 1519683
>>18947

> пхп не видит инклюд в функции пиздос как удобно


Используй require и require_once и будет тебе счастье.
377 1519695
Ребят, а кто-нибудь знает как сделать запрос с помошью js и php в бд, с помошью ajax?
Т.е вот кнопкочка с статьекй, жмешь - а статья удаляется из бд без перезагрузки стр.
Можно ссылочку или что гуглить надо?
Буду очень благодарен
378 1519699
>>19695
Отправляешь запрос на сервер с помощью ajax -> сервер удаляет нужную статью -> данные на странице обновляются. Или что тебя интересует?
379 1519711
>>19699
Да но как это делать, реализация этого интересует, как писать такие запросы. Задействован ли php? Или мой код может напрямую менять инфу в моей базе данных на сервере? Тогда разве это безопасно? Так каждый сможет отправить запросы ,не?
380 1519717
>>19695
Если остановится на rest то ты мог бы
1. Сделать get запрос с номером статьи и получить обновленный список статей в теле ответа и c помощью js обновить html (так делают только самые нубы)
2 Сделать тоже самое delete запросом (rfc ничего не сказано о теле ответа на delete запрос. Но это считается отклонением от стандартного поведения)
3 Сделать такой же delete запрос но получить пустой ответ. Сделать нововый get ajax запрос для того чтобы получить
обновленный список статей
4 После delete запроса с пустым ответом просто js ом удалить статью из html
381 1519719
>>19711
Я не совсем опытный, но что тут не безопасного? Отправляется post/delete запрос на сервер, на сервере с помощью php этот запрос обрабатывается и выполняется нужное действие. Подозреваю что для удаления статьи нужно обладать какими то правами, вот это и проверяется с помощью сервера. Так же из минимальной защиты пользователя можешь почитать про crsf токен.
382 1519726
>>19719
В браузере у пользователя можно статью с нужным id просто в JS-е убрать, либо как написали выше на запрос серверу вернуть обновленый список статей, но мне этот вариант как то не очень нравится
383 1519728
>>19719
>>19717

> post/delete запрос на сервер, на сервере с помощью php


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

>>19695

>что гуглить надо?


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

>статья удаляется из бд без перезагрузки стр


В двух словах: js посылает данные с удаляемой статьёй на определённый эндпоинт API сервера, который в контроллере уже работает с базой данных.
Потом этот же js удаляет ноду со статьёй из DOM-дерева документа. Получается без перезагрузки.
386 1519743
>>19728
Нет, сначала гуглишь и читаешь про MVC, потом про HTTP запросы.

>а как гуглить такое? Просто у меня домашка на завтра я все сделал кроме такого запроса.


Ну мы же не знаем как ты свое приложение скостылил, какие свойства есть у твоей статьи, какой ключ. Самое банальное делать ссылку по типу ursite.com/threads/{id}/delete
И по id в БД просто удалять
387 1519754
Маленький шажок для человечества, но большой шаг начинающей крудомакаки
388 1519765
>>19743
>>19738
Сайт без MVC
И мне надо без jquery
просто отправить "DELETE FROM `bd1` where id =1" а потом Dom обновить (это я смогу)
389 1519809
>>19699

>Отправляешь запрос на сервер с помощью ajax -> сервер удаляет нужную статью -> данные на странице обновляются


А как сервер поймет, что это не хаккерский скрипт? Прежде чем выполнить
390 1519812
>>19809
Так же как и при обычном не ajax запросе, при помощи номера сессии, который посылается в виде кукиса даже при ajax запросов.

Правда это нужно еще программировать на php.
391 1519814
>>19812
Я надеюсь, что меня поняли?
392 1519817
>>19812
>>19814
Да спасибо. А можно кусочек с маленьким кодом 1 запросика плиз.Я гуглю но нигде не нахожу рабочий кусок.
393 1519820
>>19817
Завтра напишу. Сейчас уже спать сильно охота.
394 1519821
>>19820
Спасибооу друщиже
397 1519936
Аноны, сейчас в учебных целях повторяю одну здоровенную форму одного крупного сайта.
В ней куча элементов которые появляются и скрываются в зависимости от выбранного поля в селект. Я когда JS изучал подобное делал.
В форме на том сайте для такого юзается jQuery вовсю.
Сейчас везде и всюду говорится что jQuery не торт и его юзать нельзя.
Но допустим закажут мне что то подобное - как реализовывать такую форму? Не на рекат\вью это писать?

Или вообще нативно херачить?
398 1519937
>>19936
Или таки jQuery, как и раньше?
399 1519941
>>19936
Сайт древний, скорее всего. Легаси - все дела. Если заказчику нет дела до технологий - бери фреймворк, тебе же легче будет (если умеешь в него). Если заказчику нужно что-то допилить - используй то, что уже есть.
400 1519953
>>19936

>jQuery не торт и его юзать нельзя


Так ты спрашивай - почему нельзя его юзать?
Очень часто такое слышно от хайповых js-петухов, которые кроме своего фреймворка ничего не знают.
401 1519954
>>19953

>>jQuery


Ему хрен знает сколько лет уже и до сих пор на CDN торчит.
Значит актуально.
402 1519974
>>19953
Уже тысячу раз вам блять объясняли, что сам по себе он норм для того, чтобы повесить пару обработчиков, сделать анимашку или отправить запрос, но когда появляется что-то посложнее типа динамической формы с валидациями, какой-никакой роутинг или ещё чего (что ВНЕЗАПНО делает просто сраный скриптик на фронте отдельным маленьким приложением, работающим в клиентском браузере), то лапша на jquery стремительно превращается в неподдерживаемый кусок говна, без архитектуры, расширяемости, зато с кучей дырявой магии.
403 1520016
>>19974

>какой-никакой роутинг


На фронтенде?
404 1520023
У меня не выходит разобраться с правами на каталоги для 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:", что бы это ни значило.
405 1520031
>>20023

>что бы это ни значило.


Вернее, что он написал, я понимаю, но что это за команды - нет. find какой-то - это же просто команда поиска, что она может сделать?
1.jpg61 Кб, 550x890
406 1520043
Как реверснуть оператор сравнения с null - "??"

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

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

То есть, иногда надо что-то сделать с переменной, но только если она не null. А если null, так пусть просто будет null.
407 1520049
>>20016
Здрасте. Добро пожаловать в мир react и прочих.

>>19974
Да, мне именно это требуется. Из фронта я умею нативный JS и react уровня to-do-list. Жиквери никогда не юзал.
Достаточно подходит для моей цели.
408 1520061
>>20023
Попробовал по 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-кун !!wFUNz5.GRA 409 1520088
С задачкой про айфон чем можно пользоваться? Только теми материалами, которые уже были в первых уроках?
410 1520096
>>20049

> Жиквери никогда не юзал.


Да это же стейтлесс-либа.
Там 10 методов, которые требуются для 99% задач и все они тривиальные и понимаются интуитивно, типа "ты ей передаёшь dom-элемент (или путь до него) и коллбек, она вызывает коллбек при определённом событии".
Короче, поиграешься полчаса и можешь считать себя знатоком и обновлять резюме, лол.
411 1520120
>>20049

>react


Так я и думал.
image.png92 Кб, 480x360
412 1520123
>>20049
Как ты роутинг на бутстрапе делать собрался?
image.png92 Кб, 480x360
413 1520125
>>20049>>20123

>бутстрапе


жКуэри вернее.
414 1520132
>>20043
может так?

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

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

только вкатываюсь
415 1520144
>>20043
Равно: ==
Очень прям пиздец равно аж по типу: ===
Не равно: !==
https://www.php.net/manual/ru/language.operators.comparison.php
416 1520156
>>20123
Ето ти норкоман. Я про роутинг и не спрашивал
417 1520254
>>20156

>но когда появляется что-то посложнее типа динамической формы с валидациями, какой-никакой роутинг


А это что?
Кажись ты просто не понимаешь разницу между фронтом и бэком.
418 1520345
>>20254

> но когда появляется что-то посложнее типа динамической формы с валидациями, какой-никакой роутинг


Это писал я, другие посты - кто-то ещё.
Про роутинг я сказал потому что потом окажется, что форма должна вести себя по-разному на разных страницах, быть универсально-гибко-настраиваемой и всё такое. Там туева хуча вариантов и роутинг - только один из примеров того, что делает jquery-поделки неудобными для развития.
419 1520384
>>20254
Хуясе предъявы, мое увожение, лол
420 1520431
>>20345

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


А если без фантазий?

>роутинг - только один из примеров того


Роутинг форм, ты имеешь ввиду?
421 1520433
>>20384
Просто не надо лезть в чужую ветку со своим реактом - не о том речь.
422 1520476
в чем разница между симфони и ларавелом?
423 1520477
По мере изучения всяких либ во время написания сайтов всё меньше приходится писать на ПХП и всё больше ебаться с вёрсткой и фронтом.
У всех так?
424 1520478
>>20477
потому что бэк в массе однообразен и отточен.а фронт,это то что человек видит-дизайн и логика.тут фантазии больше.ну перчинка-жс ублюдский ЯП
425 1520480
>>20478
Но я хотел на ПХП писать, а не жс.
Помню как свой парсер первый писал весь вечер - стена кода, сток под 200-250. А счас - накатил модную либу, скормил ей xpath, привёл в нужный формат другой либой, и всё - жрать подано. Дай бох 50 строк будет всё это дело.
426 1520489
>>20476
И ларавел и симфони являются фреймворками.
Однако архитектура симфони построена так, что большая его часть ето независимые компоненты, которые не пересекаются с другими компонентами. Из-за этого компоненты симфони стали использоваться в других фреймворках, в том числе в ларавеле.
В ларавеле куда меньше надо собирать руками, то есть из коробки что-то запустить, чтобы оно работало на ларавеле будет быстрее. В основном потому, что за тебя уже все решили. Например, взгляни на документацию роутинга в симфони и ларавеле:
https://symfony.com/doc/current/routing.html
https://laravel.com/docs/6.x/routing

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

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

Я думаю анон меня поправит и дополнит чуть что.
427 1520491
>>20477
Если делать сайты-визитки и онлайн-магазины да. Надо идти в продуктовые компании, там куда лучше с этим.
Очень много интересных задач было, нагрузки, масштабируемость, написание каких-то допинструментов. Как только уровень джуна пройдешь беги от сайтошлепов в продуктовое что-то, ну или куда-то, где проекты по 4-6 месяцев идут.
428 1520495
>>20477
На моем прошлом месте работы, когда начало появляться слишком много задач про сделай кнопку красную, чтобы жало и отправлялись данные и заебись все, то отдельно наняли фронтендера для этого. Но у тебя второго фулстака наймут.
429 1520521
Вопрос к ОПу. Какой потолок развития у php разраба? У меня есть планы переката в Европку - для этого пыха подойдет?
430 1520560
>>20489
Я бы дополнил что на ларавел не то чтобы сильно проще, а просто намного быстрее что-то написать чем на симфони, т.к. существует много шорткатов в виде глобальных функций и тебе не нужно долго думать о структуре классов и т.д. потому что в любой момент можно вызвать request() и оп, у тебя объект запроса например. А еще он всё таки немного подвязан на свой же орм Eloquent, это и хорошо и плохо, и если в теории можно свапнуть на доктрину или что-то еще, то на практике разные ларавел фичи начинают не работать потому что свойства приватные, или у этой фичи внутри проверка на инстанс или еще что, и приходится опять писать тот самый бойлерплейт. Например ларавель джоб класс, который через трейт умеет трансформировать модель в айдишник перед сериализацией чтобы память не охуела от активрекорда, а когда эта джоба выходит из очереди то по айдишнику заново гидрирует в свойство эту модель через рефлексию. Думаю что такой трейт можно легко и для доктрины написать, но сам факт.
Я бы советовал всё таки сразу на симфони + доктрина писать, мне кажется что там больше классического ооп, бойлерплейта, конфигов и вот этого всего, после такого на ту же ларку перекатиться будет в разы легче чем наоборот, когда ты не понимаешь зачем тут вводить тип если можно просто строкой что-то передать и т.д.
431 1520562
Реально ли решить задачку с айфоном новичку?
Как дальше заставить прогу вычесть столько, сколько нужно, что бы в минус не уйти.
432 1520566
>>20562

>Реально ли решить задачку с айфоном новичку?


Она для новичка и есть.

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


Но сперва нужно синтаксис узнать - какие операторы есть и что делают. Нет смысла задавать такие вопросы.
433 1520576
У меня есть один очень важный вопрос. Можно ли сделать так, чтобы скрипт отдал клиенту ответ, но при этом сам продолжил свою работу на ещё некоторое время.

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

Ну так вот можно ли решить эту проблему только средствами пхп, без использования кронджоб?
sage 434 1520590
>>20576
active job
435 1520595
>>20576
нет. только очереди
436 1520633
>>20431

>>Роутинг форм, ты имеешь ввиду?


Я думаю он имеет ввиду роутинг SPA фронтред приложения, реализованного к примеру на react.
Если ты никогда не писал на react - то попробуй.

>>А если без фантазий?


Нет никаких у него фантазий.
react реализует компонентный подход, когда ты можешь собирать элемент из других элементов, и все это может динамически изменяться. И один и тот же компонент может себя по разному вести на разных страницах.
437 1520637
>>20254
Похоже ты просто не перерос еще классическое MVC на бэкенде со статикой отдающейся клиенту.
Внезапно MVC и тыщи его вариантов отлично живут на фроте. По необходимости получая от сервера только json с данными без какой либо разметки вообще.
438 1520642
>>20633

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


Зачем? Это хуевый пример, когда пишутся сложные компоненты на все случаи жизни. SPA - это когда на одной станице рендерятся разные компонеты, в зависимости от условий. Например в зависимости от урл, когда для разных урл бекендом отдается одна страница. Это кстати наиболее правильное использование SPA, чем когда для урл используется хеш и зачастую не работают кнопки назад/вперед
439 1520658
>>20642
Чувак, наш с тобой диалог - абсолютно бесцельное "просто попиздеть". Словил такое густое ощущение.
440 1520697
Ребятухи, начал изучать ооп и возник такой вот вопрос. Это нормальная практика что если удалить в классе question все public поля, то программа будет работать как ни в чем не бывало? И почему так вообще происходит ведь раз нет поля в классе, то кажется заполнить эти поля никак нельзя при создании объектов. И раз все и так работает зачем что то объявлять в классе questoins? только для наглядности чтоб ничего не забыть?
https://3v4l.org/dWVtb
[
441 1520711
>>20697

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


Поля могут задаваться динамически через магический метод __set()
442 1520712
>>20576
Да, гугли session_write_close
443 1520718
>>20712
Пардон, не проснулся, хуйню спизданул, fastcgi_finish_request нужен
444 1520797
Поясните за симфони. Давно разрабатываю на пыхе, но чаще всего встречаюсь с ларавелом, отдельно используемыми компонентами симфони и всякими сраными легаси на чём угодно (вот такой я неудачник).
Хочу разобраться в том, как правильно готовить симфони, какая там внутри архитектура, какие бест-практики, как правильно юзать доктрину и всё такое.
Чего можно почитать, какие хорошо сделанные примеры приложений посмотреть и всё такое?
Пока нагуглил бест практики на сайте самого симфони и пример оттуда же, но может есть ещё чего дельного.
Ну и чего вообще нужно поизучать в этом котексте (из разряда, если бы я знал, чего спросить - спросил бы)?
445 1520845
>>20633

>роутинг SPA фронтред приложения


Речь о jQuery. Ты нормалный вообще - на нём SPA делать?
Был вопрос о нём - вы в ответ бред нести стали. Один с реактом успокоиться не может, второй с роутингом форм носится.
Зачем пхпшнику сдалось ваше SPA в норме, если ему интерфейс накидать? Именно поэтому ваше мнение никому не интерсно - вы даже в суть вопроса неспособны вникнуть.
446 1520852
>>20845
ко-ко-кой ты зодиристый, ужс.

Похоже все друг друга не правильно поняли, забей.
447 1520865
>>20845
Ты почему-то отказывешься воспринимать тот самый первый пост, что тебе анон написал, чем только выставляешь себя долбоёбом.
Тебе сразу сказали, что нет проблемы взять jquery чтобы навешать пару триггеров. Но в любом сложном случае типа роутинга, зависимости элементов одного от другого сразу лучше брать vue или react.
448 1520869
>>20865
Тебя головой в детстве не роняли? Ты третий раз уже пишешь про роутинг на жс, в пхп треде.
449 1520872
>>20865
Контекст использования jQuery способен понять исходя из темы треда?
450 1520939
Сап аноны. Как лучше реализовать теги? Вот есть у меня в бд запись типа: ид, наименование, хуй, пизда, список тегов. Также есть отдельная таблица с этими тега вида: ид, название тега. Можно ли связать столбец из первой таблицы со второй, и чтобы первый столбец был списком со ссылками на второй? Или лучше не ебаться а сделать все обычным текстом, и делать запрос sql "...LIKE %tagname%"? Знаю что вопрос больше по sql, но вы же тут няши.
451 1520978
>>20939
Гугли "многие ко многим sql"
452 1521013
>>20978
many to many может? А то он найдет говносайты на русском.
453 1521016
>>21013
Я специально перевел. А то он потом такой: "А на русском есть че почитать?" А я такой: "Иди учи ингришь, Маня". И понеслась на 20 постов. Ну как обычно в /pr/ происходит.
454 1521022
А зачем в пыхе сделали $ перед переменными? Я в других языках такого не встречал.
455 1521027
>>21022
Наследие perl
456 1521031
>>21027
Ууу... перл сдохла((
457 1521060
>>21031
Да какая разница? Эти доллары абсолютно не мешают (даже на самом деле чуть удобнее читать код, глазу есть, за что зацепиться).
458 1521064
>>21060

>глазу есть, за что зацепиться


Есть немного.
459 1521076
>>21060
В глазах рябит.
460 1521092
>>21060
хоть где-то в пхп есть доллары
(мимоjavaцарь)
461 1521102
>>21022
Зато объявлять переменные не нужно. Лично меня больше огорчают стрелочки в объекте.
462 1521103
>>21092
Лол, проиграл
463 1521105
>>21102
Только поначалу непривычно, а потом вполне норм даже.
Да и не суть.
NoLaifer 464 1521108
Можно ли сохранить пробелы в получившимся массиве при использовании explode?
$word = explode('/(?=\s)/u', $word); просто не работает
$word = explode(" ", $word); убивает пробелы
NoLaifer 465 1521110
>>21108
решил проблему таким способом

$words = implode(" ",$word);
NoLaifer 466 1521178
468 1521283
>>21218
нихуясе
New videoMedium.mp48,5 Мб, mp4,
1280x720, 3:46
469 1521290
470 1521298
>>21022

>А зачем в пыхе сделали $ перед переменными?



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

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

function bar() {
echo ' world';
}
$func_name = 'bar';
$func_name(); //напечатает ' world';
471 1521300
>>21298
те $$ это что-то типа кастрированного евала?
472 1521321
>>21300
Я думаю, что $$ - реализованы совсем по-другому чем eval. Впрочем это не важно, как они реализованы, главное что они работают и иногда бывают очень полезны.
473 1521323
>>21321
Ни одного нормального использования придумать не могу и не видел, за всё время работы.
Лучший код - это явный код, когда точно понятно, что вызывается, когда, какого типа и так далее. Уверен, что со всеми трендами к типизации пыхи, $$ рано или поздно задепрекейтят.
474 1521355
>>21323
Насчёт переменных ты прав, но не на счёт функций. Запуск функций через $func_name() просто позарез необходимо в php и даже используется в стандартной библиотеке:
Вот пример передачи названия колбэк функции в качестве аргумента:
set_error_handler("handleError");
475 1521366
>>20797
Двачую вопрос
476 1521409
477 1521410
>>21323

>Ни одного нормального использования придумать не могу и не видел


Тоже хотел написать. Но передумал.

>>21355

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


>set_error_handler("handleError");


Анонимные функции, не?
360-477 478 1521475
>>21022

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

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

>>21102

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

>>21300

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

>>20797

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

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

>>21178

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



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

> $words = " ";


> $words .= $word;


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

>>21108

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

>>20939

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

Также, тебе в помощь урок про нормальные формы БД: https://github.com/codedokode/pasta/blob/master/db/normalization.md
480 1521479
>>19936

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

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

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



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

>>19974

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

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

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

А чтобы усложнять код внедрением SPA должна быть веская причина, а не "на хабре много статей про реакт".
481 1521480
>>20576

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

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

>>20697

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

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

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



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

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

>>20562

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

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

>>20521

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

>>20043

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

>>20096

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

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

>>20023

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

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

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

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

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

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



Она находит файлы и может выполнить определенную команду для каждого найденного. Вот сайт, который пытается объяснить разные опции в команде: https://explainshell.com/explain?cmd=find+/var/www/html+-type+f+-exec+chmod+644+{}+\; (исполнительные идиоты в моем провайдере зачем-то его блокируют).

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

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

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



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

>>19817

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

И правильно пишут, нужна защита от уязвимости CSRF.
485 1521484
>>19676

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

> $x < 10, $b < 10



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

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

for (действия до начала цикла; условие продолжения; действия после каждого шага) { ... }
for (тут можно запятую; тут не имеет смысла ; тут можно запятую) { ... }
486 1521501
>>21482

>Ты бы ссылку приложил на инструкцию


Уже по нескольким делал. Вот последняя: https://www.digitalocean.com/community/tutorials/apache-ubuntu-18-04-ru
А тут написал, что именно делал и что получил https://2ch.hk/s/res/2685013.html#2686503 (М)

Впервые настраиваю веб сервер вообще и апач в частности. Очень... непривычно.
487 1521529
Всем привет, создал группу для вкатывающихся в пхп, я сам сейчас на этапе создания списка студентов, более опытные антоны тоже приветствуются.
https://t точка me/anonaprphp
488 1521570
>>21529
Этих групп как говна за баней.
489 1521571
Хочу вкатиться в вордпресс и получать миллионы долларов с фриланса, насколько это сложно и скок времени займет примерно, учитывая что знаю нормально питон/джангу и похапе.
490 1521908
>>20132
Надо в одну строку
491 1521917
>>21481

>и не усложняй код.


Ясно, вы нихуя не понели.
Кучи скобочек - вот что усложняет код.
Сделать что-то с переменной, если она не null - это настолько частая операция, что для нее очень не помешает однострочная языковая конструкция.
492 1521980
>>21917

>Кучи скобочек - вот что усложняет код.


С каких это пор группировка усложняет код?

>это настолько частая операция


По твоему коду не скажешь, что ты способен оценить насколько это частая операция.
493 1522009
Есть ли у кого то пример кода задачи про компанию "Вектор"?
Не могу допереть что от чего наследовать: отдел от сотрудника, или сотрудника от отдела.
494 1522112
>>22009
А у них что-то общее есть, чтобы наследоваться?
495 1522159
>>22112
Вроде бы нет. Я просто вижу очевидную связь между тем, что бы наследовать Профессии от Сотрудника. Но как должны взаимодействовать класс Сотрудник и Департамент?
496 1522203
>>22159
Ты совершаешь классическую ошибку новичка, пытающегося в ООП - пытаешься применить его там, где оно не нужно.
По сути, забиваешь гвозди микроскопом.
Так вот, наследование - это инструмент, который предназначен для - сюрприз - наследования (расширения) свойств и поведения одного объекта другим. И реально применяется в довольно узком наборе случаев, кроме шуток. Например, когда у тебя есть класс "модель", которая работает с базой данных и в этом случае все "модели" типа юзера, отдела и так далее также являются моделями.

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

Не читал твою задачу, но вообще отдел и сотрудник - это два разных объекта твоей предментной области, а профессия является скорее всего свойством сотрудника.
То есть, у тебя есть классы условно сотрудник, отдел, профессия и у сотрудника должны быть поля "ид профессии", "ид отдела".
497 1522277
>>22203
Спасибо. Вроде бы понял. Завтра попробую
sage 498 1522311
>>22159
У тебя какая то каша получается.
Немного расширю то, что писал >>22203
У тебя есть класс сотрудник. Далее у тебя есть класс сторож, класс продавец и класс директор. Они являются сотрудниками. Т.е наследуют из базового класса какие то общие свойства и методы. Например у них у всех есть рабочий график, оклад, стаж, дата приема на работу и какой нибудь метод расчета коэффициента зп который высчитывается на основании стажа и времени работы в предприятии.
А вот что ты собрался наследовать сотруднику от отдела - для меня до сих пор загадка.
499 1522312
Упс сажа приклеилась
>>22311
500 1522329
>>22311

>Далее у тебя есть класс сторож, класс продавец и класс директор.


Я бы под это классы не делал - с точки зрения кода сторож, продавец и директор являются обычными сотрудниками. Достаточно им в свойство прописать ид должности.
501 1522336
Двач, помоги, пожалуйста
Я хочу подружить ckeditor с ларкой. Он генерирует выход в html тегах. Только выход через {{}} всё успешно экранирует и я вижу <b>хуй</b> текст. Если убрать проверку, то мне могут поднасрать, сохранив напрямую через post, например. Если вырезать все эти script, onclick и так далее, то можно так же с веселым гиканьем испортить текст юзверу. Как мне усесться сразу на два стула?
502 1522339
>>22329
двачую
композиция > наследования, школьники забывают вечно
503 1522341
>>22336
никак. найди какой-то редактор, который в bbcode или markdown будет текст размечать, и из него уже комментарии рендери
504 1522342
>>22336
либо, как очень хуевый вариант, можешь сделать свой валидатор, который будет только разрешенные теги без аттрибутов сохранять. но ето ебала и ты точно где-то проебешься, такие дела
505 1522346
>>22341

>никак


Ох. А как тогда справляются другие? Редактор популярный вроде

Я тут пока надумал оставить поддержку только всяких br и h2, куда точно не навесить скрипты, а все остальное спецсимволами замещать
506 1522349
>>22346

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


Отбой, я почему-то думал, что оно не поддерживает onclick

Мде
507 1522353
>>22346
Добавляют только в админку такие штуки вроде. Для пользователей давно не видел. Если я не прав, анон покажет.

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

Поэтому разметку рили лучше на маркдауне каком-то хранить, или посмотри другой, который тебя устраивать будет.
508 1522354
>>22353
>>22346
Ну, это не только мобильных приложений касается. Для магазинов, например, те же выгрузки товаров создавать если для маркетплейсов.
Мой опыт показывает, что если менеджерам/маркетологам дать возможность где-то большой красный текст въебать, они его обязательно въебут. А если не давать, то они обязательно попробуют. А ты потом ахуевать будешь, глядя в базу, сколько говна они наворотили.
Поетому если есть возможность, лучше сразу донести до бизнеса, что такие редакторы веселых табличек потом могут кучу проблем сделать и это какбы много часов работы.
509 1522357
>>22339
На самом деле там ид должности не надо - это доменный объект и там уже должно само имя должности содержаться.
Я сам тот ещё нуб.
sage 510 1522419
>>22329
>>22339
Meh. Это простой пример в вакууме придуманный за 2 минуты.
511 1522599
512 1522669
кто пишет на зенд?
513 1522716
>>22669
бекендеры заднеприводные?
514 1522736
>>22716
в чем рофл?
Тред утонул или удален.
Это копия, сохраненная 16 ноября 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски