PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 8
asker Отправлено: 15 Июня, 2021 - 14:52:03 • Тема: Cоответствуют ли данные настройки PSR-4? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 342
don.bidon пишет:
1) неважно, где находится index;
2) если интересно чьё-то мнение, то уровнем выше базовые сущности выношу, пример тут: https://github.com/donbidon/lib-process


а разве composer.lock должен быть закомичен в репозиторий ?
asker Отправлено: 14 Июня, 2021 - 15:56:07 • Тема: Cоответствуют ли данные настройки PSR-4? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 342
для своего мини проекта использую следующие настройки для автолодинга в компосере
PHP:
скопировать код в буфер обмена
  1. "autoload": {
  2.     "psr-4": {"App\\": "src/App"}
  3.   },
  4.  

в проекте например есть класс player он лежит в папке Player те полнуй путь к классу player:

его namespace:


интерфейс игрока и его namespace:

PHP:
скопировать код в буфер обмена
  1. src/App/Player/InterfacePlayer.php



а например к классу Game:

его namespace:


index.php находится в корне проекта те на одном уровне с src

соответствует ли такая структура проекта PSR-4 ? что то можно улучшить ?
asker Отправлено: 14 Июня, 2021 - 09:16:51 • Тема: Какие тесты можно написать на функцинал по созданию обьекта и вызов методов ? • Форум: Вопросы новичков

Ответов: 3
Просмотров: 373
Дописал пока код и по возможности прокомментируйте
asker Отправлено: 11 Июня, 2021 - 20:12:44 • Тема: Какие тесты можно написать на функцинал по созданию обьекта и вызов методов ? • Форум: Вопросы новичков

Ответов: 3
Просмотров: 373
есть вот такой условный код на php:

PHP:
скопировать код в буфер обмена
  1. $player1 = new Player('Vasa', new SimpleChoise());
  2. $player2 = new Player('Peta', new RandomChoise());
  3.  
  4. $game = new Game(new StoneScissorPaperGameStrategy(), $player1, $player2);
  5.  
  6. $result = [];
  7.  
  8. for ($i = 0; $i < 10; $i++) {
  9.     $winnerName = $game->run();
  10.     if(isset($result[$winnerName])) {
  11.         $result[$winnerName]++;
  12.     } else {
  13.         $result[$winnerName] = 1;
  14.     }
  15. }
  16.  
  17. foreach ($result as $player => $value)
  18. {
  19.     echo sprintf("\nPlayer %s wins %s times", $player, $value);
  20. }


сколько и какие тесты вы бы написали на такой код ? и хорошо ли он написан если можно оценить ?
я смог придумать только код на проверку типа возврата для $game->run() но как проверить в тестах что создался обьект типа плеер $player1 = new Player ? как в тестах проверить правильно ли обрабатываются данные в циклах ?
asker Отправлено: 20 Декабря, 2019 - 18:37:12 • Тема: Зачем нужны дата трансфер обекты и билдеры ? • Форум: Вопросы новичков

Ответов: 4
Просмотров: 1081
Привет

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

В проекте переиодически натыкаюсь на использование билдеров и DTO для меня это выглядит очень странно потомучто вся валидация происходит в FormRequest, потом как установка данных которые пришли из реквеста в DTO а из DTO мы добавляем данные в модель и потом сохраняем те DTO(некоторый data transfer object) какойто странный промежуточный шаг. С билдерами примерно тоже самое, если я правильно понял.

Зачем тогда вообще нужны билдеры и ДТО, это не нужный лишний шаг для меня если можно напрямую данные из реквеста сохранить в модель тк они уже прошли проверку в FormRequest ?
asker Отправлено: 17 Июня, 2018 - 20:16:36 • Тема: Не уверен что правильно написан запрос... • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 38
Привет

Вроде простая задача, но mysql знаю плохо поэтому прошу проверить.
БД это таблица авторов, ими написаных книг и отношение соответственно один к многим.
Задача - вытащить список книг, которые написаны 3-мя со-авторами. То есть получить отчет «книга — количество соавторов» и отфильтровать те, у которых со-авторов меньше 3х.

мой вариант такой, насколько правильно и можно ли улучшить ?

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE author (
  2. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. NAME VARCHAR(255) NOT NULL);
  4.  
  5. CREATE TABLE book (
  6. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  7. NAME VARCHAR(255) NOT NULL);
  8.  
  9. CREATE TABLE author_book (
  10. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  11. author_id INT NOT NULL,
  12. book_id INT NOT NULL);
  13.  
  14. SELECT * FROM book b INNER JOIN author_book ab ON b.id = ab.`book_id`
  15. INNER JOIN author a ON a.id = ab.`author_id`
  16. GROUP BY b.`name`
  17. HAVING COUNT(*) = 3;
asker Отправлено: 10 Декабря, 2012 - 20:30:11 • Тема: Удаляются куки после закрытия браузера • Форум: Вопросы новичков

Ответов: 0
Просмотров: 88
Не могу понять почему удаляются куки после закрытия браузера если у них срок жизни один день, кто может подсказать в чем причина ?

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. setCookie('exoclickPopunder', '1', TimeAfter(1,0,0), '/', 'mysite.com');
  4.  
  5. function setCookie(name, value, exp, pth, dmn, sec)
  6.             {
  7.                 document.cookie = name + '=' + escape(value)
  8.                         + ((exp)? '; expires=' + exp : '')
  9.                         + ((pth)? '; path='    + pth : '')
  10.                         + ((dmn)? '; domain='  + dmn : '')
  11.                         + ((sec)? '; secure'         : '');
  12.             }
  13.  
  14.             //get time in correct format to set cookie
  15.             function TimeAfter(d,h,m)
  16.             {
  17.                 // return time after d days h hours m minutes
  18.                 var now = new Date(),
  19.                 nowMS = now.getTime(), // time in milliseconds
  20.                 newMS = ((d*24 + h)*60 + m)*60*1000 + nowMS;
  21.                 now.setTime(newMS);    // new time in milliseconds
  22.                 return now.toGMTString();
  23.             }
asker Отправлено: 08 Декабря, 2012 - 12:53:02 • Тема: Подскажите скрипт подсчета статистики кликов по банерам • Форум: Вопросы новичков

Ответов: 0
Просмотров: 75
Подскажите бесплатный скрипт <b>на php</b> подсчета статистики кликов по банерам.
Кто чем пользуется для этих целей ? Кто знает хороший пример ?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB