Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вопрос по ООП(Joomla)


Автор: focus_198411 5.7.2011, 20:43
Имеется код:
Модель...
Код

class modCatalog
{
    public static $catProducts = array();

    public function getXMLCategoryProduct()
    {
        $xml = simplexml_load_file("http://viruspoint.com.ua/modules/mod_catalog/xml_bases/price.xml");

        for($i = 0; $i < sizeof($xml->node); $i++) {
            $products[] = $xml->node[$i];
        }
        $this->catProducts = $products;
    }
}

Контроллер...
Код

    defined( '_JEXEC' ) or die( 'Restricted access' );

    require_once( dirname(__FILE__).DS.'helper.php' );

    $catProduct = modCatalog::$catProducts;
    
    
    require(JModuleHelper::getLayoutPath('mod_catalog'));


Представление...
Код

<?php print '<pre>'; ?>
<?php print_r($catProduct); ?>


Почему-то когда значение переменной $catProduct принимаю через возвращение функции return $products[], то значения возвращаются..., когда хочу получит значение от переменной-челна класса, то результат нулевый. Не пойму в чем проблема?

Автор: mark2011 5.7.2011, 21:55
Ну... если я правильно понимаю, то вы хотите получить тот же самый результат от переменной

Код

$this->catProducts


Ну так и возвращайте её. А то в представленном коде функция getXMLCategoryProduct() вообще ничего не возвращает, непонятно, что получается, в результате её вызова.

Автор: WolfAlone 5.7.2011, 23:07
focus_198411, результат нулевой, скорее всего по тому, что переменная не инициализированная. Хотя, в Вашем случае, судя по всему должен возвращаться пустой массив. Привильнее было бы последовать совету mark2011, и возвращать ту переменную, которая содержит необходимые Вам данные. Или, засунуть код функции:
Код

getXMLCategoryProduct()

в конструктор класса, тогда скорее всего переменная что-то вернёт. Или, что ещё более рационально - инициализировать эту переменную в конструкторе класса. Но, опять же, повторюсь! Лучше всего возвращать в Вашем случае ту переменную, которая как раз и содержит данные. А если функция "ни к чему не привязана" - можете сделать её статичной (хотя, это и не обязательно) и использовать примерно так:

Код

$catProducts = modCatalog::getXMLCategoryProduct();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)