2011-06-29 14 views
8

Mam funkcję, która pobiera członka określonej klasie:PHP Argumenty funkcji: Array obiektów danej klasy

chciałbym zrobić kolejną funkcję, która pobiera tablicę obiektów My_Page:

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

Muszę się upewnić, że każdy element tablicy $ pages jest instancją My_Page. Mogę to zrobić z foreach($pages as $page) i sprawdzić instance of, ale czy mogę w jakiś sposób określić w definicji funkcji, że tablica ma być tablicą obiektów My_Page? Improwizowanie, coś w stylu:

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

Dzięki!

Odpowiedz

8

Nie, nie można tego zrobić bezpośrednio. Zamiast tego możesz spróbować tego "sprytnego" triku:

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

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

Ale nie jestem pewien, czy warto wszystkich kłopotów. Byłoby to dobrym podejściem, jeśli samo jest przydatne.

0

Zamiast przechodzącą tablicę obiektów (array(My_Page)), zdefiniować własną klasę i wymagają instancję go w funkcję:

class MyPages { ... } 

public function addPages(MyPages pages)