| | |
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
Autor | Správa |
---|
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal php30: 11.09.2010 21:58 | |
|
Ahojte mam problem Neviem ako by som dostal vystup z funkcie.Vzdy som potreboval len return true a return false.
Je to funkcia pre odoslanie mailu pomocou phpmailer a potrebujem v pripade zlyhania dostat chyby do premennej aby som s nimi mohol pracovat dalej.
tu je zjednoduseny kod funkcie Kód: error_reporting(E_ALL);
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {
TU MAM VSETKO POTREBNE (NEBUDEM TO ZBYTOCNE VYPISOVAT)
$mail->Send(); echo "Message Sent OK</p>\n"; return true; } catch (phpmailerException $e) { echo $e->errorMessage(); return false; } catch (Exception $e) { echo $e->getMessage(); return false; } }
Funkcia vrati true alebo false pri zlihani (to potrebujem) ale potrebujem aby pri vratini false vratilo aj chyby a aby som s nimi mohol aj dalej pracovat
Viete mi s tym niekto poradit?
Dakujem
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 11.09.2010 22:33 | |
|
Tá funkcia môže vrátiť chybu. Ak teda nastala chyba, vráti sa ten text, inak sa vráti false (a ty budeš mať potom test if (poslatEmail() !== false ...).
Prípadne môžeš predať ako parameter premennú do ktorej sa má uložiť tá chybová hláška, alebo vyvoláš výnimku (možno je aj viac možností).
|
|
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal autor témy php30: 11.09.2010 22:45 | |
|
nejako som nepochopil
Ta funkcia vrati ten text ale ja potrebujem aby vratila premennu v ktorej bude ten text a aby som potom mohol pouzit ten text mimo funkcie.
Takze napr by to bolo Kód: catch (phpmailerException $e) {$test = $e->errorMessage(); echo $test; return false; } catch (Exception $e) { $test2 = $e->getMessage(); echo $test2 return false; }
Ale ked mimo funkcie zavolam $test alebo $test2 tak tam nie je to co potrebujem
Viem to spravit cez define ale to nechcem. A ked to vratim napr return $test neviem to dalej pouzit
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
potrebujes vratit sucasne false aj popis chyby, ci ako? to je imho zbytocne, lebo ak funkcia nevrati true, tak nieco urcite zlyhalo...
Kód: $returnValue = funkcia();
a mozes dalej pracovat s premennou $returnValue...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal autor témy php30: 11.09.2010 23:32 | |
|
Takze funkcia moze vratit len jednu hodnotu?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
viac samostatnych hodnot urcite nie, ale napriklad pole hodnot uz ano... pripadne to mozes spravit aj tak, ze si definujes nejaku globalnu premennu, do ktorej budes ukladat popis vzniknutej chyby. V tom pripade uz moze funkcia vracat false a aj sa dostanes k textu chyby...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 11.09.2010 23:37 | |
|
preco si nenechas exception a nepracujes snou ? exceptions su prave na taketo pouzitie
|
|
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal autor témy php30: 11.09.2010 23:45 | |
|
nerozumiem Ako mozem exceptions zobrazit mimo funkcie?
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | |
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal autor témy php30: 12.09.2010 9:39 | |
|
Ako myslis ze exception neosetrim? Ze neosetrim vynimku?A tym opatovnym vyvolanim myslis opatovne vyvolanie funkcie?
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 12.09.2010 10:15 | |
|
obalenie volania funkcie fo bloku try...catch sposobi odchytenie vynimky. v priklade je funkcia f2 ktorej som zakomentoval odchytenie vynimky
phpmailerException a jej osetrenie som posunul do nadradenej funkcie f1
Kód: function f1() { try { if (f2()) { ... } } catch (phpmailerException $e) { echo $e->errorMessage(); }
}
function f2{ $mail = new PHPMailer(true); $mail->IsSMTP(); //try { TU MAM VSETKO POTREBNE (NEBUDEM TO ZBYTOCNE VYPISOVAT) $mail->Send(); echo "Message Sent OK</p>\n"; return true; //} catch (phpmailerException $e) { // echo $e->errorMessage(); // return false; //} catch (Exception $e) { // echo $e->getMessage(); // return false; //} }
ak si chces vyvolat vlastnu vynimku tak studuj tu http://www.w3schools.com/php/php_exception.asp
|
|
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal autor témy php30: 12.09.2010 11:46 | |
|
JA uz som z toho mimo
Este si to skusim nastudovat a uvidim...
Zatial som to spravil takto :
Kód: function send ($mesage) { error_reporting(E_ALL);
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {
TU MAM VSETKO POTREBNE (NEBUDEM TO ZBYTOCNE VYPISOVAT)
$mail->Send();
} catch (phpmailerException $e) { return $e->errorMessage();
} catch (Exception $e) { return $e->getMessage();
} }} a potom to zobrazim takto: Kód: $test = send($mesage); if (sizeof($test)> 0) echo $test; else echo "OK"; S premennou Kód: $test potom mozem dalej pracovat
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 12.09.2010 12:35 | |
|
Môžeš vyskúšať aj niečo takéto: Kód: function send($message) { try { $mail->Send(); } catch (phpmailerException $e) { return Array(false, $e->errorMessage()); } catch (Exception $e) { return Array(false, $e->getMessage()); } return Array(true, ""); }
list($ok, $err) = send("sprava"); if ($ok) { echo "Vsetko prebehlo v poriadku\n"; } else { echo "Nastala chyba: " . $err . "\n"; }
|
|
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal autor témy php30: 12.09.2010 18:11 | |
|
Ak sa smiem spytat na co je tam toto Kód: list($ok, $err)
To ok ma byt pre return true a err ma byt pre tie chyby?Lebo ak hej tak to tak nefunguje
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 12.09.2010 18:31 | |
|
Nie. Ak pouzijes chronov kod a $mail->Send() nevyhodi vynimku, v $ok bude true a v $err bude prazdny retazec. Ak kod prejde do catch bloku, v $ok bude false a v $err znenie chyby. Pozri si nieco o list(), bude ti to jasnejsie.
|
|
Registrovaný: 21.06.09 Prihlásený: 28.05.11 Príspevky: 179 Témy: 41 | Napísal autor témy php30: 13.09.2010 19:56 | |
|
Aha, ja som mal na miesto Kód: return Array(true, ""); iba Kód: return true;
preto mi to nefungovalo Dik idem to vyskusat
|
|
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|