Esto es un poco extraño para mí. PHP es mi fuerte, y normalmente puedo resolver cualquier problema que encuentre.PHP Función 'return' no regresa
Tengo un marco personalizado que he estado utilizando durante años. Me he encargado de reescribirlo, y estoy haciendo todo esencialmente igual que antes. El problema radica en que el siguiente ejemplo:
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;
}
Este código está siendo llamado con 'casa' para el valor de $_GET['page_name']
. La llamada a ModPages_GetPageByName()
funciona bien, pero el valor de $page
en ModPages_GetPage()
no se está configurando. De hecho, cualquier declaración de depuración lanzada después de esa llamada no muestra nada.
Tengo display_errors
establecido en on
, y error_reporting
establecido en E_ALL
. Recibo un par de avisos de mi clase de Base de datos, pero eso es todo.
Al ejecutar la secuencia de comandos en un shell, no se producen errores. Cuando uso strace
, veo que el proceso escupe un 'exit_group (255)'.
Éste me tiene bastante desconcertado. De seguro podría usar alguna dirección sobre esto.
Parece que ha comprobado que, si 'var_dump ($ page)' justo antes 'devuelve $ page', ve el valor esperado (¿una matriz o algo más complicado?). ¿La clase 'Database' tiene un destructor que puede salir mal? – grossvogel
¿Y realmente has probado ** la depuración **? Es decir. use Zend Debugger o xdebug, establezca un punto de interrupción y siga su código ... – wimvds
Debería haber intentado por lo menos 'var_dump ($ page)' por el momento; ¿Cuál es la salida? – meagar