PHP.SU

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

Страниц (141): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец

> Найдено сообщений: 2112
Stierus Отправлено: 28 Ноября, 2013 - 11:38:08 • Тема: Выбор планшета • Форум: Вопросы новичков

Ответов: 10
Просмотров: 314
Я на айпаде иногда пишу, но с планшета это реально неудобно. Если хочешь для работы - бери маленький ноут
Stierus Отправлено: 28 Ноября, 2013 - 11:35:14 • Тема: Может ли РНР выводить строки с конца файла? • Форум: Вопросы новичков

Ответов: 8
Просмотров: 546
dXdYdZ, надеюсь, ты пошутил
По теме http://forum.php.su/topic.php?fo...61499#1383661499
Stierus Отправлено: 27 Ноября, 2013 - 18:56:59 • Тема: немножко о логике • Форум: Объектно-ориентированное программирование

Ответов: 11
Просмотров: 2259
Цитата:
на счетчтки влияют действия пользователя а не логика построения страницы.
Есть счетчики, регистрирующие действия пользователя (клики, наведения и тд), есть счетчики, регистрирующие показы (товар показан в блоке рекомендуемых, товар показан в листинге, услуга предложена с товаром таким-то и тд), на них действия пользователя не влияют
Stierus Отправлено: 27 Ноября, 2013 - 17:37:14 • Тема: немножко о логике • Форум: Объектно-ориентированное программирование

Ответов: 11
Просмотров: 2259
Цитата:
бизнес-логика редназначена для работы с бизнес-данными. Потому и должна быть в модели
Ну это же обман самого себя Улыбка Я последние года 4 работаю исключительно с e-commerce, поэтому и говорю, восновном, на их примерах, так вот тут невозможно бизнес-логику вшить исключительно в модели. Куча логики наворочена в расчетах доставок, наличий, цен, куча логики зашита в маршрутах синхронизаций данных, куча логики зашита в обработке ошибок, ретраях, вся логика сильно вариативна - невозможно это все поместить на уровень моделей Улыбка

Цитата:
это логика построени страницы а не бизнес-логика.
Логика постраения страницы влияет на счетчики, генерирует события, которые потом влияют на рейтинги, статистики и систему вцелом, не могу сказать, что тут исключительно логика отображения. Да и те системы, про которые я говорил, скорее hmvc, чем mvc, так что этот спорный момент, действительно, можно опустить
Stierus Отправлено: 27 Ноября, 2013 - 14:06:13 • Тема: немножко о логике • Форум: Объектно-ориентированное программирование

Ответов: 11
Просмотров: 2259
alexxorlovv, если честно, я не смог сделать выводы из того, что ты написал ... выделить суть послания. "Model отвечает за бизнес логику. View за представление. Controller Контролирует." Бизнес-логика не может быть зашита только в модели, по крайней мере я такого ни разу не видел. Логика валидации не в модели, логика логирования, распределения прав доступа и тд - это тоже бизнес-логика, но она не в моделях. Касательно контроллера все еще менее понятно, что он контролирует? Улыбка Да и с вьюхами все не так гладко, современные фреймворки и cms-системы дают возможность подгрузки вложенных шабллонов, использования хэлперов и отложенной простановки переменных, что, по факту, является переносом части логики в эти самые вьюхи Улыбка

Не знаю, по мне, так MVC - это более-менее разгребание кода по разным логическим кучкам, не всегда он разгребается логично понятно и однозначно. КОнтроллер - такой же класс как и плагин, вьюха плагина такой же файл как и вьюха контроллера, да и модель неоднородна, а состоит из слоя dao и репозиториев для работы с ними. Не замарачивайте вы этим голову, есть черные ящики, которые тупо друг с другом общаются посредством интерфейсов Улыбка
Stierus Отправлено: 26 Ноября, 2013 - 14:37:30 • Тема: Зачем нужны объекты? О_о • Форум: Объектно-ориентированное программирование

