problema con clases php

Iniciado por Zeroql, 13 Noviembre 2011, 19:15 PM

0 Miembros y 1 Visitante están viendo este tema.

Zeroql

buenas
bueno tengo esto:

Código (php) [Seleccionar]

<?php
class Ftp {

var $cid;
var $result;
var $FTPSERVER;
var $USER;
var $PASS;
var $rootdir;

public function connect($mode_pasive=true){
$cid=ftp_connect($FTPSERVER) or die;
$result=ftp_login($cid,$USER,$PASS);
if ((!$cid) || (!$resultado)) {
return (false);
}else{
if ($mode_pasive==true){
ftp_pasv($cid,true);
}
return (true);
}
}
}

$ftp=new Ftp();
$ftp->$FTPSERVER="ftp.260mb.com";
$ftp->$USER="zeroql";
$ftp->$PASS="linkql";
$ftp->$rootdir="/";
$ftp->connect(true);
?>




el problema es cuando lo pongo a prueba me sale este error
CitarNotice: 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.
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


#!drvy

#1
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 (php) [Seleccionar]

<?php
$variable1 
'blablabla';

function 
bla($variable){
   return 
$variable;
}

echo 
bla($variable1);


Código (php) [Seleccionar]

<?php
$variable1 
'blablabla';

function 
bla(){
   global 
$variable1;
   return 
$variable1;
}

echo 
bla();



PD: En tu caso utilizando class es mas facil.
Código (php) [Seleccionar]
<?php

class aaaa {
var $cid 'xDDD';

public function mostrar(){
return $this->cid;
}

}
$bbb = new aaaa();
echo 
$bbb->mostrar();

?>


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

Zeroql

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!
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


#!drvy

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

Zeroql

y segun tu codigo mi llamada esta bien hecha, por que esta fuera de la clase!!!
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


#!drvy

#5
WTF ?

Lo que tienes mal es la función en si. No usas $this->, ni global ni nada xD
Código (php) [Seleccionar]
public function connect($mode_pasive=true){
$cid=ftp_connect($this->FTPSERVER) or die;
$result=ftp_login($cid,$this->USER,$this->PASS);
if ((!$cid) || (!$result)) {
return (false);
}else{
if ($mode_pasive==true){
ftp_pasv($cid,true);
}
return (true);
}
}


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

Saludos

Zeroql

Actualmente ese no es mi problema es cuando hago la llamada a la clase:

Código (php) [Seleccionar]

$ftp=new Ftp();
$ftp->$FTPSERVER="ftp.260mb.com";
$ftp->$USER="zeroql";
$ftp->$PASS="linkql";
...

se presenta este error:

CitarNotice: 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 (php) [Seleccionar]

$ftp->$FTPSERVER="ftp.260mb.com";


como se ve no se ha realizado la llamada a la funcion, por el momento no presentara errores en la funcion...
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#


#!drvy

Vale vale, es que no sabia de que linea estabamos hablando xD

Pues lo mismo ^^
En vez de

Código (php) [Seleccionar]
$ftp->$FTPSERVER="ftp.260mb.com";

esto

Código (php) [Seleccionar]
$ftp->FTPSERVER="ftp.260mb.com";


Saludos

Zeroql

Ok muchas gracias ahora si me ha funcionado a la perfecccion.
muchas gracias
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#