在您的示例中,目前没有区别。如果有相同的对象,则得到相同的对象。试试看:
global $current_screen;
$current_screen->foo = 1;
$screen = get_current_screen();
$screen->foo = 2;
echo \'$current_screen->foo: \' . $current_screen->foo; // 2!
原因很简单:在PHP中,对象不是作为副本传递的。
But: 全局变量非常糟糕,因为每个人都可以随时更改它们。在遥远的某天,WordPress可能会反对这个全局变量。如果您使用函数包装器来获取对象,那么应该可以。否则,您的代码可能会引起注意。
并且总是检查你是否真的得到了一个物体。$current_screen->post_type
可能不存在。