41
PHP ir SQL - Klausimai ir pagalba / Ats: PHP PDO LOGIN MYSQL
« Įrašytas: 2014-12-05 23:57:39 pm »
as pats pdo praktiskai niekada nenaudoju, nuo mysql_ perejau tiesiai ant ORM'u, kurie buna su framework'ais, dabar naudoju phalcon. PDO is pradziu gali pasirodyti "sundetinga", taciau kai supranti, tai pamatai kiek daug paprastu bedu issprendzia, ka turejo mysql_.. funkcijos. saugumo, greicio, testavimo ir kt. dalykai yra lengvesni su pdo arba orm'u.
As bent jau siulau nuosirdziai perskaityti bent sita dokumentacijos dali: http://docs.phalconphp.com/en/latest/reference/models.html bus tada aisku kas yra orm'as ir tada gal lengviau bus kas yra pdo. Apie pdo nelabai galiu daug kalbeti, nes as tiksliai nezinau kurios funkcijos yra orm'u naudotu, kurios pdo.
try catch yra Exception'u programing design'as, ar pattern'as kaip cia pavadinus nzn, esme tame kad viduje
try {}
darai ka reikia ir jei buna klaida tai gali nutraukti visa vykdyma ismesdamas exception'a, ir tada kazka toliau daryti tuo atveju, pvz:
try{
// kazkas ok
// kazkas ok
// kazkas negerai -> ismeti exception'a: throw new Exception('zinute', 123);
// cia jau nebesivykdo
} catch(Exception $e){
$e->getMessage(); // grazina "zinute"
$e->getNumber(); // grazina 123
$e->getTraceAsString(); // atrodo taip funkcija vadinas, man PHPStorm'as autocomplete'ina, tai nzn mintinai
siaip ar anaip galima gaut info kokioje eiluteje buvo ismestas exceptionas ir kas buvo pries tai vykdoma.
}
http://php.net/manual/en/language.exceptions.php
http://stackoverflow.com/questions/17549584/how-to-efficiently-use-try-catch-blocks-in-php
Exception'ai gali buti ivairus, pvz PDOException, bet jie visi turi extendint "Exception" klase http://docs.phalconphp.com/en/latest/api/Phalcon_Exception.html cia pvz Phalcon framework'o Exception'as, kuris extendina "Exception" klase. viska, kas extendina "Exception" galima throw'inti ir catch'inti
gerai tai, kad gali but taip:
try {
funkcija(); // funkcijos viduj ar bet kokiame kode kuris parasytas ne cia bet cia yra vykdomas gali but ismestas exception'as ir jei jis niekur nebuvo "pagautas" tai nueis iki sekancio "catch"
} catch(PDOException $e){
// cia pateks tik tie Exception'ai kurie turi paveldeje PDOException klase
} catch(PhalconException $e){
// cia pagausi tik PhalconExpcetion exception'us
} catch(Exception $e){
// cia pagausi absoliuciai visus exception'us, nes visi PDOException ir kt turi paveldeje Exception klase.
}
tokiam pvz jei bus ismestas funkcija(); PDOExcpetion bus iskviestas tik pirmas catch bloke esantis kodas. Jei jau exception'as buvo pagautas, jo daugiau niekas negaudo, nebent ji ismesi vel su "throw"
taip, kodavimas vystosi, labai greitai. Jei nori daugiau "mind-fuck" tai gali pasidomet nodejs ir websockets. O jei uztenka ir pdo, tai siulau toliau paziuret framework'u tokiu kaip phalcon, symfony, laravel, codeigniter, zend ir kt. pasiskaityk kas kaip skirias, paziurek filmuku youtube yra daug puikiu nemokamu paskaitu
As bent jau siulau nuosirdziai perskaityti bent sita dokumentacijos dali: http://docs.phalconphp.com/en/latest/reference/models.html bus tada aisku kas yra orm'as ir tada gal lengviau bus kas yra pdo. Apie pdo nelabai galiu daug kalbeti, nes as tiksliai nezinau kurios funkcijos yra orm'u naudotu, kurios pdo.
try catch yra Exception'u programing design'as, ar pattern'as kaip cia pavadinus nzn, esme tame kad viduje
try {}
darai ka reikia ir jei buna klaida tai gali nutraukti visa vykdyma ismesdamas exception'a, ir tada kazka toliau daryti tuo atveju, pvz:
try{
// kazkas ok
// kazkas ok
// kazkas negerai -> ismeti exception'a: throw new Exception('zinute', 123);
// cia jau nebesivykdo
} catch(Exception $e){
$e->getMessage(); // grazina "zinute"
$e->getNumber(); // grazina 123
$e->getTraceAsString(); // atrodo taip funkcija vadinas, man PHPStorm'as autocomplete'ina, tai nzn mintinai

}
http://php.net/manual/en/language.exceptions.php
http://stackoverflow.com/questions/17549584/how-to-efficiently-use-try-catch-blocks-in-php
Exception'ai gali buti ivairus, pvz PDOException, bet jie visi turi extendint "Exception" klase http://docs.phalconphp.com/en/latest/api/Phalcon_Exception.html cia pvz Phalcon framework'o Exception'as, kuris extendina "Exception" klase. viska, kas extendina "Exception" galima throw'inti ir catch'inti

gerai tai, kad gali but taip:
try {
funkcija(); // funkcijos viduj ar bet kokiame kode kuris parasytas ne cia bet cia yra vykdomas gali but ismestas exception'as ir jei jis niekur nebuvo "pagautas" tai nueis iki sekancio "catch"
} catch(PDOException $e){
// cia pateks tik tie Exception'ai kurie turi paveldeje PDOException klase
} catch(PhalconException $e){
// cia pagausi tik PhalconExpcetion exception'us
} catch(Exception $e){
// cia pagausi absoliuciai visus exception'us, nes visi PDOException ir kt turi paveldeje Exception klase.
}
tokiam pvz jei bus ismestas funkcija(); PDOExcpetion bus iskviestas tik pirmas catch bloke esantis kodas. Jei jau exception'as buvo pagautas, jo daugiau niekas negaudo, nebent ji ismesi vel su "throw"
taip, kodavimas vystosi, labai greitai. Jei nori daugiau "mind-fuck" tai gali pasidomet nodejs ir websockets. O jei uztenka ir pdo, tai siulau toliau paziuret framework'u tokiu kaip phalcon, symfony, laravel, codeigniter, zend ir kt. pasiskaityk kas kaip skirias, paziurek filmuku youtube yra daug puikiu nemokamu paskaitu
