// Within class A
self::foo();
static::foo();
// Without class A
A::foo()
//// Within class A
A.foo(); // self
this.constructor.foo(); // static
// Without class A
A.foo();// Within class A
self::foo();
static::foo();
// Without class A
A::foo()
//// Within class A
A.foo(); // self
this.constructor.foo(); // static
// Without class A
A.foo();