¿A qué se refiere/significa "- > " en PHP? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

¿A qué se refiere -> en PHP?

En lo siguiente de WordPress, sé lo que hace la instrucción if, por ejemplo, pero ¿qué hace la ->?

<?php if ( $wp_query->max_num_pages > 1 ) : ?>   
Author: Peter Mortensen, 2010-12-21

12 answers

-> accede a un miembro de un objeto. Así que $wp_query->max_num_pages está accediendo al campo max_num_pages en el objeto $wp_query. Se puede usar para acceder a un método o un campo perteneciente a un objeto, y si está familiarizado con C++ o Java, es equivalente a myObject.myField

 29
Author: Rafe Kettler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-21 18:27:19

En primer lugar usted debe entender lo siguiente. En PHP y muchos otros lenguajes tenemos los siguientes tipos de entidades:

  • Variables
  • Arrays
  • Objetos

El -> le permite acceder a un método o valor dentro de un objeto, de la misma manera que [] le permite acceder a valores dentro de un array.

Una clase es como una caja, y dentro de esa caja hay una gran cantidad de elementos, y cada elemento puede interactuar entre sí, ya que están dentro de la la misma caja.

Por ejemplo:

class Box
{
    function firstItem()
    {

    }


    function secondItem()
    {

    }
}

Lo anterior es lo que llamamos una clase. Es básicamente una pieza estructurada de código que realmente no hace nada hasta que se convierte en un objeto.

El objeto se crea usando la palabra clave new, que crea una instancia de una clase y crea un objeto a partir de ella.

$box = new Box;

Ahora el anterior $box, que es un objeto creado a partir de la clase Box, tiene métodos dentro, como firstItem().

Estas son como funciones aparte de dentro de ellos tenemos otra variable llamada $this y esta se usa para acceder a otros métodos dentro de ese objeto.

Ahora para acceder a los métodos desde fuera de los objetos tienes que usar el operador descrito en tu pregunta.

$box->firstItem();

El operador -> le permitirá ejecutar el método desde la variable $box.

 23
Author: RobertPitt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-01 19:29:15

Es como el punto (.) en JavaScript y Java. Es solo un simple operador de acceso.

 5
Author: dkinzer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-01 19:26:23

-> es el que se usa para acceder a métodos y atributos de un objeto. Vea el manual de PHP sobre clases y objetos.

 4
Author: Andrew Sledge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-21 18:27:16

Accede a un miembro del objeto a la izquierda con el nombre a la derecha.

 3
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-21 18:26:29

Accede al miembro del objeto; obj obj->prop accede a la propiedad "prop" de cualquier objeto que esté en la variable obj obj.

En muchos otros lenguajes de programación, se usa un punto para este propósito: obj.prop u obj.method (), por ejemplo.

 3
Author: Don Jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-21 18:28:34

Es como PHP maneja los objetos. Esencialmente, $wp_query es un objeto que tiene métodos (funciones) y atributos a los que se puede acceder a través de los caracteres ->.

PHP no comenzó con objetos, por lo que ahora lo ve como una especie de ocurrencia tardía. Me parece que -> es una forma desordenada de manejarlo, en comparación con Ruby, que se construyó con objetos de la fundación.

Puedes encontrar más en: http://php.net/manual/en/language.oop5.php

 2
Author: Joshua Pinter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-21 18:30:25

Esto es muy simple de entender.

En PHP usamos -> para acceder a un método/propiedad definida dentro de una clase.

Así que en su caso (max wp_query->max_num_pages), está intentando obtener el valor de max_num_pages que es una variable de la clase w wp_query.

Information wp_query object information defining the current request, and then determines wp_query determines what type of query it's dealing with (possibly a category archive, dated archive, feed, or search), and fetches the requested post. Conserva una gran cantidad de información sobre la solicitud, que se puede extraer en una fecha posterior.

 1
Author: Sudharshan Ramasubramaniam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-16 01:28:44
<?php
class Main{
 private $name = 'My Name is Febri.<br/>';
 private function print_name(){
  echo $this -> name;
 }
}

class Descend extends Main{
 function print(){
  $this -> print_name();
 }
}

$try = new Descend;
$try -> print();
echo $try -> name;
?>

Del ejemplo anterior, no podemos llamar a una función que sea un método privado print_name. Además, tampoco podemos llamar a la variable name que se establece como propiedad privada.

 0
Author: Betta Picta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-21 14:13:58

-> se utiliza básicamente para acceder a un archivo de un objeto. Analogioous a atributos en Java.

Por ejemplo.

class Student {
String name;
int rollno;
}

Student.name accede al nombre de un objeto de estudiante dado.

 0
Author: user2120239,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-05 11:40:37

Use -> para acceder a campos, métodos en un objeto, es paralelo a [] en variables de matriz ($array['field'] es $object->field). En WP lo usarás en $post por ejemplo, ya que es un objeto.

 0
Author: Naty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-29 19:54:44

$object->property se utiliza para acceder a la propiedad de cualquier objeto.

 0
Author: Arsalan Azhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-01 19:29:48