Just a personal note really. I always confuse the two. For the record, in most cases, you’d want to take advantage of late static bindings from PHP 5.3, use static:: over self::, unless you’re really sure you want the class it was actually written in, in which case, use self.
<?php
class A
{
public static $name = 'a';
public static function getSelfName()
{
return self::$name;
}
public static function getStaticName()
{
return static::$name;
}
}
class B extends A
{
public static $name = 'b';
}
var_dump ( A::getSelfName() ); // 'a'
var_dump ( A::getStaticName() ); // 'a'
var_dump ( B::getSelfName() ); // 'a'
var_dump ( B::getStaticName() ); // 'b'



