self:: Isn't inheritance-aware and always refers to the class it is being executed in. If you are using php5.3+ you might try static::TEST as static:: is inheritance-aware.

The difference is that static:: uses "late static binding". Find more information here:

Here's a simple test script I wrote:


class One
    const TEST = "test1";

    function test() { echo static::TEST; }
class Two extends One
    const TEST = "test2";

$c = new Two();