self กับ $this ต่างกันตรงที่ $this จะหมายถึง object ที่ใช้อยู่ตอนนั้น แต่ self จะหมายถึง class ที่ใช้อยู่ตอนนั้น หรือ ก็คือ $this จะใช้กับอะไรก็ตามที่ไม่ใช่ static แต่ self กับอะไรก็ตามที่เป็น static นั้นเอง เช่น

class okito {
public static $foo = “foo : “;
var $bar = “bar : “;

function __construct() {
$this->bar .= “Hello<br />”;
self::$foo .= “Hi<br />”;
}

public static function staticHello() {
echo self::$foo;
}

function nonStaticHello() {
echo $this->bar;
}

function say() {
$this->nonStaticHello();
self::staticHello();
}
}

$okito = new okito();
$okito->say();

ผลลัพธ์

Hello<br />
Hi<br />