PHP函数参数:特定类的对象的阵列

问题描述 投票:11回答:4

我有一个功能,需要一个特定类的成员:

public function addPage(My_Page $page)
{
  // ...
}

我想再拍函数,它My_Page对象的数组:

public function addPages($pages)
{
  // ...
}

我需要确保$页面阵列中的每个元素是My_Page的一个实例。我能做到这一点与foreach($pages as $page)和检查instance of,但我可以采用某种函数定义指定数组必须是My_Page对象的数组?即兴发挥,这是这样的:

public function addPages(array(My_Page)) // I realize this is improper PHP...

谢谢!

php arrays function object arguments
4个回答
14
投票

不,它不可能直接做。你可以试试这个“聪明”的把戏,而不是:

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

public function addPage(My_Page $page)
{
    //
}

但我不知道这是否是值得所有的麻烦。这将是一个很好的方法,如果addPage是对自己有用。


1
投票

而不是传递对象的数组(array(My_Page))的,定义自己的类,并要求它的一个实例在你的函数:

class MyPages { ... }

public function addPages(MyPages pages)

1
投票

您还可以添加PHPDoc的注释,以提供自动在IDE

    /**
     * @param My_Page[] $pages
     */
    public function addPages(array $pages)
    {
      // ...
    }

0
投票

如果您使用的类,你可以这样做:

interface addPageInterface
{
   public function someThing();
}


class page implements addPageInterface
{
   public function someThing()
   {
      //for example: create a page
   }
}


class addPage
{
   public function __construct(addPageInterface $page)
   {
       //do some thing...

      return $page; //this will return just one page
   }
}


class addPages
{
   public function __construct(addPageInterface... $page)
   {
      //do some thing...

      return $page; //this will return an array which contains of page
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.