Přihlásit se

Volání funkce

30. srp 2015 16:49 #123229
Volání funkce od Ernst
Joomla Expert
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?

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

např.:

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

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook

31. srp 2015 00:03 #123232
Odpověď od Ernst
Joomla Expert
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?

01. zář 2015 09:05 #123261
Odpověď od Ernst
Joomla Expert
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);
}

01. zář 2015 13:39 #123262
Odpověď od Cony
Moderátor
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á.

01. zář 2015 17:32 #123265
Odpověď od Ernst
Joomla Expert
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

01. zář 2015 18:37 #123266
Odpověď od Ernst
Joomla Expert
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();

01. zář 2015 21:20 #123272
Odpověď od Cony
Moderátor
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.

01. zář 2015 22:11 #123275
Odpověď od Ernst
Joomla Expert
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ů.

Powered by Fórum