what is the "::" notation in php used for?

You can use it to reference static methods from a class without having to instantiate it.

For example:

class myClass {

    public static function staticFunction(){
        //...
    }

    public function otherFunction(){
        //...
    }

}

Here you could use myClass::staticFunction() outside of the class, but you would have to create a new myClass object before using otherFunction() in the same way.


::, the scope resolution operator, is used for referencing static members and constants of a class. It is also used to reference a superclass's constructor. Here is some code illustrating several different uses of the scope resolution operator:

<?php
class A {
    const BAR = 1;
    public static $foo = 2;
    private $silly;

    public function __construct() {
         $this->silly = self::BAR;
    }
}

class B extends A {
    public function __construct() {
        parent::__construct();
    }

    public static function getStuff() {
         return 'this is tiring stuff.';
    }
}

echo A::BAR;
echo A::$foo;
echo B::getStuff();
?>

A little trivia: The scope resolution operator is also called "paamayim nekudotayim", which means "two dots twice" in hebrew.

& in the context of your example isn't doing anything useful if you are using php 5 or greater and should be removed. In php 4, this used to be necessary in order to make sure a copy of the returned object wasn't being used. In php 5 object copies are not created unless clone is called. And so & is not needed. There is still one case where & is still useful in php 5: When you are iterating over the elements of an array and modifying the values, you must use the & operator to affect the elements of the array.

Tags:

Php