虽然这可能有效,但我认为这不是明智的行为。在我看来,最小意外原则适用于编程和用户界面设计。如果你$_SESSION
在你的脚本中覆盖了默认行为,那会让一些未来不得不处理你的代码的程序员感到困惑。
我认为以这种方式滥用超级全球的性质是一种黑客行为——也是一种令人不快的行为$_SESSION
。
在我看来,更好的方法是编写一个带有静态方法的类来获取和设置您的数据:
class Session {
public function get($key, $defaultValue = null) {
// do some code to get the value for $key, and return $defaultValue if there is none
}
public function set($key, $value) {
// do some code to set $key
}
}
然后,您可以使用Session::get('someKey')
orSession::get('someKey', 'default')
和访问它Session::set('someKey', 'someValue')
。
由于类本质上是全局的,因此您可以从代码中的任何位置访问它。它不那么令人惊讶,并且会导致更少的混乱。
如果您出于某种设计原因确实想使用对象方法,那么最好实现单例模式。