PHP.SU

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

Страниц (183): [1] 2 3 4 5 6 7 8 9 ... » В конец

> Найдено сообщений: 2732
Bio man Отправлено: 23 Февраля, 2018 - 16:19:09 • Тема: Синтаксис • Форум: Вопросы новичков

Ответов: 2
Просмотров: 306
Плохо так делать. Есть 1 случай, где использование переменных переменных оправдано, и то можно обойтись без этого. Это удобно, например, для валидации DTO, где валидотор принимает массив атрибутов с правилами валидации и обращается к полям объекта так

Короче, не надо делать так, как ты задумал.
Bio man Отправлено: 23 Февраля, 2018 - 16:12:12 • Тема: аоп • Форум: Вопросы новичков

Ответов: 5
Просмотров: 358
andrewkard пишет:
без авторизации?
Аутентификация по сути есть частный случай авторизации.
Если нужен текущий пользователь, его сперва нужно аутентифицировать, а что делать дальше, добавлять авторизацию на "взятие книги" или нет, дело второе.
Bio man Отправлено: 21 Февраля, 2018 - 14:29:03 • Тема: аоп • Форум: Вопросы новичков

Ответов: 5
Просмотров: 358
andrewkard пишет:
нужна авторизация
аутентификация
Bio man Отправлено: 03 Февраля, 2018 - 16:50:54 • Тема: Поиск с фичами. • Форум: Объектно-ориентированное программирование

Ответов: 2
Просмотров: 683
Опоздал на пару месяцев, но все-же дам ссылочку, может кому-то будет интересно.
https://habrahabr[dot]ru/post/342434/
(Добавление)
Ну и гугл в помощь с запросом "нечеткий поиск"
Bio man Отправлено: 30 Сентября, 2017 - 16:26:13 • Тема: как Разбивать базу проекта на Domain и Application Logic • Форум: Объектно-ориентированное программирование

Ответов: 5
Просмотров: 1394
LIME пишет:
Bio man если бы ты че дельное сказал я бы молчал
здаров.
скажи че дельное, обсудим. я за дебаты. свою точку зрения не отстаиваю, потому готов услышать мысли оппозиции ))
и да, я за SOLID, за правильное наследование, хоть это к теме и не относится.
и я не понимаю, что тебя так смутило!
LIME пишет:
ВеликийПрограмист пока забей
полностью согласен, рано пока в эти дебри лезть.
Bio man Отправлено: 29 Сентября, 2017 - 15:00:33 • Тема: как Разбивать базу проекта на Domain и Application Logic • Форум: Объектно-ориентированное программирование

Ответов: 5
Просмотров: 1394
В рамках DDD, Application layer не знает деталей хранения данных.
Application layer это сервисы, которые производят какие-то действия над твоими объектоми модели.
Data Storage Layer - это репозитории, которые используются в сервисах.
Код, который ты привел, не вписывается никаким боком в DDD, это и не сервис, и не репозиторий. Больше похоже на контроллер, и то сложно это назвать контроллером.

И что такое generic wrapper?
Я похоже отстал от сегодняшних реалий ))

Разберись сперва с базовыми концепциями DDD, потом приходи.
(Добавление)
Почитай цикл статей по ссылке, которую я привел выше.
Там доходчиво описывается, что такое доменная модель, сервисы и репозитории.
Bio man Отправлено: 24 Сентября, 2017 - 20:05:11 • Тема: Сортировка ассоциативного массива • Форум: Вопросы новичков

Ответов: 8
Просмотров: 800
Откопал в лабараторках оптимизированный пузырьковый метод и переписал на PHP
PHP:
скопировать код в буфер обмена
  1.  
  2. $names = [
  3.     "Jhon" => [
  4.         "status" => "working",
  5.         "id" => "21",
  6.         "param" => "8",
  7.     ],
  8.     "Mike" => [
  9.         "status" => "working",
  10.         "id" => "10",
  11.         "param" => "4",
  12.     ],
  13.     "Nill" => [
  14.         "status" => "fired",
  15.         "id" => "4",
  16.         "param" => "3",
  17.     ],
  18.     "Tom" => [
  19.         "status" => "working",
  20.         "id" => "2",
  21.         "param" => "12",
  22.     ],
  23.     "Jake" => [
  24.         "status" => "fired",
  25.         "id" => "88",
  26.         "param" => "3",
  27.     ],
  28. ];
  29.  
  30. function mySort(array $array, string $direction = 'asc'): array
  31. {
  32.     $keys = array_keys($array);
  33.     $values = array_values($array);
  34.    
  35.     $length = count($array);
  36.     $tailIndex = $length - 2;
  37.    
  38.     for ($i = 0; $i < $length; $i++) {
  39.         $changed = false;
  40.        
  41.         for ($j = 0, $endIndex = $tailIndex; $j <= $endIndex; $j++) {
  42.             if (
  43.                 ($direction === 'asc' && $values[$j]['param'] > $values[$j + 1]['param']) ||
  44.                 ($direction === 'desc' && $values[$j]['param'] < $values[$j + 1]['param'])
  45.             ) {
  46.                 $temp = $values[$j];
  47.                 $values[$j] = $values[$j + 1];
  48.                 $values[$j + 1] = $temp;
  49.                
  50.                 $temp = $keys[$j];
  51.                 $keys[$j] = $keys[$j + 1];
  52.                 $keys[$j + 1] = $temp;
  53.                
  54.                 $changed = true;
  55.                 $tailIndex = $j;
  56.             }
  57.         }
  58.        
  59.         if (!$changed) {
  60.             break;
  61.         }
  62.     }
  63.    
  64.     return array_combine($keys, $values);
  65. }
  66.  
  67. var_dump(mySort($names));
  68.  


