在php中使用未定义的变量或数组偏移量作为参数

在php中使用未定义的变量或数组偏移量作为参数,php,arrays,Php,Arrays,我有一个静态方法,它返回或创建一个不存在的对象。我想找到一种优雅的方法来处理将ID参数传递给对象的问题 这里的逻辑是,如果传递了一个ID,则使用该ID创建对象。如果未传递,则使用默认ID创建对象 我所拥有的是: class App { private $game_obj; public static function get_game ($arguments) { if (!isset($this->game_obj)) $this->

我有一个静态方法,它返回或创建一个不存在的对象。我想找到一种优雅的方法来处理将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的游戏对象

当我调用
App::get_game()
时,我没有得到预期的结果,即gameID为1的游戏对象。相反,我在
App::get\u 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声明保留在游戏类本身中?

您尝试过吗

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

您可以使用以下工具进行测试:

if(is_object($my_object)) {

    }

你正在传递一个标量
5
,但是你的方法期望
$arguments
是一个数组。我不知道这是否真的更优雅,但是你可以将三元操作移动到get_game static方法中,这样你上面的代码就可以了,但是当你在第5行创建游戏对象时,您可以这样做:$this->game\u obj=新游戏(isset($arguments[0])?$arguments[0]:1);