J'ai un, je pense assez facile, la question, mais je ne peux pas comprendre ce que je fais mal. J'ai une fonction que j'appelle avec la fonction de PHP eval
. Je m'attends à ce qu'un ArrayList soit auto-construit. Mais quand j'utilise gettype
, je vois que le résultat est NULL
. Même si j'utilise return
dans la fonction eval-ed.PHP eval retourne null, mais un retour est appelé
Pour autant que je sache que je joue par la documentation, mais de toute façon il ne fonctionne pas. Aucune suggestion?
fragment de code
<?php
$widgetList = new ArrayList();
for($i = 0; $i < $selectedTemplate->Regions->count(); $i++)
{
$region = $selectedTemplate->Regions->item($i);
if($region->Widget->selectiveContent == 1)
{
$widgetList->add($region->Widget);
}
}
if($widgetList->count() > 0)
{
?>
<tr>
<td colspan="2">
<strong>Widget instellingen</strong>
<hr size="1" width="100%" color="#333"/>
</td>
</tr>
<?php
for($i = 0; $i < $widgetList->count(); $i++)
{
?>
<tr>
<td class="w150">
<?= $widgetList->item($i)->title ?>
</td>
<td>
<select name="widget_<?= $widgetList->item($i)->id ?>" class="full">
<?php
$itemList = eval($widgetList->item($i)->functionCall);
for($j = 0; $j < $itemList->count(); $j++)
{
$selected = null;
if($_POST["widget_".$widgetList->item($i)->id] == $itemList->item($j)->id)
{
$selected = " selected=\"selected\"";
}
?>
<option value="<?= $itemList->item($j)->id ?>"<?= $selected ?>><?= $itemList->item($j)->title ?></option>
<?php
}
?>
</select>
</td>
</tr>
<?php
}
}
?>
Code Eval-ed
public function getNavigationByLanguageId(Integer $parent, ArrayList $objectList, Integer $language)
{
$query = DataAccess::getAdapter()->query("
SELECT *
FROM `navigation`
WHERE `parent_id` = ".$parent->value."
AND `language_id` = ".$language->value."
AND `website_id` = ". $_SESSION["currentSite"]["id"]."
ORDER BY `sort_order`");
while($result = DataAccess::getAdapter()->fetchAssoc($query))
{
$link = new Model_Navigation();
$link->id = $result["id"];
$link->language = $result["language_id"];
$link->parent = $result["parent_id"];
$link->Page = Model_Page::getPageById(new Integer($result["page_id"]));
$link->title = $result["title"];
$link->externalUrl = $result["external_url"];
$link->sortOrder = $result["sort_order"];
$objectList->add($link);
Model_Navigation::getNavigationByLanguageId(new Integer($result["id"]), $objectList, $language);
}
return $objectList;
}
La fonction étant eval-ed est: Model_Navigation::getNavigationByLanguageId(new Integer(0), new ArrayList(), new Integer(7));
Un peu plus explaination sur le code J'utilise cette fonctionnalité dans mon nouveau CMS. Un utilisateur peut concevoir un modèle et placer des widgets dans des régions définies, à l'instar de la fonctionnalité de portlet jQuery. Les widgets sont installés pour un site Web par moi, j'ai construit dans une option pour fournir un appel de fonction pour récupérer une liste d'objets quand un widget est marqué comme «contenu sélectif». Ce que j'essaye d'accomplir ici emploie eval
pour retourner ArrayLists de la valeur de $ widget-> functionCall.
Pouvez-vous inclure le code en question? –
Pouvez-vous coller le code problématique s'il vous plaît? – rui
Un échantillon de votre code peut nous aider avec nos réponses. Soit dit en passant, évaluez-vous une déclaration de fonction ou un appel de fonction? – Eineki