Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 20-feb-2008, 22:46   #1 (permalink)
hector2c ha deshabilitado el karma
 
Avatar de hector2c
 
Fecha de Ingreso: noviembre-2007
Mensajes: 116
Problemas con Variables Publicas

puess, soy nuevo en eso de poo con php, y mucho mas con mssql...

pues el punto es este, tengo la siguiente clase, el problema, es: las variables publicas $usu_usu, $cla_usu, no llegan hasta la funcion, en si, al llevarlas a los parametros del store procedure, las lleva como $usu_usu='', $cla_usu=''

acaso estoy declarando algo mal ???

Código PHP:
<?php
  
class cls_usuario
  
{
    public 
$ide_usu;
    public 
$usu_usu;
    public 
$cla_usu;

    function 
validar_acceso()
    {
      
$obj_conexion = new conexion();
      
$con $obj_conexion->conectar();
      
$stmt mssql_init("usp_usuario_validar_acceso"$con);
      
mssql_bind($stmt"@usu_usu"$usu_usuSQLVARCHARFALSEFALSE16);
      
mssql_bind($stmt"@cla_usu"$cla_usuSQLVARCHARFALSEFALSE16);
      
$resultado mssql_execute($stmt);
      return 
$resultado;
    }

  }
?>
y un .php donde proceso las variables de login de un formulario:

Código PHP:
$obj_usu = new cls_usuario();
$obj_usu->usu_usu $f_usu_usu;
$obj_usu->cla_usu $f_cla_usu;
$usu $obj_usu->validar_acceso(); 
en $usu debe almacenar un juego de registros, de la consulta a la bd, en si, si colocase de esta forma la clase si funciona, pero no es la correcta por que el diagrama de clases diseñado esta diseñado de la manera inicial.

Código PHP:
<?php
  
class cls_usuario
  
{

    function 
validar_acceso($usu_usu$cla_usu)
    {
      
$obj_conexion = new conexion();
      
$con $obj_conexion->conectar();
      
$stmt mssql_init("usp_usuario_validar_acceso"$con);
      
mssql_bind($stmt"@usu_usu"$usu_usuSQLVARCHARFALSEFALSE16);
      
mssql_bind($stmt"@cla_usu"$cla_usuSQLVARCHARFALSEFALSE16);
      
$resultado mssql_execute($stmt);
      return 
$resultado;
    }

  }
?>
y en la aplicación:

Código PHP:
  $obj_usu = new cls_usuario();
  
$usu $obj_usu->validar_acceso($f_usu_usu$f_cla_usu); 
en este caso si me da un juego de registros, y todo ok, pero como veran, agrego las variables en la función, y eso no es correcto...

espero entiendan mi poca experiencia con POO en php y mssql, gracias
hector2c está desconectado   Responder Citando
Antiguo 21-feb-2008, 01:44   #2 (permalink)
DarkJ tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2004
Mensajes: 1.804
Re: Problemas con Variables Publicas

A todas las variables de la clase debes accederlas mediante $this->variable. Sin el $this son variables nuevas creadas en el ambito de la funcion.
Código PHP:
<?php
  
class cls_usuario
  
{
    public 
$ide_usu;
    public 
$usu_usu;
    public 
$cla_usu;

    function 
validar_acceso()
    {
      
$obj_conexion = new conexion();
      
$con $obj_conexion->conectar();
      
$stmt mssql_init("usp_usuario_validar_acceso"$con);
      
mssql_bind($stmt"@usu_usu"$this->usu_usuSQLVARCHARFALSEFALSE16);
      
mssql_bind($stmt"@cla_usu"$this->cla_usuSQLVARCHARFALSEFALSE16);
      
$resultado mssql_execute($stmt);
      return 
$resultado;
    }

  }
?>
DarkJ está desconectado   Responder Citando
Antiguo 21-feb-2008, 07:00   #3 (permalink)
hector2c ha deshabilitado el karma
 
Avatar de hector2c
 
Fecha de Ingreso: noviembre-2007
Mensajes: 116
Re: Problemas con Variables Publicas

wow, sos grande amigo, gracias por responder, justo estaba por salir al trabajo, ahora ire con nuevos conocimientos sobre esto, gracias, nos vemos, cuidate
hector2c está desconectado   Responder Citando
Antiguo 21-feb-2008, 16:12   #4 (permalink)
zsamer tiene algunos puntos positivos de karma
 
Fecha de Ingreso: noviembre-2003
Mensajes: 750
Re: Problemas con Variables Publicas

Tienen un error bastante importantes que rompe unos de los maximos principios de OOP y es el Principio de Encapsulamiento, en pocas palabras todas las variables o atributos de una clase deberían ser privadas o protegidas y acceder a ellas mediante sus respectivos setter/getter.

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.
zsamer está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 09:14.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93