vertrigo, es facil de entender mira
 
cuando tu haces $obj=
new Objeto(); estas creando una instancia de la clase y en ella 
$this es la referencia del mismo dentro del objeto, ademas necesariamente para usar new vas a necesitar la funcion constructora ya sea utilizando __construct() o el mismo nombre de la calse en una funcion, ahora si tu usas
$obj=Objeto::algunMetodo(); ahora no estas creando ninguna instancia, es como si el Objeto::algunMetodo() fuera una simple funcion, y como no se creo la isntancia dentro del objeto no existe 
$this y la unica forma de moverse dentro es usando 
self o el mismo nombre de la 
clase   Código PHP:
    class A  {
public unavariable='';
public function __construct(){$this->unavariable='inicializado en constructor';}
public static function algunMetodo(){self::$unavariable='inicializado en algunmetodo';}
public function mostrarDatos(){echo (isset($this))?$this->unavariable:self::$unavariable;}
} 
    
  entonces si tu haces 
$o=new A(); //crea instancia y asigna valor
$o->mostrarDatos(); // imprime incializado en constructor 
pero si tu haces 
A::algunMetodo(); //asigna el valor 
A::mostrarDatos(); //imprime inicializado en algunmetodo 
espero se entienda un poco mejor
saludos