Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Clase refiere a otra Clase

Estas en el tema de Clase refiere a otra Clase en el foro de PHP en Foros del Web. Hola a todos: Tratando de aplicar a POO a PHP, tengo el siguiente. Tengo un conjunto de clases. Sucede que en una determinada clase, hago ...
  #1 (permalink)  
Antiguo 29/11/2013, 07:40
 
Fecha de Ingreso: agosto-2013
Ubicación: Valparaíso
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Clase refiere a otra Clase

Hola a todos:

Tratando de aplicar a POO a PHP, tengo el siguiente.

Tengo un conjunto de clases.

Sucede que en una determinada clase, hago referencia a otra clase.

Lo hago de esta forma:

$link = new Enlace();

Y en el navegador me sale este error:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE in ...

¿Se puede hacer una referencia así en PHP, como sucede en lenguajes tal como Java, VB, C#?

Gracias.
  #2 (permalink)  
Antiguo 29/11/2013, 07:43
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Clase refiere a otra Clase

Sí. Pero si no las incluyes, no verás nada. Y para que incluir mil clases en cada fichero no se haga horrible:
http://www.php.net/manual/es/language.oop5.autoload.php
  #3 (permalink)  
Antiguo 29/11/2013, 07:48
 
Fecha de Ingreso: agosto-2013
Ubicación: Valparaíso
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Clase refiere a otra Clase

Hola Marlanga.

Gracias por responder.

Bueno, sí.

Agregué la clase.

Así y todo no funciona.

Lo hice así:

require_once('enlace.php');
  #4 (permalink)  
Antiguo 29/11/2013, 07:58
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Clase refiere a otra Clase

Pues algo estarás haciendo mal. Y como no enseñas nada, nadie puede ver qué. El mentalista usó sus poderes para ganar la lotería y hace años que no aparece por aquí.
  #5 (permalink)  
Antiguo 29/11/2013, 08:04
 
Fecha de Ingreso: agosto-2013
Ubicación: Valparaíso
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Clase refiere a otra Clase

Estás son los archivos: consulta.php y enlace.php.

Clase Consulta:

<?PHP
require_once("enlace.php");

class Consulta
{
private $link = new Enlace();

private $nombreBaseProyecto = "nombreBase";

function __construct()
{
}

function __destruct()
{
unset($this);
}

private function Open()
{
if(
mysql_select_db(
mysql_connect(
$this->link->getVariable("host"),
$this->link->getVariable("user"),
$this->link->getVariable("password")
),
$this->nombreBaseProyecto
)
)
{
return true;
}
else
{
// Detallar en el archivo que en este método ha habido un problema.
return false;
}
}

private function Close()
{
if(mysql_close())
{
return true;
}
else
{
// Detallar en el archivo que en este método ha habido un problema.
return false;
}
}

public function getSiguienteReserva()
{
$siguienteReserva = 0;
$queryString = "SELECT COUNT(*) FROM NOMBRE_TABLA";
$queryExecute = mysql_query($queryString);

if(Open())
{
if($queryExecute)
{
$queryResult = mysql_fetch_row($queryExecute);
$queryRowNumber = mysql_num_rows($queryExecute);

if($queryRowNumber > 0)
{
$siguienteReserva = $queryResult[0] + 1;
Close();
}
else
{
// Detallar en el archivo que la consulta se hizo pero no arrojo resultados.
}
}
else
{
// Detallar en el archivo que en este método no se pudo realizar la consulta.
}
}
else
{
// Detallar en el archivo que no se pudo hacer conexión.
}

return $siguienteReserva;
}
}
?>

Clase Enlace:

<?PHP
class Enlace
{
protected $host = "1.1.1.1";
protected $user = "user";
protected $password = "pass";

function __construct()
{
}

function __destruct()
{
}

public getVariable($nombreVariable)
{
if($nombreVariable == "host")
{
return $this->host;
}
else if($nombreVariable == "user")
{
return $this->user;
}
else if($nombreVariable == "password")
{
return $this->password;
}
}
}
?>
  #6 (permalink)  
Antiguo 29/11/2013, 08:29
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Clase refiere a otra Clase

Bien, hemos pasado de cuestionar el paradigma de orientación de objetos con PHP a un simple problema de no conocer la sintaxis del lenguaje que se usa ni tampoco depurar el código observando el error y la línea donde ocurre la desgracia. Vamos progresando.

Aunque no es obligatorio, si no pones el ámbito a todos los atirbutos y métodos de todas las clases (publico, privado, protegido) te azotaré con un palo. Tampoco declaras correctamente los métodos. No usas el constructor de las clases para inicializar atributos. El get ese generalista que has puesto para recuperar atributos de la clase enlace, es un pecado. La ley informática obliga a poner getter, y si lo necesitas, setter, de los atributos independientemente. Uno para cada uno.

¿Dónde te enseñaron a programar, en una universidad privada católica?
  #7 (permalink)  
Antiguo 29/11/2013, 08:50
 
Fecha de Ingreso: agosto-2013
Ubicación: Valparaíso
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Clase refiere a otra Clase

Ok. Consideré lo que dijiste y ahora funciona.

Me he topado con gente muy desagradable y tu. De todas formas, agradezco el comentario, porque ahora, siguiendo tus sabios consejos, no tengo problemas.

Puedes volver al olimpo.

PD: En ninguna parte me enseñaron a programar. Porque no soy programador. Aprendo de forma autodidacta.
  #8 (permalink)  
Antiguo 29/11/2013, 08:59
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Clase refiere a otra Clase

Bueno, ahora para no toparte con gente tan desagradable como yo, intentarás resolver tus futuros problemas con más ahínco, lo que a su vez conseguirá que aprendas más (pues se aprende mucho mas resolviendo uno sus problemas, que preguntando, porque el esfuerzo que supone romprese la cabeza probando alternativas hará que se te graben a fuego).
Así que mi total incapacidad para tener don de gentes unida a la poca eficacia con la que transmito sarcasmos, es una doble victoria.

Última edición por marlanga; 29/11/2013 a las 09:05
  #9 (permalink)  
Antiguo 29/11/2013, 09:31
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Clase refiere a otra Clase

Cita:
Iniciado por marlanga Ver Mensaje

Aunque no es obligatorio, si no pones el ámbito a todos los atirbutos y métodos de todas las clases (publico, privado, protegido) te azotaré con un palo.
¿Dónde te enseñaron a programar, en una universidad privada católica?
Eso es herejia, quemenlo en la hoguera!!!... jeje que risa.

Cita:
Iniciado por Budokan1987 Ver Mensaje
Ok. Consideré lo que dijiste y ahora funciona.

Me he topado con gente muy desagradable y tu. De todas formas, agradezco el comentario, porque ahora, siguiendo tus sabios consejos, no tengo problemas.

Puedes volver al olimpo.
No te lo tomes personal, somos personas y algunos te van a contestar lo que es, y otros serán un poco mas mordaces, pero es natural en un foro. Que esto no te desanime a seguir preguntando.

Cita:
PD: En ninguna parte me enseñaron a programar. Porque no soy programador. Aprendo de forma autodidacta.
Si vas a usar POO, lo primero que tienes que hacer es estudiar las bases de este paradigma sin un lenguaje, para que sepas la razón por la cual te aconsejaron algunas cosas mas arriba y sobre todo para que comiences a pensar en termino de objetos esa visión te facilitara muchas cosas.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: clase, refiere, variable
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 00:12.