PHP - Direfencia entre :: y -> de instancia

 
Vista:

Direfencia entre :: y -> de instancia

Publicado por Alrows (14 intervenciones) el 29/12/2008 20:10:44
Saludos foristas, me inquieta una duda..

a la fecha yo creia que hacer

MiClase::MiMetodo era lo mismo que hacer Miclase->MiMetodo...

pero en un codigo que he encointrado cambio los 2 puntos (::) por -> y saca error.. he buscado y no escuentro la diferencia entre etos 2 ( :: ≠ -> ), si alguien la sabe o sabe de un link donde este explicado esto ... les agradeceria......

de antemano Gracias....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Direfencia entre :: y -> de instancia

Publicado por Melvin Nava (6 intervenciones) el 30/12/2008 07:02:56
El operador de resolución:: (dobles dos puntos) es un símbolo que permite elacceso a los miembros o métodos estaticos, constantes, privados, protegidos, y eliminados de una clase. Mientras que el operador -> se usa para acceder a los metodos y funciones disponibles (publicas) de una clase una vez que se ha creado una instancia de la misma.

Por ejemplo, dada la clase:

<?php
class Tester_Class {
public $var = '***Variable pública***';
private $var2 = '***Privada a imprimir***';
protected $protected = '--Variable protegida--';
private $private = '--Variable privada--';

function something() {
echo $var2;
}
}
?>

1. Instanciamos la clase, imprimimos todas las variables disponibles y accedemos un metodo:

<?php
$class = new Tester_Class();
foreach($class as $key => $value) {
print "$key => $value ";
}
$class->something(); // imprimimos una variable privada dentro Tester
?>

Esto imprime:

***variable publica***
***Privada a imprimir***

2. Pero se omiten las variables privadas, protegidas y las constantes (entre otros metodos staticos y muertos) que no se impriman directamente dentro de la clase, pero si usamos el operador de resolución:

<?php
echo Tester_Class::var;
echo Tester_Class::var2;
echo Tester_Class::protected;
echo Tester_Class::private;
?>

Te imprimirá:

***Variable pública***
***Privada a imprimir***
--Variable protegida--
--Variable privada--

De esta forma accedes a todas las variables y constantes incluyendo aquellas que son privadas y protegidas tentro del alcance de una clase, incluso sin haber creado una instancia de la clase en cuestion.

Para más información:
http://php.net/manual/es/language.oop5.paamayim-nekudotayim.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Direfencia entre :: y -> de instancia

Publicado por Alrows (14 intervenciones) el 30/12/2008 13:10:54
Muchas gracias Melvin Nava... con eso ya me da una luz de como es que funciona... a demas en el link hay mas informacion...

que buena respuesta, muy clara y detallada....

gracias nuevamente..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar