Problema include en php

Buenas estoy utilizando los includes para utilizarlos en forma de plantillas y ademas tambien para realizar clases.
Tengo un archivo php en el que llamo a varios includes en sitios de la página. Pero hay uno que me esta dando problemas, es el del else que esta casi al final, más concretamente include "class/usuario.php" . Justo cuando relleno el formulario de esta web se llama así mismo y carga parte del else, la cosa es que despues del include no carga el resto de código.

<?php
   
   //Añadimos el archivo de cabecera
   include "include/cabecera.php";
?>
<?php
   //Si no hemos enviado nada por POST, es que no se ha consultado el formulario de registro
      //Falta controlar COOKIE
      //La validación del formulario lo haras por medio de javascript
   echo "hola";
   if(!$_POST){
?>
      <form method="POST" action="info_usuarios.php">
         <label>Nombre:</label>
         <input type="text" name="nombre"> <br />
         <label>Apellidos</label>
         <input type="text" name="apellidos"> <br />
         <label>Correo</label>
         <input type="text" name="correo"> <br />
         <label>Contraseña</label>
         <input type="password" name="contrasenia"> <br />
         <input type="submit" value="Enviar">
      </form>
<?php
}
else{
   echo "prueba prueba";
   include "class/usuario.php";
   echo "ya has rellenado el formulario";
}
?>

<?php
   //Añadimos el archivo de pie de pagina
   include("include/pie.php")
?>



El código de class/usuario.php es este:
<?php
/**
*
*/
class ClassName
{
   
   function __construct(argument)
   {
      # code...
   }
}
?>


que simplemente es un código de ejemplo. La cosa es que si modifico ese archivo y lo sustituyo por
<?php
echo "hola caracola";
?>


Carga el resto de la web. ¿Por qué ocurre esto?
Comprueba que ese archivo no tenga ningún error de sintaxis y se esté parando el flujo del programa al llegar a el...

Activando el registro de errores/warnings te saldra el archivo y la línea donde haya algo mal (si es que hay algo, claro)

http://es2.php.net/manual/en/function.e ... orting.php
En en la clase usuario haces algo con cookies también te fallará, pues debe hacerse antes de enviar cualquier tipo de html.
Creo que era un error de sintaxis, pero ahora tengo otro problema o eso creo... La cosa es que ya me hace el include correctamente si elimino uno de mis 2constructores por defecto da igual el que borre al dejar uno funciona. ¿Es que no se pueden realizar varios contructores por defecto en php?. La versión con la que estoy trabajando es 5.3.

Os dejo tambien la clase:

<?php

   class Usuario{
   //Parte Privada

      private $nombre;
      private $apellidos;
      private $correo;
      private $contrasenia;
   
   //Parte Publica   

      /**
         * @brief Contructor por defecto de Usuario. Inicializa todos los campos intener a un valor vacio
           * @pre  Ninguno.
      **/

      function __construct(){
         $this->nombre = "";
         $this->apellidos = "";
         $this->correo = "";
         $this->contrenia = "";
      }

      /*
         * @brief Contructor por parametros. Establece los datos pasados por parametros
         + @pre Ninguno.
      */
      function __construct($nombre,$apellidos,$correo,$contrasenia){
         $this->nombre = $nombre;
         $this->apellidos = $apellidos;
         $this->correo = $correo;
         $this->contrenia = $contrasenia;
      }

      /**
         * @brief Inserta un Usario en la BD
         * @ param conexion Parametro necesario para poder conectar con la BD.
         * @ pre Conexion debe de ser valida. El objeto debe de estar creado.
      **/
      function insertUsuarioDB($conexion){
         $consulta = "Insert into usuarios values ('".$this->nombre."','".$this->apellidos."','".$this->correo."','".md5($this->contrasenia)."')";
         mysql_query($consulta,$conexion) or die (mysql_error());
      }

      /**
         * @brief Establece el nombre de Usuario.
         * @pre El objeto de la clase debe de existir previamente
      **/
      function setNombre($nombre){
         $this->nombre = $nombre;
      }

      /**
         * @brief Devuelve el nombre de un Usuario.
         * @pre El objeto de la clase debe de existir previamente
      **/
      function getNombre(){
         return $this->nombre;
      }

      /**
         * @brief Establece el nombre de Usuario.
         * @pre El objeto de la clase debe de existir previamente
      **/
      function setApellidos($apellidos){
         $this->apellidos = $apellidos;
      }

      /**
         * @brief Devuelve el apellido de un Usuario.
         * @pre El objeto de la clase debe de existir previamente
      **/
      function getApellido(){
         return $this->apellidos;
      }

      /**
         * @brief Establece el correo de Usuario.
         * @pre El objeto de la clase debe de existir previamente
      **/
      function setCorreo($correo){
         $this->correo = $correo;
      }

      /**
         * @brief Devuelve el correo de un Usuario.
         * @pre El objeto de la clase debe de existir previamente
      **/
      function getCorreo(){
         return $this->correo;
      }

      /**
         * @brief Establece una contraseña para el Usuario
         * @pre  El objeto de la clase debe existir previamente   
      **/
      function setContrasenia($contrasenia){
         $this->contrasenia = $contrasenia;
      }



   }
?>


EDIT: bueno ya he visto que el problema es ese, que no soporta 2 constructores.
Sí, lo de solo poder usar un constructor es una p... La única manera de simularlo es usar parámetros por defecto y según los que te lleguen ejecutar un método u otro.

Algo así:
public function __construct($id, $cadena = null) {
      if ($cadena == null)
           $this->constructor1($id);
      else
           $this->constructor2($id, $cadena);

}
4 respuestas