我有一个静态方法,如果它不存在则返回或创建一个对象。我想找到一种优雅的方式来处理将 ID 参数传递给对象。
这里的逻辑是,如果传递了一个 ID,则使用该 ID 创建对象。如果不是,则使用默认 ID 创建它。
我所拥有的是:
class App {
private $game_obj;
public static function get_game ($arguments) {
if (!isset($this->game_obj))
$this->game_obj = new Game ($arguments[0]);
return $this->game_obj;
}
}
class Game {
private $gameID;
public function __construct ($id=1) {
$this=>gameID = $id;
/* other code */
}
}
当我打电话时,App::get_game(5)
我得到了我期望的结果。一个 gameID 为 5 的 Game 对象。
当我打电话时,App::get_game()
我没有得到我期望的结果,这将是一个 gameID 为 1 的 Game 对象。相反,我在App::get_game ()
.
我更新App::get_game()
如下,但似乎特别不雅。我更愿意在类定义中定义默认 ID。
class App {
private $game_obj;
public static function get_game ($arguments) {
if (!isset($this->game_obj)) {
$default_id = 1; // I don't like having this here
$id = isset ($arguments[0] ? $arguments[0] : $default_id;
$this->game_obj = new Game ($id);
}
return $this->game_obj;
}
}
有没有更简单/更好/更优雅的方式来处理这个问题?理想情况下,将我的默认 ID 声明保留在 Game 类本身中?