Ответов: 17
Просмотров: 3963
Пример:

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

1 мы Создаем либо базовый абстрактный класс, либо интерфейс entity, в котором говорим, что обязательно у сущности должен быть метод toExport() или ExportTo($param) - зависит от нюансов, но роли не играет
2 Все наши сущности мы наследуем от этого абстрактного класса, либо имплементим интерфейс - другими словами говорим о том, что метод, как и обещано, мы реализовали. Таким образом у нас есть 2 класса: category, product которые точно реализовали метод toExport()
3 Реализуем экспортер во внешнюю систему (или несколько, если экспортеров несколько), у которого всего 1 функция export(entity $entityToExport)


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



PHP:
скопировать код в буфер обмена
  1.  
  2. abstract class entity
  3. {
  4.     /**
  5.      * используется при экспорте сущностей во внешние системы
  6.      *
  7.      * @abstract
  8.      * @return string
  9.      */
  10.     public abstract function toExport();
  11.  
  12.     /**
  13.      * используется при экспорте сущностей во внешние системы
  14.      *
  15.      * @abstract
  16.      * @return int|string
  17.      */
  18.     public abstract function getUniqueKey();
  19.  
  20.     /**
  21.      * Принимает на вход список фссоциативных массивов с данными о сущности,
  22.      * возвращает список сущностей (сущности - это те унаследованные классы, из
  23.      * которых вызывается метод)
  24.      *
  25.      * @static
  26.      * @param array $data
  27.      * @return entity[]
  28.      */
  29.     public static function getListFromArray($data){
  30.         $return = array();
  31.         $className = get_called_class();
  32.         foreach($data as $val){
  33.             $return[] = new $className($val);
  34.         }
  35.         return $return;
  36.     }
  37. }
  38.  
  39. class CategoryEntity extends entity
  40. {
  41.     /** @var int */
  42.     private $id = 0;
  43.  
  44.     /** @var string */
  45.     private $name = '';
  46.  
  47.     public function __construct($data=array()){
  48.         if(!is_array($data)){
  49.             return;
  50.         }
  51.         if(array_key_exists('id', $data)){ $this->id = (int)$data['id']; }
  52.         if(array_key_exists('name', $data)){ $this->name = (string)$data['name']; }
  53.     }
  54.  
  55.     public function toExport(){
  56.         $data = array(
  57.           'id' => (int)$this->id,
  58.           'name' => (string)$this->name,
  59.          );
  60.         return json_encode($data);
  61.     }
  62. }
  63.  
  64. $client = ServiceMixHttpClient::getInstance();
  65. $client->send($model->getById((int)$category['id']));
  66.  
Stierus Отправлено: 26 Ноября, 2013 - 13:07:12 • Тема: немножко о логике • Форум: Объектно-ориентированное программирование

Ответов: 11
Просмотров: 2259
Цитата:
Расхождение заключается в том, что мы перекладываем логику контроллера на очень узкопрофильный виджет и делаем контроллер просто юзабилити данных виджетов и моделей

А в чем тут расхождение? Раньше у тебя было 3 коробки (модель, контроллер, вьюха), которые по строго заданным интерфейсам взаимодействовали. Введя виджет, ты добавил черных коробок и интерфейсов их взаимодействия, не более
(Добавление)
Цитата:
а почему по дальше от MVC
Ну хотя бы потому что иногда требуется писать быстрый код Улыбка
Цитата:
Макконоло предлагает делать узко направленные черные коробки с функционалом для одного объекта виджеты же делят этот функционал на очень узкие части заставляя так называемаю коробку зависеть и переносить логику в нее.
Если переносить аналогию в реальный мир, вы предлагаете писать класс "машина", у которой будет интерфейс "вперед, назад, поворот, тормоз, заправить" и тд Виджеты - это уровень запчастей "тормоза, рулевая, подвеска" Если смотреть еще ниже - вы увидите классы фреймворков для работы с сессиями, кэшами, базами и тд - это уже уровень "гидравлический цилиндр передних дисковых тормозов" ... если заглянуть в конкретные адаптеры фреймворков - вы увидите винты, болты и гайки ... речь лишь о разном уровне детализации
Stierus Отправлено: 26 Ноября, 2013 - 12:01:58 • Тема: пердача из контроллера в контроллер • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1244
hmvc?
Stierus Отправлено: 11 Ноября, 2013 - 10:09:46 • Тема: Интернет магазин • Форум: Вопросы новичков

