Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Problemas con Variables Publicas (http://www.forosdelweb.com/f68/problemas-con-variables-publicas-559010/)

hector2c 20/02/2008 23:46

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

DarkJ 21/02/2008 02:44

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;
    }

  }
?>


hector2c 21/02/2008 08:00

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

zsamer 21/02/2008 17:12

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.


La zona horaria es GMT -6. Ahora son las 22:16.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.