对象属性丢失
Object properties are lost
我正在尝试在 php 脚本中使用一个对象 GestionnaireDesTaches
,我在单击网站中的按钮后调用该脚本。
这就是我调用脚本的方式:
$(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();
)加载[=25=没有问题] 文件,当我单独 运行 时 class 完美运行:这就是我单独测试它的方式:
$gt = new GestionnaireDesTaches("Othman");
echo $gt->getUtilisateur(); \ I get my name with this
请告诉我哪里做错了!
我认为你的问题来自这样一个事实,即你的 class GestionnaireDesTaches
需要一个字符串作为构造函数参数,但它得到一个 SimpleXmlElement
.
类型的对象
函数 simplexml_load_file()
return 是一个 SimpleXmlElement
类型的对象,它是 PHP 资源的包装器,其中包含XML 对象。 SimpleXmlElement
提供对存储在 XML 对象 return SimpleXmlElement
对象中的信息的访问的所有方法。
这意味着 $boards['utilisateur']
不是一个字符串,而是一个 SimpleXmlElement
对象,当您期望它表现得像一个字符串时,它(大多数时候)表现得像一个字符串。我不知道为什么在这段代码中它不能以这种方式工作,因为我不知道你如何在 GestionnaireDesTaches
class.
中处理它
在将 $boards['utilisateur']
传递给 class 的构造函数之前尝试将其转换为字符串 GestionnaireDesTaches
:
$gestionnaireDesTaches = new GestionnaireDesTaches(
(string)$boards['utilisateur']
);
或
$gestionnaireDesTaches = new GestionnaireDesTaches(
$boards['utilisateur']->__toString()
);
我正在尝试在 php 脚本中使用一个对象 GestionnaireDesTaches
,我在单击网站中的按钮后调用该脚本。
这就是我调用脚本的方式:
$(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();
)加载[=25=没有问题] 文件,当我单独 运行 时 class 完美运行:这就是我单独测试它的方式:
$gt = new GestionnaireDesTaches("Othman");
echo $gt->getUtilisateur(); \ I get my name with this
请告诉我哪里做错了!
我认为你的问题来自这样一个事实,即你的 class GestionnaireDesTaches
需要一个字符串作为构造函数参数,但它得到一个 SimpleXmlElement
.
函数 simplexml_load_file()
return 是一个 SimpleXmlElement
类型的对象,它是 PHP 资源的包装器,其中包含XML 对象。 SimpleXmlElement
提供对存储在 XML 对象 return SimpleXmlElement
对象中的信息的访问的所有方法。
这意味着 $boards['utilisateur']
不是一个字符串,而是一个 SimpleXmlElement
对象,当您期望它表现得像一个字符串时,它(大多数时候)表现得像一个字符串。我不知道为什么在这段代码中它不能以这种方式工作,因为我不知道你如何在 GestionnaireDesTaches
class.
在将 $boards['utilisateur']
传递给 class 的构造函数之前尝试将其转换为字符串 GestionnaireDesTaches
:
$gestionnaireDesTaches = new GestionnaireDesTaches(
(string)$boards['utilisateur']
);
或
$gestionnaireDesTaches = new GestionnaireDesTaches(
$boards['utilisateur']->__toString()
);