Resumo un poco, porque parece que a eulloa le cobran por palabra a no ser que sea un 'copy & paste'.
Un método solamente debería ser llamado de forma estática cuando fue declarado como tal.
En cambio un método estático puede ser llamado de forma estática tanto como desde una instancia de la clase.
Código PHP:
<?php
//error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_STRICT ^ E_NOTICE);
class Clase {
function metodo_NO_estatico() {
return "Método NO estático \n";
}
static function metodo_estatico() {
return "Método estático \n";
}
}
// echo Clase::metodo_NO_estatico(); // Esto produce un error de estándares estrictos
echo Clase::metodo_estatico();
$obj = new Clase;
echo $obj->metodo_NO_estatico();
echo $obj->metodo_estatico();
?>
Ten en cuenta que esto aplica para los métodos, los atributos es otra historia.