
∀RTUR
26.02.2017
15:49:44
поэтому и пишу сюда

Salavat
26.02.2017
23:24:17
Для Mongo - кроме MongoDB есть еще что-то удобное?
Почему-то устаревший Mongo - работает куда интереснее
Задача - посчитать количество элементов
Простой Query - возварщает все объекты, а меня сами объекты не интересуют - только количество

Google

Salavat
27.02.2017
00:00:12
Спасибо всем) разобрался. Через Command делается

Denis
27.02.2017
00:21:04
Не спится?)

Salavat
27.02.2017
00:33:51
Ну (

енот
27.02.2017
00:36:17
Не спиться бы

Denis
27.02.2017
00:37:35
Ну (
А нефиг в три ночи работать)

Sergey
27.02.2017
07:00:04
привет, кто в FF использует Selenium IDE :)
нажимаю на input type submit - и всё, тупик. страница перегрузилась, а дальше действия не делает
clickAndWait

Альберт
27.02.2017
07:50:22
Всем привет, пишу велосипед, нужна критика, здесь можно публиковать ссылки на свои мега-пакеты?

Nadirq
27.02.2017
07:50:39
можно, почему нет

Альберт
27.02.2017
07:55:57
https://github.com/php-vivace/di
Если кому не лень, посмотрите, хотелось бы услышать есть ли аналоги, замечания по реализации. Это очередной контейнер, но тут пригодились кое-где контейнеры с возможностью расширения. Что бы можно было написать модуль, описать зависимости модуля, а этот модуль уже можно включить в другой модуль, и так далее.

Aleh
27.02.2017
08:01:37

Jerry
27.02.2017
08:03:12
А этот чем не подошел?

Google

Jerry
27.02.2017
08:03:12
https://symfony.com/doc/current/components/dependency_injection.html

(;¬_¬)
27.02.2017
08:03:35

Aleh
27.02.2017
08:04:04
Ну кроме

Альберт
27.02.2017
08:04:16

Aleh
27.02.2017
08:04:37


Альберт
27.02.2017
08:07:59
Что за возможность расширения контейнеров?
например, есть модуль, например блог, он может работать как сам по себе так и в контексте другого приложения. Так вот, команда программистов написала контейнер для блога в котором объявили и зарезолвили все зависимости. Другая команда, берет этот модуль блога, и встраивает(наследуют) все его зависимости в свой сайт, заодно резолвя коллизии(например в нашем приложение есть \PDO::class и у блога есть \PDO::class, и для блога надо подсунуть другой коннект)
Вот кусок из примера где происходит встраивание другого контейнера
$this->use(new PackageA())
//Disable the cache through the use of "DummyCache" for "vendor\tool\ClassB"
->insteadFor('vendorA\tool\ClassB', \vivace\di\Package::new([
\Psr\Cache\CacheItemPoolInterface::class => 'cache.dummy'
]))
->insteadOf(\Psr\Cache\CacheItemPoolInterface::class, 'cache.redis')
->insteadOf(PDO::class, 'db.second');


Aleh
27.02.2017
08:09:33
Короче наследование для конфигов. Звучит как ад
Так а симфони контейнер не подходит?

Sergey
27.02.2017
08:12:02

Salavat
27.02.2017
08:12:31

Aleh
27.02.2017
08:12:52
Метод
->count ()

Salavat
27.02.2017
08:13:06
у cursor разве есть метод count?
http://php.net/manual/ru/class.mongodb-driver-cursor.php

Aleh
27.02.2017
08:14:54
Ой, хз)

Salavat
27.02.2017
08:17:26
Ну я тоже предполагал что там есть этот метод :) но его нет... в Общем через Command все красиво и быстро решилось

Sergey
27.02.2017
08:18:14
а да, забыл что на новом драйвере нет
https://docs.mongodb.com/php-library/master/reference/method/MongoDBCollection-count/
тогда вот

Google

Salavat
27.02.2017
08:19:58
Ага, его реализовал как раз. Спасибо

Альберт
27.02.2017
08:22:46
Короче наследование для конфигов. Звучит как ад
Ну почему же? Как резолвить зависимости для сторонних модулей(в которых более 10 классов)? лучше это делать в index.php ? Тут основная цель это переносимый контейнер, у тебя есть набор из 20 классов, все это для работы твоего модуля, что бы просто запустить твой модуль нужно подключить твой контейнер в котором уже зарезолвины зависимости. С контейнером из симфони я так и не понял как наследовать или встраивать чужой контейнер?

Jerry
27.02.2017
08:24:20
всмысле в контейнер симфони поместить еще один контейнер? Или заменить? Это компонентный фреймворк из него можно выпелить все-что угодно.

Альберт
27.02.2017
08:27:06

Jerry
27.02.2017
08:28:01
Это же можно сделать средствами ООП и двух объектов
зачем два контейнера?

