PHP Paranoid
Resulta que estoy trabajando en la integración de un foro, phpBB, en múltiples sitios, uno para todos en vez de todos para uno, y revizando el archivo /phpBB2/includes/usercp_register.php
(para los interesados en mirar el código, estoy utilizando la última versión estable: phpBB 2.0.22), me surge la siguiente duda que paso a detallar más o menos así.
Para mantener la compatibilidad entre mi aplicación y phpBB trato de imitar la manera en la que están codeadas las distitnas secciones que cumplen la misma función, caso concreto: el registro de usuarios.
Posicionándome en la linea 614 del archivo en cuestión me encuentro con el siguiente choclo de código que resumo un poco para que sea más browser friendly y que no se extienda tanto el post:
<?php
$sql = "SELECT MAX(user_id) AS total FROM " . USERS_TABLE;
if (!($result = $db->sql_query($sql))){
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
}
if (!($row = $db->sql_fetchrow($result))){
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
}
$user_id = $row['total'] + 1;
//
// Get current date
//
/* Acá iría todo el SQL que inserta al nuevo usuario en la tabla users */
if (!($result = $db->sql_query($sql, BEGIN_TRANSACTION))){
message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
}
/* Más SQL INSERTS */
if (!($result = $db->sql_query($sql))){
message_die(GENERAL_ERROR, 'Could not insert data into groups table', '', __LINE__, __FILE__, $sql);
}
$group_id = $db->sql_nextid();
/* Último SQL INSERT */
if(!($result = $db->sql_query($sql, END_TRANSACTION))){
message_die(GENERAL_ERROR, 'Could not insert data into user_group table', '', __LINE__, __FILE__, $sql);
}
?>
Como podrán observar, se hace un chequeo después de que se ejecuta cada consulta a la base de datos y en caso de fallo se invoca a la función message_die()
. Es en base a ésto que surge la siguiente pregunta: ¿No están siendo paranoicos? Es como que cada paso que dan lo hacen creyendo que la aplicación va a morir.
Entiendo que la aplicación funciona en múltiples plataformas, motores de bases de datos y versiones de PHP lo que la hace portable para los distintos planes de hosting, pero, de todas formas, ¿no les parece que son demasiado paranoicos?
Obviamente como imito la manera en que esto fue codeado mi código es como 10 kilómetros mas largo y me resulta realmente molesto.
¿No debería confiarse más en lo que uno está codeando en vez de imitar este comportamiento?. Si de todas maneras en caso de que todo se venga todo abajo tenemos un 90% de probabilidades que la integridad referencial de la base de datos se vaya a Ushuaia igual.
Me surgen un millón de cuestionamientos a favor y en contra de lo que planteo. El tema es que no tengo con quién discutirlo y ya que estamos qué mejor que dejarlo por escrito y ver qué frutos se puede sacar de ésto.