echo "C";
    }
    public static function __callStatic($name, $arguments)
    {
        echo "c";
    }
    function __invoke($x)
    {
        echo strtolower($x);
    }
}
$obj = new MyClass();
$obj->say('Hello');
$obj('a');
$obj = null;
MyClass::say('Bye Bye');
/*
   Na linha 35 $obj = new MyClass();
       O objeto eh criado. Sempre q um objeto eh criado, __construct() eh chamado.
   Como nao temos parametros no objeto, se olhamos o que __construct faz, 
   ele nao entra no if em que verifica se ele eh diferente de null. Como eh
   null ele nao vai entrar no if.

   Na linha 36: $obj->say('Hello');
       Nao temos o method say dentro da classe MyClass(). E como MyClass nao esta
   extendendo MyBase, nao podemos confundir com o method da MyBase. Assim que 
   say eh chamado, o magic method __call eh executado. Assim, ele vai printar na tela:
   "C".

   Na linha 37: $obj('a');
       Um pouco estranha essa sintaxe. O nome que damos a isso eh "chamar um objeto