PHP函数参数:特定类的对象数组

Nik*_*mov 12 php arrays arguments function object

我有一个函数,它接受一个特定类的成员:

public function addPage(My_Page $page)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

我想创建另一个带有My_Page对象数组的函数:

public function addPages($pages)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

我需要确保$ pages数组的每个元素都是My_Page的一个实例.我可以用foreach($pages as $page)和检查instance of,但我可以在函数定义中以某种方式指定数组必须是My_Page对象的数组吗?即兴创作,如:

public function addPages(array(My_Page)) // I realize this is improper PHP...
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jon*_*Jon 14

不,不可能直接做.您可以尝试这种"聪明"的技巧:

public function addPages(array $pages)
{
    foreach($pages as $page) addPage($page);
}

public function addPage(My_Page $page)
{
    //
}
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否值得所有的麻烦.如果addPage它本身有用,那将是一个很好的方法.


bar*_*hin 10

您还可以添加 PhpDoc 注释以在 IDE 中自动完成

    /**
     * @param My_Page[] $pages
     */
    public function addPages(array $pages)
    {
      // ...
    }
Run Code Online (Sandbox Code Playgroud)