Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: ZHOSS-9 en 22 Diciembre 2011, 00:14 am



Título: Duda con un par de elementos de la sintaxis.
Publicado por: ZHOSS-9 en 22 Diciembre 2011, 00:14 am
Buenas, estoy aprendiendo PHP, y ojeando códigos he visto cosas que no entiendo muy bien para que sirven. No pido una explicación detallada tampoco si no tenéis demasiadas ganas, pero si  me podéis decir el nombre para poder buscar info en la web de PHP me vendría muy bien.

La primera es esta

Código
  1. if (strpos($url, '?') !== false)
  2. {
  3. $url .= '&' . $yrya->session->vars['sessionurl'];
  4. }

¿Qué hacen los . y los ->?
Los remarco para que veáis a los que me refiero: $url .= '&amp;' //> este punto //>. $yrya->session->vars['sessionurl']; <// y esas -> en negrita <//

Código
  1. ($hook = yryaHook::fetch_hook('login_strikes')) ? eval($hook) : false;

No entiendo esta sintaxis, la verdad.. ¿Por qué están separados con :: y con :?
¿Qué hace el interrogante '?' por ahi en medio? ¿Y de que sirve encerrar entre parentesis desde $hook hasta strikes')?


Muchas gracias por adelantado. La verdad es que saber esto me permitirá avanzar muchísimo.


Título: Re: Duda con un par de elementos de la sintaxis.
Publicado por: madpitbull_99 en 22 Diciembre 2011, 00:37 am
Código
  1. $yrya->session->vars['sessionurl'];

El signo -> es el operador this, sirve para la programación orientada  a objetos en PHP. Se usa para acceder a métodos y propiedades de un objeto.

El operador . (punto) sirve para concatenar cadenas. Ejemplo:

Código
  1. $nombre = "mp_99";
  2. $var = "Hola " . $nombre . " !!!";


Código
  1. ($hook = yryaHook::fetch_hook('login_strikes')) ? eval($hook) : false;

El operador dos puntos (::) sirve para acceder a métodos estáticos de una clase.

El signo interrogación forma parte de lo que se llaman "operadores ternarios". Es cómo una especie de if-else pero reducidos.


Pregunta si algo no te ha quedado claro :)


Título: Re: Duda con un par de elementos de la sintaxis.
Publicado por: ZHOSS-9 en 22 Diciembre 2011, 00:45 am
Ya lo voy pillando. Perfecto, muchas gracias madpitbull!
Voy a empezar a mirarme entonces la programación orientada a objetos, las clases (que esto ya estaba a punto de mirármelo) y los operadores ternarios, seguro que encuentro bastantes cosas.

De todas formas con lo que me has explicado aunque haya sido breve me has aclarado bastantes cosas, o por lo menos me imagino por lógica el funcionamiento.

 Un saludo ^^