0

我有一个静态方法,如果它不存在则返回或创建一个对象。我想找到一种优雅的方式来处理将 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 类本身中?

4

2 回答 2

0

你试过了吗

public static function get_game ($arguments=null) {
if($arguments==null) //etc..

?

于 2012-09-29T21:06:22.473 回答
0

你可以测试:

if(is_object($my_object)) {

    }
于 2012-09-29T21:08:47.737 回答