Всего 122 808 комментариев

Василий Наумкин
01 июля 2012, 07:16
0
memory_get_usage, она показывает память, занимаемую скриптом.

Поэтому, надо запускать функцию до и после создания объекта, потом отнимать одно значение от другого — получите примерный вес объекта.

php.net/manual/en/function.memory-get-usage.php
Иван Брежнев
01 июля 2012, 07:12
0
А есть ли метод чтобы узнать размер памяти занимаемый объектом?
Иван Брежнев
01 июля 2012, 07:03
0
Кстати задумался на счет двух операций с БД. Мне кажется что все таки создается объект modSnippet со всеми полями из БД. А уже метод getProperties работает с этим объектом, а не с БД.
Или я гоню?
Василий Наумкин
01 июля 2012, 07:00
0
Я переименовываю сниппет.
Я подключаю в переименованном сниппете расширенный класс.
Тот в свою очередь запускает оригинальный класс.

При обновлении перезаписываются оригинальный сниппет и оригинальный класс, а расширенные — нет.

Оригинальный сниппет больше вообще не используется, только расширенный — после каждого обновления его можно просто удалять.
Иван Брежнев
01 июля 2012, 06:57
0
Я об этом как раз и задумался =)
Иван Брежнев
01 июля 2012, 06:57
0
Тогда я не пойму что именно вы делаете? вы спиннете переименовываете или название класса в minishop.class.php?
Василий Наумкин
01 июля 2012, 06:57
0
Можно, да.

Только это уже какая-то экономия на спичках =)
Василий Наумкин
01 июля 2012, 06:55
0
Нет, конечно — в этом и смысл.
Иван Брежнев
01 июля 2012, 06:54
0
Глянул что в базе данных настройки сниппетов хранятся в сериализованном виде, можно их и одним запросом достать, и не будет объекта modSnippet. Но тут получается зачем нам тогда API MODX

Хочется делать сразу более менее оптимально
Иван Брежнев
01 июля 2012, 06:52
0
А после обновления оригинального класса придется менять и измененный класс?
Иван Брежнев
01 июля 2012, 06:31
0
Да что-то я лоханулся, он же из сниппета настройки тянет
Иван Брежнев
01 июля 2012, 06:30
0
Точно) Спасибо огромное ))
Василий Наумкин
01 июля 2012, 06:26
0
Вы просто забыли про $scriptProperties.

https://gist.github.com/3026530
Иван Брежнев
01 июля 2012, 06:03
0
var_dump($modx->miniShop->getCart()); // в сниппете выводит string(34) «Ваша корзина пуста»

Если просто во внешнем файле лежащем в корне сайта, то ничего не выводит
Иван Брежнев
01 июля 2012, 05:56
0
У меня там много методов я просто их опустил, решил что вы это поймете.

Если код инициализации Службы вставить в сниппет то все заводится.
Василий Наумкин
01 июля 2012, 03:47
0
Лично я переименовываю miniShop в miniShopExt, меняю вызов класса и дописываю нужные методы, а все параметры остаются.

А ваш метод ничем не хуже, главное, чтобы сниппет miniShop никуда не делся, иначе будет fatal error.
Ну и минимум на пару операций с БД выходит больше (достать сниппет, а потом его параметры).
Василий Наумкин
01 июля 2012, 03:42
0
И что тут должно произойти? Где вызов хоть какого то метода из miniShop?

Вы просто запустили класс и он ничего не делает. Если команда getService выполнена с ошибкой — она будет в системном журнале. Если нет — везде пусто.
Иван Брежнев
01 июля 2012, 02:01
0
Разобрался, эти настройки берутся из сниппета, а у меня все аяксовые запросы выполняются через свой сниппет у которого никаких настроек не прописано.

Сделал вот так в расширении класса miniShopExt. Работает. Если это не правильно поправьте

function __construct(modX &$modx, array $config = array()) {
$snippet = $modx->getObject('modSnippet',array('name'=>'miniShop'));
$config = array_merge($snippet->getProperties(),$config);
parent::__construct($modx, $config);
}