2011-06-29 19 views
8

tengo una función que toma un miembro de una clase particular:PHP Argumentos de función: array de objetos de una clase específica

me gustaría hacer otra función que toma una matriz de objetos My_Page:

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

Necesito asegurarme de que cada elemento de $ pages array es una instancia de My_Page. Podría hacerlo con foreach($pages as $page) y verificar instance of, pero ¿puedo especificar de algún modo en la definición de la función que la matriz debe ser una matriz de objetos My_Page? Improvisando, algo así como:

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

Gracias!

Respuesta

8

No, no es posible hacerlo directamente. Usted puede tratar este truco "inteligente" en su lugar:

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

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

Pero no estoy seguro de si vale la pena todo el problema. Sería un buen enfoque si addPage es útil por sí mismo.

0

En lugar de pasar una matriz de objetos (array(My_Page)), definir su propia clase y requieren una instancia de ella en su función:

class MyPages { ... } 

public function addPages(MyPages pages) 
Cuestiones relacionadas