Autor Zpráva
Tomáš Jindra
Profil *
Ahoj, prosím o radu, mám class a potřebuji v konstruktoru volat následující metody pomocí nějakého cyklu

$this->Method1($pdo); 
$this->Method2($pdo, $dis);
$this->Method3();
$this->Method4($filter);
$this->Method5();

Vůbec netuším jak dostat příkazy do for, foreach a podobně. Poradí prosím někdo zkušený? Děkuji
Tori
Profil
Ty metody se doufám nejmenují takhle, s indexy? Když každá chce jiné parametry, tak by IMHO jakýkoli automatizovaný způsob byl značně nečitelný - nechala bych to pro přehlednost takhle. Ale možná někdo jiný vymyslí něco použitelného.
Kcko
Profil
takhle nějak?

    public function loop()
    { 
        $list = array(

            'test1' => array('A'), // metoda test1 s 1 argumentem 
            'test2' => array('A', 'B') // metoda test2 , ma 2 argumenty

        );

        foreach ($list as $k => $v)
        {
                call_user_func_array(array($this, $k), $v);
        }
    }
Tomáš Jindra
Profil *
Ano, diky moc
Joker
Profil
Tomáš Jindra:
Dotaz, není to jen přepracování jednoduché sekvence příkazů do delšího a nepřehlednějšího kódu?

Proč to nemůže být prostě sekvence?
Kcko
Profil
Joker:
Může být a nemusí. Já takhle na svém jednom webu volám moduly, na jednotlivých podstránkách (v pravém / levém sloupci webu), které jsou jsou volány statickými metodami zapoudřujícího objektu, který poté volá skutečné třídy a přislušné metody na vykreslení.
Zde to mám bez argumentů (protože je nepotřebuji, ale dají se tam jednodušše dopsat).

A přijde mi to jako celkem jednoduchý a přehledný způsob.

        $boxes = array(
                      'bilance',
                      'hallOfFame',
              'shoutBoard',
                      'whosOnline',
                      'tipovackaSmallTable',
                      //'PhotoOnHomepage',
                      //'VideoOnHomepage',
                      'RSS',
                   );
    
        foreach ($boxes as $module)
        {
            CommonModules::load($module);    
        }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0