функция xml не работает - PullRequest
2 голосов
/ 19 февраля 2012
<?php
    class prices{

        public $xml;
        public $data;
        public $xmlCount;
        public $type_id;

        function loadXml(){
            /*
             * Checks for xml file errors
             */

            libxml_use_internal_errors(true);
            $xml = simplexml_load_file('./lib/xml/items.xml');
            if (!$xml){
                echo "Failed Loading XML\n";
                foreach(libxml_get_errors() as $error){
                    echo "\t", $error->message;
                }
            }

            $xmlCount = count($xml->row);

            /*
             * Should belong in xmlToSql, but here to test, this code works within this function
             */
            echo '<pre>';
            echo count($xml->row);
            echo $xml->row->{'type_id'};

            /*
             * Code to test xml output
             * echo "<br />";
             * print_r($xml);
             * echo "<br />";
              *print_r($xml);
             */
        }

        function xmlToSql(){

            /*
             * add sql code later, testing that xml is working correctly
             */

            $this->loadXml();

            /*
             * This does not work in this function
             * $type_id = $xml->row->{'type_id'};
             */
            /*
             * Should Display data
             */
            echo $xml->row->{'type_id'};
            }
      }
?>

Здравствуйте, я новичок в php oop. В настоящее время я нахожусь на ранней стадии этого проекта.

В этой части застрял Курс, посмотрел несколько уроков по xml и имел ограниченный успех.

Когда я вызываю функцию loadXml в функции xmlToSql в том же классе, я не могу использовать данные xml. Я добавил примечания к своему коду выше, и я надеюсь, что он показывает то, что я пытаюсь достичь, я хочу использовать это ...

echo $xml->row->{'type_id'};

в функции xmlToSql.

Полагаю, я совершаю глупую ошибку.

Буду признателен за любую помощь

1 Ответ

1 голос
/ 19 февраля 2012

Извините, что пропустил что-то очевидное вчера ...

При вызове $this->loadXml() переменная $xml не сохраняется в свойстве объекта $this->xml и выходит из области видимости при попыткедля доступа $xml->row.

Сохраните его в $this->xml и затем получите доступ к нему соответственно внутри $this->xmlToSql():

function loadXml(){ 
        /*
         * Checks for xml file errors
         */
        libxml_use_internal_errors(true);

        // Store in $this->xml
        $this->xml = simplexml_load_file('./lib/xml/items.xml');
        if (!$this->xml){
            echo "Failed Loading XML\n";
            foreach(libxml_get_errors() as $error){
                echo "\t", $error->message;
            }
        }
        // etc....
 }

function xmlToSql(){

        /*
         * add sql code later, testing that xml is working correctly
         */

        $this->loadXml();
        /*
         * Access via `$this->xml`
         */
        echo $this->xml->row->{'type_id'};\
        // or $this->xml->row[0]->{'type_id'} if necessary
        }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...