$GLOBALS 不定义变量,只是说明某变量是全局变量,那个变量是其它地方定义了的。如果在函数里面不使用$GLOBALS什么的变量都是局部变量,只有本函数内有效。
define定义的常量其实也没有定义变量(分配内存),这个东西类似C语言的#define、PASCAL语言的const,本质上是宏。
static定义的静态变量和PASCAL语言的静态变量概念意义,本质是局部变量,但是不在栈里面分配,也就是每次调用这个子程序的时候,变量的值是相同的。普通的局部变量是分配在栈里面的,每次访问子程序都是新分配的内存。
const只在类里面使用。