Альберт
27.02.2017
08:36:19
зачем два контейнера?
Конечно это можно просто наследовать и ручками инъектить зависимости. Цель всех этих контейнеров, как мне кажется, это сократить кол-во рутины, за счет того что обычно в стороннем модуле тебе надо поменять пару зависимых компонентов, а все остальные решения зависимостей оставить так, как это было заложено разработчиком модуля.

Jerry
27.02.2017
08:38:46
Всмысле инъектить ручками? Есть же конфиг, создаем сервисы, один сохраняет в файл/другой в базу например и все. Используем где хотим.
Контейнер не только для этих целей сделан, которые вы описали

Aleh
27.02.2017
09:00:54
Контейнер в приложении один
Если их больше, то что-то не так

Aleh
27.02.2017
09:01:27
Конфиг для контейнера и контейнер это разные вещи
Живут отдельно
Наследовать что-то с поведением - неправильно в принципе
Если вам в ваше приложение надо подключить какой-то сторонний модуль, то конфигурируете классы как вам надо либо прямо используете их конфиг
И вуаля
Не надо ничего никуда встраивать
Скоупы вроде ничешная идея, но не уверен, что оно в принципе нужно


Альберт
27.02.2017
09:05:05
Всмысле инъектить ручками? Есть же конфиг, создаем сервисы, один сохраняет в файл/другой в базу например и все. Используем где хотим.
Инъектить ручками имел ввиду new Object(new EmbedObject(), new EmbedObject2(new DeepObject()));
У меня подход другой, контейнер создается для каждого модуля(пакета) свой, модуль это самостоятельное приложение не знающее о том что там выше. Вы говорите о разрешение зависимости через конфиг для конкретного класса, но если этот класс зависит от нескольких других, которые в свою очередь зависят от других классов, то придется очень много описывать в конфигах, и мне кажется в конфигах это делать не очень удобно, конфиги больше для хранения переменных окружения, а не для управления хода выполнения программы

Google

Aleh
27.02.2017
09:06:16
Инъектить ручками имел ввиду new Object(new EmbedObject(), new EmbedObject2(new DeepObject()));
У меня подход другой, контейнер создается для каждого модуля(пакета) свой, модуль это самостоятельное приложение не знающее о том что там выше. Вы говорите о разрешение зависимости через конфиг для конкретного класса, но если этот класс зависит от нескольких других, которые в свою очередь зависят от других классов, то придется очень много описывать в конфигах, и мне кажется в конфигах это делать не очень удобно, конфиги больше для хранения переменных окружения, а не для управления хода выполнения программы
Хм, а для чего вообще вы используете контейнер?)
Это я к последней фразе про ход выполнения

Альберт
27.02.2017
09:07:25

Aleh
27.02.2017
09:07:26
Ну а так, надо описывать только те зависимости, которые сами не создвются

Admin
ERROR: S client not available

Aleh
27.02.2017
09:11:07
У симфони вроде тоже можно, это не скажу точно

Jerry
27.02.2017
09:11:21
у симфони можно как угодно
php, xml, yaml

Альберт
27.02.2017
09:14:05
Скорее зачем вы их используете
обычно я использовал так же один контейнер и получалась длинная партянка с одним контейнером в каком нибудь файле типа services.php. Потом стал разделять на множество контейнеров поменьше, группировал их. так постепенно получился велосипед, а сейчас просто решил оформить и привести к нормальному виду

Vladimir
27.02.2017
09:14:29
Зависимость классов от классов, решается с помощью Autowire
Обычно нужно описать только конфиги для базы и т.д. Ну и какие-нибудь хитрые зависимости, которых обычно не много

Jerry
27.02.2017
09:14:30
?

Aleh
27.02.2017
09:14:35
Да вы конфиг разделяли
А не контейнер ну

Альберт
27.02.2017
09:16:11
А не контейнер ну
Нет, мы не использовали конфиги для разрешения зависимостей, ручками писали как и что надо создать, вплоть до моделей и классов хелперов

Aleh
27.02.2017
09:16:30
Модели в контейнере? О.О

Альберт
27.02.2017
09:16:37
Да, и не только
Более мелкие классы

Google

Альберт
27.02.2017
09:16:47
даже к контенере были

Aleh
27.02.2017
09:16:55

Jerry
27.02.2017
09:17:16
Чтото не так с кодом

Aleh
27.02.2017
09:17:16
Ручками писали = конфиг
И все-таки зачем вам контейнер?

Альберт
27.02.2017
09:18:45
Ручками писали = конфиг
Нет, писали так $container->define(app\model\User\About::class, [app\helper\User\Factory::class, 'newAbout']);

Aleh
27.02.2017
09:18:58
Ну вот и конфиг
Или вы в рантайме подменяли на ходу еще что-то?)

Альберт
27.02.2017
09:19:20

Aleh
27.02.2017
09:19:37
Уже хорошо)
Так зачем вам контейнер?
Ой ё
В user pdo инъектит контейнер

Альберт
27.02.2017
09:22:07
Так зачем вам контейнер?
Для решения всех зависимостей, что бы все было централизовано и не случалось такого, что понадобился новый объект и приходится его прокидывать с самых верхов)