2015-02-15 3 views
1

Я пытаюсь использовать объект GestionnaireDesTaches в сценарии php, который я вызываю после нажатия на кнопку на моем веб-сайте. это то, как я называю сценарий:Свойства объекта теряются

$(document).on("click", "#addWidgetButton", function(e) { 
       e.preventDefault(); 
       gridster[0].add_widget.apply(gridster[0], ['<li data-row="1" data-col="2" data-sizex="1" data-sizey="1" class="gs-w"><header><p style="cursor: move;">|||</p><div class="dragDiv">New</div></header></li>', 1, 1]); 
       $.ajax({ 
        type: "POST", 
        url: 'trait.php', 
        data: { action : action , board : board }, 
        success: function(data) 
        { 
         alert("Project created!"); 
        } 
       }); 
      }); 

Это работает хорошо, но у меня есть проблемы со сценарием:

<?php 
     require_once('GestionnaireDesTaches.php'); 
     require_once('Board.php'); 
     require_once('Projet.php'); 
     require_once('Tache.php'); 

     $boards = simplexml_load_file('gtxml.xml'); 
     $gestionnaireDesTaches = new GestionnaireDesTaches($boards['utilisateur']); 

     ?> <p> <?php echo "hh".$gestionnaireDesTaches->getUtilisateur();?></p><?php 
     ?> <p> <?php echo "hh".$boards['utilisateur'];?></p> 

первое эхо не дает мне ничего, второй показывает мне Utilisateur, это похоже на то, что объект теряет свои свойства при вызове во второй раз ($gestionnaireDesTaches->getUtilisateur();) Нет проблем с загрузкой xml-файла, и класс отлично работает, когда я запускаю его самостоятельно: это, как я тестирую его самостоятельно:

$gt = new GestionnaireDesTaches("Othman"); 
echo $gt->getUtilisateur(); \\ I get my name with this 

Пожалуйста, скажите мне, что я делаю неправильно!

+0

вы можете предоставить код из 'gtxml.xml', пожалуйста, ответьте работы –

+0

axiac в , в любом случае, спасибо ! –

ответ

1

Я думаю, что ваша проблема возникает из-за того, что ваш класс GestionnaireDesTaches ожидает строку как параметр конструктора, но получает объект типа SimpleXmlElement.

Функция simplexml_load_file() возвращает объект типа SimpleXmlElement, который является оберткой вокруг ресурса PHP, который содержит объект XML. Все методы SimpleXmlElement, которые обеспечивают доступ к информации, хранящейся в объекте XML, возвращают объекты SimpleXmlElement.

Это означает, что $boards['utilisateur'] не является строкой, а объектом SimpleXmlElement, который (большую часть времени) ведет себя как строка, когда вы ожидаете, что он будет вести себя как строка. Я не могу сказать, почему это не работает в этом фрагменте кода, потому что я не знаю, как вы справляетесь с этим в классе GestionnaireDesTaches.

Попытка преобразовать $boards['utilisateur'] в строку, прежде чем передать его в конструктор класса GestionnaireDesTaches:

$gestionnaireDesTaches = new GestionnaireDesTaches(
    (string)$boards['utilisateur'] 
); 

или

$gestionnaireDesTaches = new GestionnaireDesTaches(
    $boards['utilisateur']->__toString() 
); 
+0

Спасибо, много! –

Смежные вопросы