Если интересно, могу скинуть все сортировщики написанные на C++ (можно скомпилить в VS2015), там есть
Quick Sort, Selection Sort, и множество алгоритмов сортировки Шелла.
К тому-же пргграммка делает замеры эффективности по времени, и количество перестановок и сравнений.
Bio man Отправлено: 22 Сентября, 2017 - 13:51:36 • Тема: Подскажите, что здесь неправильно? • Форум: Вопросы новичков

Ответов: 1
Просмотров: 153
Bio man Отправлено: 22 Сентября, 2017 - 01:11:42 • Тема: Как правильно осуществить MVC архетиктуру? • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 1214
Мелкий пишет:
В тонкой модели вся логика приложения живёт в контроллере.
Стоило предупредить, что это плохая практика, а то топикстартер может принять это за постулат.

Я предпочитаю тонкие модели и тонкие контроллеры - никакой бизнес-логики в контроллере быть не должно, только логика обработки запроса.
Для бизнес-логики более подходящее место это сервисный слой (он-же Application layer). В таком случае, БЛ можно повторно использовать в любом месте.

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

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

Мелкий пишет:
Ещё холивар современного веба - а где вообще находятся контроллер и представление, на сервере или на клиенте?
Не понимаю, почему холивар? И там и там может быть.

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

Мелкий пишет:
При этом с точки зрения PHP весь view - одна стартовая страничка.
Не соглашусь. Вью это не только HTML.
Вью это слой трансформирующий данные модели в другой вид, например, JSON, XML или HTML.
Следуя из этого, практически каждое обращение к API приложения (к ендпойнтам, а не API классов) влечет за собой трансформацию данных в другое представление, так, что по сути вью это не только стартовая страничка.

Это мое мнение, и оно не претендует на истину в последней инстанции.
Bio man Отправлено: 22 Сентября, 2017 - 00:26:53 • Тема: new parent($data) • Форум: Объектно-ориентированное программирование

Ответов: 1
Просмотров: 533
Ого, впервые такое вижу. Теряюсь в догадках, для чего такое может понадобиться ))
Bio man Отправлено: 22 Сентября, 2017 - 00:23:27 • Тема: как Разбивать базу проекта на Domain и Application Logic • Форум: Объектно-ориентированное программирование

Ответов: 5
Просмотров: 1394
ВеликийПрограмист пишет:
это будет соответствовать принципам ООП?
Если под ООП подразумевается ООПрограммирование, то, чтобы это было ООП, нужно соблюсти всего 2 условия - инкапсуляция и абстракция.
Если ООПроектирование, то это очень философский вопрос, однозначного ответа нет.
Но такая многослойная архитектура довольно распространена.
ВеликийПрограмист пишет:
Как это реализовать, а именно разбить на Application и Domain слои есть какие-то примеры?
http://www[dot]elisdn[dot]ru/blog/104/do[dot][dot][dot]tities-modelling
ВеликийПрограмист пишет:
И зачем нужно Data Storage Layer понятно чтобы можно было легко поменять базу данных, но можно же сделать Wrapper зачем целый отдельный механизм заталкивания в базу какой в этом смысл?
По хорошему, твой код ничего не должен знать о том, как и где хранятся данные, и как их от туда доставать. Вся эта магия должна быть заключена в 1 месте - в репозиториях. Репозиторий это по сути фасад над хранилищем данных, который предоставляет простой и удобный интерфейс для доступа к данным.
Bio man Отправлено: 22 Сентября, 2017 - 00:09:19 • Тема: Что нужно знать об ООП чтобы получить работу програмиста ОО PHP. • Форум: Объектно-ориентированное программирование

Ответов: 5
Просмотров: 1164
Сперва неплохо бы выучить наизусть формулировки инкапсуляции, абстракции, наследования и полиморфизма, ну и попытаться их понять.

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

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

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

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

Можно расписовать бесконечно, давай лучше задавай вопросы.
Bio man Отправлено: 22 Мая, 2017 - 14:16:09 • Тема: русская морфология в FT search • Форум: Работа с СУБД

Ответов: 0
Просмотров: 863
поддерживает ли mysql 5.7 поиск с учетом русской морфологии?
в официальных источниках не нашел такой информации, но некоторые люди говорят, что поддерживает.

и какие есть альтернативы?
Bio man Отправлено: 14 Ноября, 2016 - 01:00:52 • Тема: посоветуйте lamp стек • Форум: Программное обеспечение

Ответов: 4
Просмотров: 2332
Ch_chov пишет:
А что конкретно я вам впарил?
какие то "принятые" вещи, которые, как по мне, тянутся еще со времен консольных интерфейсов.
Мой главный критерий это личное удобство, а не чье-то там, кто рекомендует.
Для серверов, да, лампы уже излишни, 1 раз поставил окружение, настроил.
Для дев-машин, мне удобней иметь стек, в котором можно парой кликов переключить окружение и работать дальше.
Ch_chov пишет:
Докер не нагружает.
спасибо, попробую
Bio man Отправлено: 13 Ноября, 2016 - 10:51:37 • Тема: посоветуйте lamp стек • Форум: Программное обеспечение

Ответов: 4
Просмотров: 2332
Ch_chov пишет:
В линуксе не принято пользоваться ламп сборками
Ха-ха
Только не надо свою религию впаривать. Принято, не принято, какая мне разница что там принято.
Если lamp мне удобней, то я использую его, несмотря на догмы где то там принятые.

Ch_chov пишет:
Для переключения между версиями есть Virtual Box, Vagrant, Docker.

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

Страниц (183): [1] 2 3 4 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB