我有一個,我覺得相當容易,但我無法弄清楚我做錯了什麼。我有一個函數,我用PHP的函數eval
調用。我期待一個自建的ArrayList能夠獲得結果。但是,當我使用gettype
時,我看到的結果是NULL
。儘管我在評估函數中使用return
。PHP的eval返回null,但返回被稱爲
據我所知,我正在通過文檔播放它,但不知何故,它不工作。有什麼建議麼?
代碼片段
<?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
}
}
?>
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;
}
功能是EVAL-ED是:Model_Navigation::getNavigationByLanguageId(new Integer(0), new ArrayList(), new Integer(7));
關於代碼一些更交代 我在我的新CMS中使用了這個功能。用戶可以設計模板並將小部件放置在定義的區域中,這與jQuery提供的portlet功能非常相似。小部件是由我安裝的網站,我已經建立了一個選項來提供一個函數調用來檢索小部件被標記爲'選擇性內容'時的對象列表。
我在這裏試圖實現的是使用eval
從$ widget-> functionCall的值返回ArrayLists。
你能否包含有問題的代碼? –
請問您可以粘貼有問題的代碼嗎? – rui
您的代碼示例可以幫助我們解決問題。順便說一下,你是否在執行函數聲明或函數調用? – Eineki