Buenas a todos,
estoy intentando hacer un pequeño proyectillo, pero el código lo más profesional que pueda, ya que el proyecto es relativamente corto, voy cogiendo hábitos, que ya me hacen falta (por eso tantas tonto preguntas esta semana).
Así que allá voy con otra tonto-pregunta:
Tengo una clase user, y otra clase messageStack. la clase messageStack, cada vez que se ejecute un código php, quiero que sea única, y que el resto de las clases, llamen a este objeto, para añadir mensajes de error, o advertencias, un ejemplo.
function __construct( $user, $pass ){
$query = mysql_query (
sprintf( "
SELECT u.`id`,u.`group_id`,u.`user`, u.`password`, u.`email`, u.`date_registered`, u.`date_last_login`, u.`status`, g.`group_name`
FROM `user` AS u
LEFT OUTER JOIN `user_groups` AS g
ON u.`group_id` = g.`id`
WHERE `user` = '%s' AND `password` = '%s' LIMIT 1;",
mysql_real_escape_string($user),
sha1(mysql_real_escape_string($pass))
)
);
if( !$query ){
$message_stack->push( "Error en la consulta a la base de datos, consulte con el administrador", $message_stack->ERROR_MESSAGE );
}elseif( mysql_num_rows( $query ) == 0 ) {
$message_stack->push( "El usuario no existe o la contraseña es incorrecta", $message_stack->ERROR_MESSAGE );
}else{
$user = mysql_fetch_array( $query );
if( !$user['status'] ){
$message_stack->push( "Usuario deshabilitado", $message_stack->ERROR_MESSAGE );
}else{
$this->autentificated = 1;
$this->uid = $user['id'];
$this->username = $user['user'];
$this->email = $user['email'];
$this->update_date_last_use();
$this->group = $user['group_id'];
}
}
}
como se puede observar, llamo a la pila de mensajes para pushearle un mensaje nuevo, y ahí va el tema, como puedo hacer que $message_stack sea un único objeto para cualquier clase, función o método que quiera hacer uso de ella?
Hay que tener en cuenta que no quiero romper el encapsulamiento, con lo que no me valen variables globales. La otra que prefiero evitar es pasar la variable por referencia en el constructor si pudiese ser, si nos na.
Hay forma de hacer esto?