Questo è un po 'strano per me. PHP è il mio forte, e di solito riesco a capire qualsiasi problema che incontro.Funzione PHP 'return' non restituisce
Ho una struttura personalizzata che uso da anni. Mi sono preso la responsabilità di riscriverlo, e sto facendo essenzialmente tutto lo stesso che ero prima. Il problema sta nel seguente costrutto:
function ModPages_GetPage() {
$page = ModPages_GetPageByName($_GET['page_name']);
if($page != false) {
include(TPL_DIR.'pages/pages.view.php');
} else {
ErrorMessage('Invalid Page', 'The selected page could not be found.');
}
}
function ModPages_GetPageByName($page_name = null) {
$db = new Database;
$query = '
SELECT *
FROM pages
WHERE page_name = "'.CleanStr($page_name).'"
AND page_enabled = "yes"
LIMIT 1
';
$page = $db->GetRow($query);
return $page;
}
Questo codice è chiamato con 'casa' per il valore di $_GET['page_name']
. La chiamata a ModPages_GetPageByName()
funziona correttamente, ma il valore di $page
in ModPages_GetPage()
non viene impostato. In effetti, tutte le dichiarazioni di debug generate dopo quella chiamata non riescono a visualizzare nulla.
I hanno display_errors
impostato su on
e error_reporting
impostato su E_ALL
. Ricevo un paio di avvisi dalla mia classe Database, ma il gioco è fatto.
L'esecuzione dello script in una shell non genera errori. Quando si utilizza strace
, vedo che il processo sputa un 'exit_group (255)'.
Questo mi ha abbastanza sconcertato. Potrei sicuramente usare qualche direzione su questo.
Sembra che tu abbia controllato che, se tu "var_dump ($ page)" prima di 'return $ page', vedi il valore atteso (una matrice o qualcosa di più complicato?). La classe 'Database' ha un distruttore che potrebbe andare storto? – grossvogel
E hai effettivamente provato ** il debug **? Vale a dire. usa Zend Debugger o xdebug, imposta un breakpoint e passa attraverso il tuo codice ... – wimvds
Dovresti aver provato almeno 'var_dump ($ page)' ora; qual è l'output? – meagar