In the first class,
sayHi() is actually an instance method which you are calling as a static method and you get away with it because
sayHi() never refers to
Static functions are associated with the class, not an instance of the class. As such,
$this is not available from a static context (
$this isn’t pointing to any object).