While including within class method I have $gCms and $config available as "just normal not global" variables.
No. If you include the CMSMS "include.php" inside a class method or function in your own script, the script just dies with an fatal error... It's a problem of the CMSMS core coding style that this not work.
These variables are not added to $_GLOBALS because they are set within method. And all functions or methods referencing to "global" fail.
That's part of the problem inside the CMSMS core.
BTW: It'S $GLOBALS and not $_GLOBALS.
I can only add variables to $_GLOBALS by setting them outside of class.
You can add vars to $GLOBALS from inside a class. But while also using references, you must make sure, that your global var (object) is really set in the global scope and not in the scope of that class method /function. Especially if other methodes/functions are refering to this var with "global". (and CMSMS is not doiing this).
That's the reason, why you must include the 'incude.php' in the global scope of your script. Because only then, $gCms, $config,... (and others) are really in the global scope and can be used from other methods/functions in the CMSMS core or your script.