Micha wrote:
> Hi,
> I would like to know the exact difference between -> and ::.
> I know that I can use as class directcly by using :: but I still don't
> know the exact meaning....
> So why do they use in Example 8 on
> http://www.php.net/source.php?url=/zend2_example.phps $this->id =
> self::$id++ and not self::id++ or $this->id++ ... ?

Some OO languages (notably smalltalk does it) name a difference between 
Class methods (and variables) and instance variables. What is "class" 
can be used and executed even when lacking any actual instance of the 

PHP has not fully implemented this model (we miss class variables, that 
is, a value that is common and general to all instances of a given 
class) but does have a bit of it.

So :: is mainly used to execute a method without needing to create an 
instance for it. If your class "Printer" has a method 
"changeCartridge()" you can use Printer::changeCartridge() without the 
need of any prior
$myPrinter = new Printer()

That is, you use a class as a common library. This has a limitation in 
that you cannot dinamically say $myclass::changeCartridge(), while you 
can say:

$a = "printer";
$p = new $a();

The operator :: cannot address internal variables directly like -> does 
for the simple reason that no variable exists, in the absence of the 
instance. Which is why you declare $ signs. :: operator is also handy 
when you need to call an overriden method. By saying parent::myMethod() 
you call your parent's method, while $this->myMethod would execute the 
locally redeclared code.

-> operator can be read (maybe it must be read, I don't know) as 
"belongs to". So "this->a" means "the $a that belongs to $this" (the 
object in which you are executing class code). -> obviously only applies 
to single instances and not to classes.

Hope it was clear.



LoRd, CaN yOu HeAr Me, LiKe I'm HeArInG yOu?
lOrD i'M sHiNiNg...
YoU kNoW I AlMoSt LoSt My MiNd, BuT nOw I'm HoMe AnD fReE
tHe TeSt, YeS iT iS
ThE tEsT, yEs It Is
tHe TeSt, YeS iT iS
ThE tEsT, yEs It Is.......

PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to