Foros del Web » Programando para Internet » PHP »

Usar conexión dentro de una función sin pasarla como parametro....

Estas en el tema de Usar conexión dentro de una función sin pasarla como parametro.... en el foro de PHP en Foros del Web. Hola amigos, A ver, una consultilla. Tengo la típica función "connection()" con la cual abro una conexión con el MySQL. Pero claro... cuando hago una ...
  #1 (permalink)  
Antiguo 17/07/2008, 05:19
Avatar de markshock  
Fecha de Ingreso: abril-2004
Ubicación: Allí, al fondo a la izqui
Mensajes: 316
Antigüedad: 20 años
Puntos: 0
Usar conexión dentro de una función sin pasarla como parametro....

Hola amigos,

A ver, una consultilla.

Tengo la típica función "connection()" con la cual abro una conexión con el MySQL. Pero claro... cuando hago una función y necesito usar la conexión dentro de dicha función, se la he de pasar por parametro, si no.. no puedo hacer ninguna consulta.

Ejemplo.

Código PHP:
$link connection();


function 
verpedido($idp$conn){
bla... bla... bla....
bla... bla... bla....
bla... bla... bla....
bla... bla... bla....

para usarla

Código PHP:
verpedido(1,$link); 
De que manera podría evitarme esto? ando un tanto pez con el tema de las classes... quiza una clase me lo solucione...

Gracias y un saludo.
__________________
Señoooraaaa!! Que camisetas!!!

"Hay 10 tipos de personas, las que piensan en binario y las que no"
_________________________________
  #2 (permalink)  
Antiguo 17/07/2008, 05:32
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 11 meses
Puntos: 6
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

Si utilizas PHP5, mírate el patrón singleton. Si no, lo puedes solucionar con variables globales.
  #3 (permalink)  
Antiguo 17/07/2008, 06:17
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

¿Pero por qué usar una variable global pudiendo usar un paso por parámetro como ya haces? :S
  #4 (permalink)  
Antiguo 17/07/2008, 06:43
Avatar de markshock  
Fecha de Ingreso: abril-2004
Ubicación: Allí, al fondo a la izqui
Mensajes: 316
Antigüedad: 20 años
Puntos: 0
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

Cita:
Iniciado por Kamae Ver Mensaje
¿Pero por qué usar una variable global pudiendo usar un paso por parámetro como ya haces? :S
el tema no es usar una variable global, para usar una variable global lo dejo como estoy...

quizas, con alguna clase... no se.. algo que pueda implementar en las funciones, y que no tenga que andar pasando como parametro la conexión...

Mas que nada es por aburrimiento de tener que estar pasando la variable de aqui para alli.. etc... xD xD

Pero veo que es el mejor modo, o de los mejores... no?
__________________
Señoooraaaa!! Que camisetas!!!

"Hay 10 tipos de personas, las que piensan en binario y las que no"
_________________________________
  #5 (permalink)  
Antiguo 17/07/2008, 07:07
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

Código PHP:

function verpedido($idp){
$link connection();
bla... bla... bla....
bla... bla... bla....
bla... bla... bla....
bla... bla... bla....



__________________
My path is lit by my own fire, I only go where I desire
  #6 (permalink)  
Antiguo 17/07/2008, 07:11
Avatar de markshock  
Fecha de Ingreso: abril-2004
Ubicación: Allí, al fondo a la izqui
Mensajes: 316
Antigüedad: 20 años
Puntos: 0
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

Cita:
Iniciado por foreverOdd Ver Mensaje
Código PHP:

function verpedido($idp){
$link connection();
bla... bla... bla....
bla... bla... bla....
bla... bla... bla....
bla... bla... bla....



ESTO NO ES VIABLE... dado que es mas costoso de mantener... si hubiera que cambiar el nombre de la función serían horas de replace....
__________________
Señoooraaaa!! Que camisetas!!!

"Hay 10 tipos de personas, las que piensan en binario y las que no"
_________________________________
  #7 (permalink)  
Antiguo 17/07/2008, 07:17
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

cambiar el nombre de la funcion?????

eso es lo que NO ES VIABLE
__________________
My path is lit by my own fire, I only go where I desire
  #8 (permalink)  
Antiguo 17/07/2008, 07:26
Avatar de markshock  
Fecha de Ingreso: abril-2004
Ubicación: Allí, al fondo a la izqui
Mensajes: 316
Antigüedad: 20 años
Puntos: 0
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

Cita:
Iniciado por foreverOdd Ver Mensaje
cambiar el nombre de la funcion?????

eso es lo que NO ES VIABLE
hombre... vamos a ver... yo, veo mas mantenible una variable $link = connections(); por eso de centralizar... y pasarla por variable... que no incluir esa linea dentro de todas las funciones...

Si por cualquier cosa esa funcion cambia de nombre o hay que pasarle una variable... hacer el cambio es mas fácil del otro modo que no el de incluir la linea en todas las funciones...

digo yo...
__________________
Señoooraaaa!! Que camisetas!!!

"Hay 10 tipos de personas, las que piensan en binario y las que no"
_________________________________
  #9 (permalink)  
Antiguo 17/07/2008, 07:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

yo la verdad, si veo viable que no cambie el nombre de la función... así como, que no cambie tu lógica primaria... eso es lo fundamental

Código PHP:
function &conex()
{
  static 
$link;
  if (empty(
$link))
  {
    
$link=mysql_connect(...);
  }
  return 
$link;
}


function 
x_consulta()
{
  
// ....
}

function 
patos()
{
  
$sql 'SELECT * FROM `patos`';
  
$qmysql_query($sqlconex());
  return 
mysql_fetch_assoc($q); // OK

por eso, como programadores siempre debemos elegir buenos nombres tan genéricos como va a serlo nuestro programa...

si piensas que un nombre nuevo se ve mejor, es mas bonito, y lo haces cada 5mins. pues ese si es el problema, eso no es viable....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 17/07/2008, 08:03
Avatar de markshock  
Fecha de Ingreso: abril-2004
Ubicación: Allí, al fondo a la izqui
Mensajes: 316
Antigüedad: 20 años
Puntos: 0
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

Cita:
Iniciado por pateketrueke Ver Mensaje
yo la verdad, si veo viable que no cambie el nombre de la función... así como, que no cambie tu lógica primaria... eso es lo fundamental

Código PHP:
function &conex()
{
  static 
$link;
  if (empty(
$link))
  {
    
$link=mysql_connect(...);
  }
  return 
$link;
}


function 
x_consulta()
{
  
// ....
}

function 
patos()
{
  
$sql 'SELECT * FROM `patos`';
  
$qmysql_query($sqlconex());
  return 
mysql_fetch_assoc($q); // OK

por eso, como programadores siempre debemos elegir buenos nombres tan genéricos como va a serlo nuestro programa...

si piensas que un nombre nuevo se ve mejor, es mas bonito, y lo haces cada 5mins. pues ese si es el problema, eso no es viable....
perdona mi ignorancia... pero..

&conex()

el &, es para....?
__________________
Señoooraaaa!! Que camisetas!!!

"Hay 10 tipos de personas, las que piensan en binario y las que no"
_________________________________
  #11 (permalink)  
Antiguo 17/07/2008, 08:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

se le dice "paso de variables por referencia" y a diferencia de usar una variable copiada, se usa la original...

Referencia: http://www.php.net/language.references.pass
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 17/07/2008, 08:18
Avatar de markshock  
Fecha de Ingreso: abril-2004
Ubicación: Allí, al fondo a la izqui
Mensajes: 316
Antigüedad: 20 años
Puntos: 0
Respuesta: Usar conexión dentro de una función sin pasarla como parametro....

Cita:
Iniciado por pateketrueke Ver Mensaje
se le dice "paso de variables por referencia" y a diferencia de usar una variable copiada, se usa la original...

Referencia: http://www.php.net/language.references.pass
mmm.... vaya así que de este modo me ahorro de tener que incluirla en todas las funciones... esta bien el apaño...

gracias por la aclaración, era lo que necesitaba....;)
__________________
Señoooraaaa!! Que camisetas!!!

"Hay 10 tipos de personas, las que piensan en binario y las que no"
_________________________________
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 02:55.