Как отладить отладочный объект magento - PullRequest
0 голосов
/ 27 января 2012

Они дали мне несколько задач над огромным сайтом, реализованным с помощью Magento.
Я использую Netbeans с Xdebug для отладки (я нахожусь на lubuntu oneiric btw), и я чувствую себя вполне нормально со всеми своими задачами.
Мне пришлось столкнуться с задачей, связанной с переопределением класса, и я потерял много времени, чтобы найти нужный файл для изменения.

Просто чтобы научиться делать это правильно:
задача былаизменить мета-ключевые слова, начиная с кода вроде

<meta name="keywords" content="<?php echo htmlspecialchars($this->getKeywords()) ?>" />

С помощью отладчика Netbeans я могу легко открыть файл, содержащий getKeywords (), который имеет:

public function getKeywords()
{
    if (empty($this->_data['keywords'])) {
        $this->_data['keywords'] = Mage::getStoreConfig('design/head/default_keywords');
    }
    return $this->_data['keywords'];
}

Теперь я не смог найтипростой способ продолжить отладку в обоих случаях: (
В частности, мой случай состоит в том, что $this->_data['keywords'] не пусто на странице, которую мне пришлось исправить.

, так как я могу легко узнать, какэтот объект создан и, в частности, кто заполняет _data['keywords']?
Мне потребовалось много времени, чтобы найти нужный файл самостоятельно.

Я не настолько опытен в отладке, поэтому, возможно, я мог бы сделать этос netbeans w / xdebug, ноЯ не могу понять это.

Спасибо

Ответы [ 3 ]

2 голосов
/ 27 января 2012

открыть терминал и

grep 'setKeywords(' app/code/ -rsn 

это покажет вам места, где эта переменная установлена ​​или используется

0 голосов
/ 28 января 2012

Вы можете временно создать метод:

<code>public function setKeywords($s) {

    echo sprintf('<pre>%s
', print_r (debug_backtrace (), true)); выход; }

Добавьте этот код в тот же класс, в котором есть getKeywords (), чтобы при добавлении данных с помощью этой функции вы увидели обратную трассировку и выяснили, как это произошло

0 голосов
/ 28 января 2012

grep -ri "Keywords" * | grep -v cache

'- r' означает рекурсивный
'- i' означает нечувствительный к регистру
'*' означает любое имя файла
| grep -v cache ' означает удаление любых ссылок в каталог кеша

...