Volání funkce

Ernst
30. srp 2015 16:49 #123229
Mám ve funkci tento kód:
$den=date('w') ;
$hodina=StrFTime("%H:%M", Time());
foreach ($result as $v1) {
$v1->field_95='1';
switch ($den){
case 0 ;
if ($pole_casu[$v1->field_93] < $pole_casu[$v1->field_94]){if ($hodina>=($pole_casu[$v1->field_93]) and ($hodina<=($pole_casu[$v1->field_94]))){$v1->field_95='0';};}
else {if ($hodina>=($pole_casu[$v1->field_93]) and ($hodina>=($pole_casu[$v1->field_94]))) {$v1->field_95='0';};};

};
}

Když si ho chci dát do funkce:

$den=date('w') ;
$hodina=StrFTime("%H:%M", Time());
foreach ($result as $v1) {
mojeotevreno($v1);

function mojeotevreno(&$v1)
{
$den=date('w') ;
$hodina=StrFTime("%H:%M", Time());
$v1->field_95='1';
switch ($den){
case 0 ;
if ($pole_casu[$v1->field_93] < $pole_casu[$v1->field_94]){if ($hodina>=($pole_casu[$v1->field_93]) and ($hodina<=($pole_casu[$v1->field_94]))){$v1->field_95='0';};}
else {if ($hodina>=($pole_casu[$v1->field_93]) and ($hodina>=($pole_casu[$v1->field_94]))) {$v1->field_95='0';};};

napíše mi to:
Call to undefined function mojeotevreno()

Kde dělám chybu?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
30. srp 2015 20:23 - 30. srp 2015 20:28 #123231
Ahoj, zkus tu funkci dát mimo foreach.

např.:

function ahoj() {
echo "ahoj";
}
foreach ($x as $k => $v) {
ahoj();
}

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
31. srp 2015 00:03 #123232
i když tam vložím tento jednoduchý případ, tak to stále píše:
Fatal error: Call to undefined function ahoj()

Upravuji zakoupený modul. Nemusí být všechny funkce někde nadefinovány?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
01. zář 2015 09:05 #123261
samozřejmě v tom příkladu byla funkce mimo forearch, jen mi vypadla řádka:
$den=date('w') ;
$hodina=StrFTime("%H:%M", Time());
foreach ($result as $v1) {
mojeotevreno($v1);
}

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
01. zář 2015 13:39 #123262
No záleží v jakém místě máte ten zápis? Nemáte ho zase v objektu? Je ta funkce mojeotevreno definována jako globální funkce, metoda objektu, nebo lokální funkce uvnitř jiné funkce? Opravdu si projděte základy PHP, ta hláška znamená jednoduše že voláte funkci, kterou v tom místě PHP nezná.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
01. zář 2015 17:32 #123265
Ve třídě class FrontendModelResults extends LoveFactoryFrontendModelList
mám několik public a protected funkcí. z jedné protected funkce potřebuji zavolat jinou funkci, která vráti výsledek

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
01. zář 2015 18:37 #123266
Už jsem to pochopil. Dobrý článek je www.interval.cz/clanky/php-pro-pokrocile...s-tridami-a-objekty/

musím funkci volat FrontendModelResults::funkce();

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
01. zář 2015 21:20 #123272
Vždyť Vám říkám, naučte se základy objektového programování. To co píšete je statické volání metody. také by jste ji mohl volat $this->funkce() a kdyby jste opravdu přesně použil to co psal H13, tak to volání ahoj() by Vám taky fungovalo.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
01. zář 2015 22:11 #123275
no jo já jsem zvyklý se učit až v praxi a než se tady zeptám, tak to pár hodin sám hledám.
A navíc upravuji dost rozsáhlou komponentu, Ale čím dál víc to chápu.
Ten článek na který jsem psal odkaz je opravdu dobrý pro pochopení základních pojmů.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.