Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Zeroql en 13 Noviembre 2011, 19:15 pm



Título: problema con clases php
Publicado por: Zeroql en 13 Noviembre 2011, 19:15 pm
buenas
bueno tengo esto:

Código
  1. <?php
  2. class Ftp {
  3.  
  4. var $cid;
  5. var $result;
  6. var $FTPSERVER;
  7. var $USER;
  8. var $PASS;
  9. var $rootdir;
  10.  
  11. public function connect($mode_pasive=true){
  12. $cid=ftp_connect($FTPSERVER) or die;
  13. $result=ftp_login($cid,$USER,$PASS);
  14. if ((!$cid) || (!$resultado)) {
  15. return (false);
  16. }else{
  17. if ($mode_pasive==true){
  18. ftp_pasv($cid,true);
  19. }
  20. return (true);
  21. }
  22. }
  23. }
  24.  
  25. $ftp=new Ftp();
  26. $ftp->$FTPSERVER="ftp.260mb.com";
  27. $ftp->$USER="zeroql";
  28. $ftp->$PASS="linkql";
  29. $ftp->$rootdir="/";
  30. $ftp->connect(true);
  31. ?>
  32.  
  33.  

el problema es cuando lo pongo a prueba me sale este error
Citar
Notice: Undefined variable: FTPSERVER in C:\xampp\htdocs\sovys\class\class_ftp.php on line 61

Fatal error: Cannot access empty property in C:\xampp\htdocs\sovys\class\class_ftp.php on line 61

Me pueden decir que tengo de malo??? apenas estoy empezando a crear clases con php, y este es mi primer ensayo.

de ante mano muchas gracias.


Título: Re: problema con clases php
Publicado por: #!drvy en 13 Noviembre 2011, 19:22 pm
Hola, las funciones como tal no adoptan las variables definidas anteriormente.
Por tanto, o las debes pasar en la misma funcion ( function($variables) ) o las debes declarar como globales (global $variable1,$variable2;).

ejemplo:

Código
  1. <?php
  2. $variable1 = 'blablabla';
  3.  
  4. function bla($variable){
  5.   return $variable;
  6. }
  7.  
  8. echo bla($variable1);
  9.  

Código
  1. <?php
  2. $variable1 = 'blablabla';
  3.  
  4. function bla(){
  5.   global $variable1;
  6.   return $variable1;
  7. }
  8.  
  9. echo bla();
  10.  

PD: En tu caso utilizando class es mas facil.
Código
  1. <?php
  2.  
  3. class aaaa {
  4. var $cid = 'xDDD';
  5.  
  6. public function mostrar(){
  7. return $this->cid;
  8. }
  9.  
  10. }
  11. $bbb = new aaaa();
  12. echo $bbb->mostrar();
  13.  
  14. ?>

Recuerda que cuando la quieres mostrar no es $this->$cid sino $this->cid, sin el siglo de variable.
Saludos


Título: Re: problema con clases php
Publicado por: Zeroql en 13 Noviembre 2011, 19:37 pm
normalmente no permite el paso de variables, pero es una clase, y si miras bien cuando se llama a la clase se definen las propiedades, eso lo he visto mucho también en otras clases, pero nose por que me salta este error!


Título: Re: problema con clases php
Publicado por: #!drvy en 13 Noviembre 2011, 19:41 pm
Sea clase o no funciona igual  :rolleyes:

Lo que se utiliza en clase es lo que edite en el post de arriba.

$this->variable.
$this->cid;
$this->FTPSERVER;
etc..


Saludos


Título: Re: problema con clases php
Publicado por: Zeroql en 13 Noviembre 2011, 19:51 pm
y segun tu codigo mi llamada esta bien hecha, por que esta fuera de la clase!!!


Título: Re: problema con clases php
Publicado por: #!drvy en 13 Noviembre 2011, 19:56 pm
WTF ?

Lo que tienes mal es la función en si. No usas $this->, ni global ni nada xD
Código
  1. public function connect($mode_pasive=true){
  2. $cid=ftp_connect($this->FTPSERVER) or die;
  3. $result=ftp_login($cid,$this->USER,$this->PASS);
  4. if ((!$cid) || (!$result)) {
  5. return (false);
  6. }else{
  7. if ($mode_pasive==true){
  8. ftp_pasv($cid,true);
  9. }
  10. return (true);
  11. }
  12. }

PD: RECUERDA (y te lo puse arriba) cuando vas a usar variable en una clase. No utilices $ utiliza $this->variable.

Saludos


Título: Re: problema con clases php
Publicado por: Zeroql en 13 Noviembre 2011, 20:01 pm
Actualmente ese no es mi problema es cuando hago la llamada a la clase:

Código
  1. $ftp=new Ftp();
  2. $ftp->$FTPSERVER="ftp.260mb.com";
  3. $ftp->$USER="zeroql";
  4. $ftp->$PASS="linkql";
  5. ...
  6.  
se presenta este error:

Citar
Notice: Undefined variable: FTPSERVER in C:\xampp\htdocs\sovys\class\class_ftp.php on line 61

Fatal error: Cannot access empty property in C:\xampp\htdocs\sovys\class\class_ftp.php on line 61
La linea 62 es:

Código
  1. $ftp->$FTPSERVER="ftp.260mb.com";
  2.  

como se ve no se ha realizado la llamada a la funcion, por el momento no presentara errores en la funcion...


Título: Re: problema con clases php
Publicado por: #!drvy en 13 Noviembre 2011, 20:03 pm
Vale vale, es que no sabia de que linea estabamos hablando xD

Pues lo mismo ^^
En vez de

Código
  1. $ftp->$FTPSERVER="ftp.260mb.com";

esto

Código
  1. $ftp->FTPSERVER="ftp.260mb.com";


Saludos


Título: Re: problema con clases php
Publicado por: Zeroql en 13 Noviembre 2011, 20:08 pm
Ok muchas gracias ahora si me ha funcionado a la perfecccion.
muchas gracias