Foros del Web » Programando para Internet » PHP »

variables dentro de clases

Estas en el tema de variables dentro de clases en el foro de PHP en Foros del Web. hola, tengo un código obtenido de una web de programación y trabaja con clases. realmente me pierdo con este tema, apenas se nada de clases ...
  #1 (permalink)  
Antiguo 31/01/2010, 05:44
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
variables dentro de clases

hola, tengo un código obtenido de una web de programación y trabaja con clases.

realmente me pierdo con este tema, apenas se nada de clases pero tengo un problema.


class CountryFromIP
{
private $CountryIPDatabase = 'comun/ip-to-country.csv';

...........

el tema es que quiero llamar a ip-to-country.csv pero este archivo se encuentra en el directorio comun.

voy a llamar desde varios sitios a este archivo por lo que tengo una variable llamada $path que le paso el camino. $path puede ser por ejemplo $path="../" si tengo q subir un nivel. otras veces es blanco $path="" si estoy en la raíz.

el tema es necesito "acoplar" la variable $path a 'comun/ip-to-country.csv' y no hay forma, he probado por ejemplo con:

private $CountryIPDatabase = $path . 'comun/ip-to-country.csv';

y nada, alguien sabe cuál es el problema?
  #2 (permalink)  
Antiguo 31/01/2010, 06:38
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: variables dentro de clases

Utiliza rutas absolutas en vez de relativas. Debería funcionar.
Saludos
  #3 (permalink)  
Antiguo 31/01/2010, 07:50
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: variables dentro de clases

Así como lo haces no se puede.
El constructor de esa clase podría recibir esa variable $path y así redefinir la variable privada que tienes:

Código PHP:
$this->CountryIPDatabase $path.'comun/ip-to-country.csv'
Saludos,
  #4 (permalink)  
Antiguo 31/01/2010, 07:53
Avatar de zokratez  
Fecha de Ingreso: febrero-2005
Mensajes: 41
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: variables dentro de clases

Por si es de tu interes extender tus conociemientos las variables dentro de las clases son llamadas "propiedades". Las respuestas de arriba deberian de sacarte del apuro.

Saludos!
  #5 (permalink)  
Antiguo 31/01/2010, 15:02
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: variables dentro de clases

no, el único interés es saber cómo usar rutas relativas, si alguien me pueda dar la solución concreta a este caso lo agradecería...

salu2
  #6 (permalink)  
Antiguo 31/01/2010, 15:49
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: variables dentro de clases

Mí solución fue bastante concreta!!
  #7 (permalink)  
Antiguo 31/01/2010, 16:18
Avatar de zokratez  
Fecha de Ingreso: febrero-2005
Mensajes: 41
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: variables dentro de clases

Creia que habia quedado claro, bueno... no se porque te complicaste tanto con la ruta relativa... Si el directorio comun esta en el root del sitio simplemente pone un slash adelante...
Código:
private $CountryIPDatabase = '/comun/ip-to-country.csv';
  #8 (permalink)  
Antiguo 02/02/2010, 14:24
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: variables dentro de clases

sí xbx, perdona, no ví tu respuesta. no obstante, ninguna de las que me ponéis me dio resultado, sólo la de rutas absolutas pero entonce en local se me bloquea y no puedo hacer pruebas, por lo q necesito rutas relativas...
  #9 (permalink)  
Antiguo 03/02/2010, 13:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: variables dentro de clases

Verifica si esto te ayuda http://www.forosdelweb.com/f18/aport...visita-708776/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 03/02/2010, 15:14
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: variables dentro de clases

el problema NO es q de funcionamiento del programa, sino del tema las RUTAS, sólo eso, nada más
  #11 (permalink)  
Antiguo 03/02/2010, 15:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: variables dentro de clases

Las rutas relativas, tienes que pensar de donde estas leyendo el código esa ruta, si por ejemplo el código esta en un directorio llamado class y en este tienes el codigo de PHP que lee el archivo .csv entonces debes llamar solamente el nombre. Si el archivo se encuentra en un directorio aparte como por ejemplo tienes dos directorios, uno llamado class y otro llamado csv desde el directorio class llamas al directorio csv
Código PHP:
Ver original
  1. $url = "../csv/archivo.csv";
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 03/02/2010, 15:52
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: variables dentro de clases

eso es precisamente lo primero q intenté, poner "../" pero no funciona, debe ser pq está dentro de una clase, m imagino
  #13 (permalink)  
Antiguo 03/02/2010, 16:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: variables dentro de clases

No, debes ver bien la estructura de los directorio y los archivos. Si es posible indica la estructura para que te puedan indicar como debe ser la ruta.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 03/02/2010, 16:14
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: variables dentro de clases

Cita:
private $CountryIPDatabase = $path . 'comun/ip-to-country.csv';
Asi no puede ser porque esa es la declaracion del atributo (variable publica de la clase)

Yo verificaria como me queda la ruta completa al archivo:

$this->CountryIPDatabase = $path. '/comun/ip-to-country.csv';
echo CountryIPDatabase;

(esto lo haces dentro del constructor......que supongo es la funcion con el mismo nombre que la clase -en este script-)

Es posible que te falte o sobre alguna barra (/)
__________________
Salu2!
  #15 (permalink)  
Antiguo 06/02/2010, 04:31
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: variables dentro de clases

Italico76, me sale este error:

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/virtual/xxxxxxxxx.com/comun/index.php on line 315


por cierto dentro del constructor a q te refieres? he puesto lo q me dices dentro de la clase
  #16 (permalink)  
Antiguo 06/02/2010, 04:36
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Respuesta: variables dentro de clases

loading...............


Creo que deberias comenzar:

- poniendo el codigo de la clase y no unas lineas
- poniendo la ruta absoluta de tu clase /home/blabla/classes/clase.php etc
- poniendo la ruta absoluta del archivo .csv /home/blabla/asas/archivo.csv

preguntas bien hechas y con buena información obtienen rápidas respuestas.

saludos.


connection closed.
__________________

Maborak Technologies
  #17 (permalink)  
Antiguo 06/02/2010, 05:31
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: variables dentro de clases

Cita:
Iniciado por humanista Ver Mensaje
Italico76, me sale este error:

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/virtual/xxxxxxxxx.com/comun/index.php on line 315


por cierto dentro del constructor a q te refieres? he puesto lo q me dices dentro de la clase
Hola humanista......

Ese errror es lo de menos (es un error de "sintaxis"), pero haz lo que te dicen.... y pega tu codigo y lo mas importante: trata de leer algo de programacion orientada o objetos en PHP.

Esas lineas no puedes colocarlas en cualquier lado.

Un constructor es una funcion que se ejecuta automaticamente cuando creas (con "new") el objeto (o sea instancias la clase)

En PHP5 o posteriores su sintaxis es:

Cita:
function __constructor (parametros){

}
Pero en PHP4 creo que es una funcion cuyo nombre coincide con el de la clase:

Cita:
Class pepito{


function pepito (parametros){ // constructor

}

}

Saludos
__________________
Salu2!
  #18 (permalink)  
Antiguo 17/02/2010, 07:33
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: variables dentro de clases

disculpad por la tardanza, aquí tenéis los datos:

class CountryFromIP
{


private $CountryIPDatabase = 'compartido/ip-to-country.csv';
private $ip = '';

/**
* Function to validate IP
*
* @param $ip - string
*
* @return boolean
*/
public function ValdateIP($ip)
{
$ipArray = explode(',',$ip);

if(count($ipArray) != 4)
{
//echo "<font color='red' size='3'> <b>ERROR: </b> Invalid IP</font>";
return false;
}
else
{

return true;
}
}

/**
* Function to return Country name from the IPDatabase
*
* @param $ip string
*
* @return string - name of the country, false otherwise
*/
public function GetCountryName($ip)
{
$this->ip = $ip;
$ip = sprintf("%u", ip2long($ip));

$csvArray = file($this->CountryIPDatabase);

for($i=0; $i<count($csvArray); $i++)
{
$setCsv = str_replace("\"", "", $csvArray[$i]);
$arrayOfLine = explode(',', $setCsv);
if($ip >= $arrayOfLine[0] && $ip <= $arrayOfLine[1] )
{
return $youridcountryname = $arrayOfLine[2];
}
else
{
//return $youridcountryname = "US";
}
}
return false;
}


}


$ip = $_SERVER["REMOTE_ADDR"];

$object = new CountryFromIP();

$youridcountryname = $object->GetCountryName($ip);


esta línea es la culpable del error:

private $CountryIPDatabase = 'compartido/ip-to-country.csv';

pq a veces llamo a esta función (q está en la carpeta compartido) desde la raíz o desde otra carpeta, por lo que primero tengo una variable $path q indica si estamos en la raíz o debemos subir un nivel (../).
la idea es q cuando se llame a está función (q está en un fichero .php) se la pueda llamar indicándole el $path.

este es el error q me da cuando lo llamo desde una carpeta q no es la raíz:

Warning: file(compartido/ip-to-country.csv) [function.file]: failed to open stream: No such file or directory in /home/virtual/miweb.com/compartido/index.php on line 345

Etiquetas: clases, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.