Ответов: 7
Просмотров: 311
по поводу 1)
DelphinPRO сказал правильно, нужно лишь не забыть продумать, что будет, если у человека есть товар и в куках и в сессии ( набирал товар неавторизованным, потом авторизовался и оказалось, что у него были товары и в бд). Будешь их сливать или нет, если да - будешь ли сообщать пользователя об этом или нет, если будешь - как? Улыбка

Пока самый лучший вариант из тех, что я знаю:
Разделить корзину на 2 части - первая часть - корзина при брождении по сайту. Эта корзина для авторизованных лежит в бд, для невторизованных лежит в куках. При авторизации идет их слияние, информировать или нет - не важно. В момент, когда человек переходит к оформлению заказа - создается "корзина оформления", которая остается неизменной до момента ухода со страницы оформления заказа (либо пеедумал, либо оформил). Это дает гарантию, что открыв в другом окне браузера сайт повторно и бросая там товар, открытое в первом окне оформление завершится ровно так, как показано на экране + в случае авторизации в момент оформления заказа, оформится то, что хотел человек.
Stierus Отправлено: 07 Ноября, 2013 - 15:42:36 • Тема: Очень много очень глупых вопросов. • Форум: Напишите за меня, пожалуйста

Ответов: 18
Просмотров: 191
а чем локальная машина отличается от любой другой?
Stierus Отправлено: 07 Ноября, 2013 - 08:09:25 • Тема: Очень много очень глупых вопросов. • Форум: Напишите за меня, пожалуйста

Ответов: 18
Просмотров: 191
phpdaemon
nodejs
websocket

Довольно странно что-то изучать лишь из-за того, что про это написано в каком-то скрипте, суть которого вы всеравно не понимаете оО
Stierus Отправлено: 07 Ноября, 2013 - 08:02:27 • Тема: Интернет магазин • Форум: CMS и фреймворки

Ответов: 17
Просмотров: 4623
В магазине машин я бы хотел увидеть уже заложеную базу марок, моделй машин, типов (с иконками) и тд. Интерфейсно отличается сильно, процесс оформления предзаказа иной, корзина не нужна. Куча допилок, в общем, потребуется, если брать обычный интернет-магазин
Stierus Отправлено: 06 Ноября, 2013 - 10:08:27 • Тема: Интернет магазин • Форум: CMS и фреймворки

Ответов: 17
Просмотров: 4623
я не могу найти нормальный магазин подержанных авто, а тут магазин-посредник из коробки ищут Улыбка Кстати, если кто знает нормальные скрипты по продаже автомобилей - киньте в личку ссылок
Stierus Отправлено: 06 Ноября, 2013 - 10:01:07 • Тема: Получить последнюю строку файла • Форум: Вопросы новичков

Ответов: 32
Просмотров: 1783
armancho7777777, да на работе запарки, никак толковых программистов найти не могу в проект, на курсы по машинному обучению записался на курсере (всем рекомендую https://class[dot]coursera[dot]org/ml-004/class/index ), довольно интересно, но времени много кушает. Да и вопросов интересных нет, на которые времени не жалко.
Stierus Отправлено: 05 Ноября, 2013 - 16:24:59 • Тема: Получить последнюю строку файла • Форум: Вопросы новичков

Ответов: 32
Просмотров: 1783
tail -n 1 path_to_file

ну и коммент 5 летней давности, если нет возможности использовать штатные никсовые команды http://www.php.net/manual/en/fun....fseek.php#86517

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB