I have a function that takes a member of a particular class:
public function addPage(My_Page $page)
{
// ...
}
I\'d like to make another
if you use the class, you can do some thing like this:
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
}
}
You can also add PhpDoc comment to get autocomplete in IDE
/**
* @param My_Page[] $pages
*/
public function addPages(array $pages)
{
// ...
}
No, it's not possible to do directly. You might try this "clever" trick instead:
public function addPages(array $pages)
{
foreach($pages as $page) addPage($page);
}
public function addPage(My_Page $page)
{
//
}
But I 'm not sure if it's worth all the trouble. It would be a good approach if addPage
is useful on its own.
Instead of passing an array of objects (array(My_Page)
), define your own class and require an instance of it in your function:
class MyPages { ... }
public function addPages(MyPages pages)