DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) в том то и дело, как по мне, хотелось бы что бы компонент который будет лежать в архиве самой симплы остался простым. те запросы которые есть в симпле на данный момент можно построить даже нынешним классом, возможно немного дополнить. его цель это не канкатенировать запросы и не складывать все в массив filter а пользоваться обьектом с автоподстановкой методов и при желании распечатать результат, вообщем для относительного удобства $query = db()->builder->from('_products')->where(...) echo (string) clone $query $count = (clone $query)->count() $products = $query->all() Но основной сложностью все же универсальность самих методов. ели уж и подключать то вероятнее то что понадобится и в последствии если работать в более серьезных проэктах. а так то хватает пакетов тут вообще актив рекорд, тразакции https://packagist.org/packages/voku/simple-mysqli есть свежие коммиты на гите Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) возможно стоит подключить пакет от laravel https://packagist.org/?query=Illuminate%5CDatabase Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 27 июля, 2018 Жалоба Поделиться Опубликовано 27 июля, 2018 возможно стоит подключить пакет от laravel https://packagist.org/?query=Illuminate%5CDatabase +1огромное число разработчиков работают с ним Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) +1огромное число разработчиков работают с ним сейчас подключил от ларавеля контейнер, протестировать, и о чудо все работаете как и прежде!))) но это как то не интересно, согласованность интерфейса это говно, так и работы не останется если в один клик можно подменить любой компонент, главное заказчикам не рассказывать - делать задумчивый вид глядя в экран и чесать затылок мол все тут очень сложно)))) Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) ================================================ залил конфигурацию с контейнером от ларавеля https://github.com/simpladevru/simpla-namespace/blob/test-container/api/Simpla.php в качестве примера конфигурацию Storage для settings изменил https://github.com/simpladevru/simpla-namespace/blob/596e5cb29d43bd80cfc12a43a2a3d2147604bf47/api/Simpla.php#L65 public function set_settings_storage() { static::$container->singleton( StorageSettingInterface::class, SettingsDbStorage::class ); } теперь если посмотреть на сам Settings https://github.com/simpladevru/simpla-namespace/blob/test-container/api/components/settings/Settings.php в конструкторе ми подтягиваем StorageSettingInterface но нигде не создаем сам клас Storage которому в свою очередь в конструкторе нужен класс Database https://github.com/simpladevru/simpla-namespace/blob/test-container/api/components/settings/SettingsDbStorage.php#L16 все засасывается автоматом в тот момент когда будет запрошен settings НЕТ нигде магии Аля this->db (ОТКУДА ТЫ ВЗЯЛСЯ?), requere, extends и прочей чуши. чистый, понятный код... Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 27 июля, 2018 Жалоба Поделиться Опубликовано 27 июля, 2018 Немного усложнил ядро но сделал это вполне добротно, при таком раскладе можно развивать симплу дальше. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) Немного усложнил ядро но сделал это вполне добротно, при таком раскладе можно развивать симплу дальше. ну собственно сложности на самом деле нет. конфигурация все та же, все тот же список api, разработчику желательно конечно знать как устроена ядро но совсем не обязательно. по такой схеме работают все фреймворки а следовательно работа с сиплой в таком ключе будет перспективной - практика работы с ней пригодится в любых других проэктах. единственно что надо знать что существует контейнер в котором лежат нужные запчасти и что обратится к ним можно с любой точки приложения удобный способом а их несколько, без наследования и привязки к конкретной реализации определенного компонента. Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) ================================================ тестирую, поделюсь результатами)) Перед нами стоит задача переделать место хранение корзины - в редисе, куках, в лк пользователя... где угодно. Не сложно, сложнее не остаться единственным человеком который понимает что происходит в коде)) что бы владелец не разорился на доработке от Корса и что бы сайт не падал после косяка первым делом я прошел по классу корзины и выделил все места которые взаимодействуют с сессией в отдельный интерфейс https://github.com/simpladevru/simpla-namespace/blob/test-container/api/components/cart/base/CartStorageInterface.php потом создал класс для Storage, просто скопировал методы с интерфейса и описал их https://github.com/simpladevru/simpla-namespace/blob/test-container/api/components/cart/base/CartSessionStorage.php по хоршему этот storage не должен на прямую работать с сессиями потому в качестве примера в конструкторе подтянул класс сессии... Потом подумал что и сама корзина собственно может быть переписана, потому создал для данной реализации отдельную директорию, любые другие корзины можно положить рядом а еще лучше написать для КОРЗИНЫ интерфейс... https://github.com/simpladevru/simpla-namespace/tree/test-container/api/components/cart/base После зарегистрировал сервис и Storage https://github.com/simpladevru/simpla-namespace/blob/e5ee2fb9d2016a250a6f74e8801f07be1ef7540b/api/Simpla.php#L71 на переделку ушло 2 часа, не все гладко, это пример... на создание Storage потратил 5 минут, там делать нечего... ЧТО в итоге - методы интерфейса понятны и легко читаются, за что они отвечают видно сходу, любому последующему программисту просто даже ДУМАТЬ не надо как все делать - у него уже есть готовые методы для того что бы просто описать их.... Ни в корзину и куда еще либо даже лазить не надо... Вообщем как по мне удобно))) Теперь если когда нибудь корс опубликует свои пакеты Storage корзины в куках я смогу подтянуть их и автоматически обновлять. Про то что бы перебрасывать что либо по фтп можно просто забыть...))) Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) поразмышлял на счет базы, собственно единственный вменяемый, не костыльный способ работать с разными базами и собственно "быть в тренде" это PDO. вероятнее всего... возможно эксперты в этой области меня поправят... Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 27 июля, 2018 Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) Теперь если когда нибудь корс опубликует свои пакеты Storage корзины в куках я смогу подтянуть их и автоматически обновлять. Про то что бы перебрасывать что либо по фтп можно просто забыть...))) Попробуем немного помечтать1. Некто Корс опубликовал свои пакеты.2. DaVinci получил от заказчика заявку - можно ли сделать то-то и то-то. Стал искать по пакетам - о счастье, есть пакет с почти готовым функционалом, как надо. Но заказчику, конечно, об этом не сказал, сделал задумчивый вид, глядя в экран и почесывая затылок, мол, все тут очень сложно, и цену загнул соответственно. А заказчику надо - согласился.3. DaVinci за пару минут устроил все, затянул разработки Корса. Теперь у заказчика все прекрасно работет, DaVinci побогател, все довольны. Красота!4. Через некоторое время Корс свой пакет изменил, и к заказчику он теперь тянется в измененном виде. А среди изменений появился и некий хакерский инструмент, чтоб у заказчика стянуть базу или скрипты или что еще. И этот нехороший Корс получил все сведения о сайте. А там могут быть и пароли доступа к финансовым инструментам или много чего еще конфиденциального.Стало быть, с помощью DaVinci у заказчика ушли на сторону все коммерческие и прочие тайны.5. Свои хакерские штучки Корс может подключать не постоянно, а изредка на короткие периоды. А отловить его будет довольно проблемно. А если даже и отловят, что будет? Допустим, удалят пакет из репозитория. На сайте доработка действовать не будет. А может, и сайт зависнет крепко. Заказчик - к DaVinci - выручай, друг. Что будет делать DaVinci? Другой аналогичный пакет искать, или свой писать? И как - бесплатно или новую оплату загнет?6. Возможны и еще разные варианты... Изменено 27 июля, 2018 пользователем phukortsin Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 Жуткий рассказ))) если бы вы понимали суть абсурдности того что вы написали... стало быть гитхаб свалка хакерского шлака который в тот или иной момент может стянуть все ваши пароли)))) собственно сама Симпла именно там и лежит)) Страшно аж жуть.... Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) Корс, в таком случае модульность, которую так ждут не проходит ваши критерии безопастности, впрочем как и все cms которые затягивают на сервер что либо с внешних ресурсов. Ну как бы совсем не серьезно))) Вероятность того что в пакете могут подсадить вредоносный когд есть, но для этого есть версианирование что сводит риски к нулю. Даже не представляю дурочка который принимает на свой сервер гигабайты статистики с чужих серверов для аналитики в ожидании того что бы ТОТ самый ОДИН заказчик закачал обновление что бы украсть у него пароли))) ПЛЮС пакеты проверяются тысячами пользователей в отдельной случае миллионами (ни одна cms не может похвастаться такой армией тестировщиков к вашему сведению) что дает возможность обнаружить любые огрехи. Можно приводить много доводов в пользу абсурдности ваших аргументов но ВАМ сперва бы понять о чем вы говорите.... А вот то что такой злобный тролль как КОРС подсадит вредоносный код в чужой проект гораздо выше, существеннее выше. А кому тестировать??? ))) Только вы знаете что вы там делаете, ваши работы никем не критикуются и не корректируются. А в свете вашей загруженности если у 10 ваших заказчиков обнаружится вредоносный код, даже если вы не знаете что прилетел он с вашего компьютера, получается кому то надо будет м]гко говоря подождать что бы у вас появилось время все исправить а тем временем как КОРС хаотично бегает по серверам заказчиков в тщетных попытках все исправить кто то несет убытки. а почему так получается? А потому что КОРС ОДИН и больше НИКТО не знает как устроен его код)))) И собственно из тех кто мог бы что то сделать не полезет в код симплы тем более исправлять чужие косяки... И если он не может установить компазер то с консолью у него беда.. логи то он через фтп смотрит... откатить ничего не может... Вообщем беда... И прошу вас в очередной раз - хотите поговорить о безопастности создайте ОТДЕЛЬНУЮ ветку. У вас с понимаем очень плохо... Еще немного и мы начнем говорить о том что бы пришельцы не украли пароли пользователей потому что интернет создан марсианами. КЛИНИКА... Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) я не против услышать полезно мнение, что то новое... но от вас Корс за все посты которые вы тут написали ничего полезного и ничего нового я не прочел... никакого обмены опытом... Как присутствующим относится к вам серьезно даже не знаю... Я бы вовсе не хотел переходить на личности но и впрямь вы представляетесь мне человеком который впервые раз увидев колесо и перекрестился... Вы против внешних пакетов, я понял, все поняли. Помимо этого есть тема программирование ядра - посмотрите сколько сервисов api висит в репозитории, может подскажите как организовать мост для двух типов подключения к базе, можете написать класс для работы с сессиями, куками. Отправляйте пул, я приму. Вам это не интересно по каким то причинам? ну так если уж заходите в тему то хоть сидите молча Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 27 июля, 2018 Автор Жалоба Поделиться Опубликовано 27 июля, 2018 (изменено) ================================================ обкатал внедрение зависимостей, удалил контейнер от ларавель установил свой, все работает как и прежде перебросил ветку тест на мастер собственно на этом Мое предложение по развитию симплы в ключе неймспеса закончено. Надеюсь кто следил было интересно и возможно познавательно. Вероятнее всего мой вклад в развитие симплы в данной теме был не настолько весомый как вклад Корса, но все же я старался)) приложение не готово, если кому интересно можете поэксперементировать и удостовериться что работать с такой инфраструктурой реально удобно данная работа это не готовое решение. ================================================ что удалось получить на выходе - подключили композер, автозагрузку классов, формируем наше приложение как удобно с любыми влажностями не задумываясь об requere, подключаем сторонние пакеты такие как smarty, все возможные библиотеки такие как curl, pclzip - установили контейнер, вместо "глупого" массива из классов теперь есть мощный инструмент внедрения зависимостей. переоценить его достоинства и удобства просто не возможно. всем кому интересно и кто еще не знает что это можно почитать про Di контейнер и Service Locator. Безумно удобная штука, всеядная, можно хранить от простых строк, массивов, объектов до внедрения объектное в конструктор класса... вообщем круть да и только. - перевели базу на InnoDB что существенно облегчит жизнь при разработке - в качестве примера сконфигурировали Storage для корзины и настроек -------------- по данной теме у меня все, если будет чем дополнить по namespace отпишусь. -------------- КОРС Специально для тебя залил папку вендор которую ты не видел. не переживай, там два пакета которые уже были в симпле. я ничего не подсаживал туда. а дамп базы тут https://github.com/simpladevru/simpla-namespace/blob/test-container/simpla/update/simpla.sql -------------- следующая тема скорее всего будет именно про компоненты. надеюсь все противники пакетов, модульности и прочих удаленных ресурсов а так же общество нормальных людей, не загадят тему Изменено 27 июля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 В этой теме в постах #19, #44 предлагались некоторые из актуальных для Simpla задачи. Ни одну из них, насколько я понял, обсуждаемая разработка помочь решить простым способом не может. Попробую предложить еще:7. Сделать кеширование SQL-запросов. Вот недавно пользователь интересовалсяhttp://forum.simplacms.ru/index.php?app=core&module=search&do=viewNewContent&search_app=forumsА вообще вопрос интересный, актуальный и на форуме всплывает время от времени.Может, обсуждаемая разработка может этот вопрос разрешить. Желательно легко и просто - чтоб простому пользователю скопировать пяток магических строк в composer.json - и все заработало... DaVinci, прошу Вас не волноваться и не переживать, если мой пост не понравится.Также, пожалуйста, не трудитесь и не просите меня не писать в теме. Просьбы такого плана считаю глуповатыми, ибо это открытый форум для обсуждения всеми желающими. Поскольку Вы создали тему на открытом форуме, такие претензии неуместны. Кроме того, пожалуйста, учтите, что я пишу в открытой теме ВСЕМ заинтересованным, а не только Вам одному. Как говорил один киногерой, "Не считайте себя фигурой, равной Черчиллю"... Уж извините, мне (думаю, и другим тоже) по большому счету все равно, дадите содержательный ответ на вопрос персонально Вы или это сделает кто другой... Мой пост - вопрос для тех кто знает. Если вдруг Вам затруднительно содержательно решить мой вопрос, просьба не волноваться и не писать не по делу. Расписывать вместо точного ответа достоинства Вашей работы тоже не надо - они понятны, признаны и неоспоримы. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 Если бы вы были повнимательнее то увидели бы заголовок темы. И вопрос по данной теме решён. Теперь вы как разрабочик можете подключать любые пакеты, а уж такие вещи как кеширование запросов просто детский сад. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 1 августа, 2018 Автор Жалоба Поделиться Опубликовано 1 августа, 2018 (изменено) Я потому и прошу вас не писать свои глупые вопросы на которые достаточно квалифицированных ответов если погуглить. Они не касаются непосредственно симплы или меня как автора данной темы. Что вам понадобится интегрировать в той или иной ситуации вам виднее, вам и решать эти задачи. Изменено 1 августа, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 1 августа, 2018 Жалоба Поделиться Опубликовано 1 августа, 2018 Дайте давинчи возможность моделировать тему.Тугодум Корс просто засырает тему бестолковыми постами. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 2 августа, 2018 Жалоба Поделиться Опубликовано 2 августа, 2018 Если бы вы были повнимательнее то увидели бы заголовок темы. И вопрос по данной теме решён. Согласен, вопрос по данной теме решён.Стало быть, вопрос у меня не прямо по теме, а чуть расширенный - по применению описанного решения. ...а уж такие вещи как кеширование запросов просто детский сад. Чудно! А может кто-то написать кратко и точное решение, понятное не особо подготовленному пользователю? Если я правильно понимаю, то должно быть несколько строк для вставки в composer.json - и больше никаких хлопот владельцу сайта... Еще раз повторюсь - вопрос не предназначен персонально для ТС. Буду рад получить содержательный ответ от любого, кто знает... Если для ТС трудно или не интересно дать ответ на детский вопрос, просьба не волноваться, к ТС никаких претензий нет, разработка однозначно ценная и полезная. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 12 августа, 2018 Жалоба Поделиться Опубликовано 12 августа, 2018 DaVinci, на php 7.2 открой админку посмотри на ошибки. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 15 августа, 2018 Автор Жалоба Поделиться Опубликовано 15 августа, 2018 DaVinci, на php 7.2 открой админку посмотри на ошибки. не смотрел админку. обращу внимание в следующей теме. просто если уж работать с 7.2 то по феншую надо бы придерживаться типизации, я не против, но боюсь не всех это устроит Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 18 сентября, 2018 Автор Жалоба Поделиться Опубликовано 18 сентября, 2018 (изменено) В качестве примера добавил Pipeline https://github.com/simpladevru/simpla-namespace/blob/pipeline/index.php конечно надо привести к должному виду IndexView. Но думаю суть понятна. Что стоит отметитьhttps://github.com/simpladevru/simpla-namespace/blob/pipeline/middleware/CheckLicenseMiddleware.phpпо умолчанию, проверка лицензии используется в двух местах. Имея один посредник мы избавились от дублирования https://github.com/simpladevru/simpla-namespace/blob/pipeline/middleware/TimerMiddleware.phpможем использовать сколько угодна раз и оборачивать любые последующие посредники ============================================= само собой для полноценной реализации не хватает два объекта request и response. https://docs.zendframework.com/zend-diactoros/https://www.php-fig.org/psr/psr-7/ Изменено 18 сентября, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 19 сентября, 2018 Жалоба Поделиться Опубликовано 19 сентября, 2018 Что стоит отметитьhttps://github.com/simpladevru/simpla-namespace/blob/pipeline/middleware/CheckLicenseMiddleware.phpпо умолчанию, проверка лицензии используется в двух местах. Имея один посредник мы избавились от дублирования Избавились от дублирования - это плюс. Но работа с лицензией в стандартной Simpla в двух местах - на витрине и в админке - проводится по разному. В одном месте при отсутствии лицензии просто текст пишется и работает полностью, а в другом - админка не открывается и редиректит на страницу ошибки лицензии. В предложенном варианте, если я правильно понимаю, такой гибкости нет. И вообще, если вдруг захочется в каком-то месте узнать, есть лицензия или нет, то непонятно, как это сделать без усложнений. Например, чтобы при отсутствии лицензии отключался импорт или импорт работал лишь с первыми 10 строками... И даже насчет "избавились от дублирования" тоже не совсем понятно. По данной ссылке в IndexAdmin.php стоит стандартная проверка лицензии, которая дублирует CheckLicenseMiddleware.php. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 19 сентября, 2018 Автор Жалоба Поделиться Опубликовано 19 сентября, 2018 (изменено) Например, чтобы при отсутствии лицензии отключался импорт или импорт работал лишь с первыми 10 строками... код, логику, любой сложности на проверку стоит ли отключить импорт при тех или иных условий или сколько строк можно импортировать я вынесу в посредник, а сам код импорта как и положенно останется "чистым". Возможно в нем появятся переменные, но это не усложнит поддержку самого импорта. Вам скорее всего тяжело в это поверить... Изменено 19 сентября, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 19 сентября, 2018 Автор Жалоба Поделиться Опубликовано 19 сентября, 2018 (изменено) CheckLicenseMiddleware.Быть может вы не заметили ещё одного преимущества - говоря о CheckLicenseMiddleware мы уже не говорим о «каких то строчках кода, которые находятся в каких то файлах», мы говорим о логике, какой бы она не была, вынесенной в отдельное место. И читая имя данного посредника даже не открывая этот файл понятно для чего он нужен Изменено 19 сентября, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.