Slave
Rugpjūtis 22, 2007

PHP klausimai #2 - atsakymai

Sveiki, mielieji. Man labai džiugu matyti, kad šią savaitę taip aktyviai atsakinėjote į klausimus, kas yra aktyvios bendruomenės bruožas. Tikiuosi, kad ir toliau sėkmingai atsakinėsite į klausimų dėžutės “ & WEB DEVELOPMENT” klausimus.

Na, o dabar tiesiai prie atsakymų į pirmadienio klausimus. Tikiuosi nesupyksite, bet rašydamas atsakymus dažnai panaudosiu jūsiškius, nes kartais jie būna daug aiškesni. Dvi galvos geriau nei viena, o dar jei pixel.lt skaitytojai prisijungia, tai rezultatas labai džiugina.

:
1. Ar įmanoma aplinkoje iškviesti funkcijas dinamiškai?
Taip. Jei $name = “hello”; tada $name(); iškvies funkciją hello. (Armandas)

2. Koks magiškasis metodas naudojamas norint objektą naudoti kaip eilutę (string)?
__toString()

3. Kas yra SimpleXML?
SimpleXML - biblioteka (pateikiama kartu su PHP5), kurios pagalba galima lengvai ir patogiai dirbti su XML failais OOP būdu.

4. Kaip sužinoti kiek parametrų perduota funkcijai?
func_get_args()

5. Kuo skiriasi abstrakti klasė nuo interfeiso (interface)?
Interfeisas ir Abstrakti klasė - struktūros, kurių objektų negalima kurti. Interfeise galima deklaruoti metodus, kuriuos turi įgyvendinti interfeisą naudojančios klasės bei apibrėžiamos konstantos, tuo tarpu abstrakčioje klasėje yra numatoma galimybė aprašyti metodų logiką. (kran)

6. Kaip gauti vartotojo IP adresą?
$ip = $_SERVER[’REMOTE_ADDR’]; (NeWorld)

7. Koks skirtumas tarp manoFunkcija() ir @manoFunkcija() ?
Su @ ignoruos klaidas. (cyberfox)

8. Kam reikalingas operatorius ‘<<<’ ?
Kartu su tapatumo simboliu nurodo Heredoc pradžią, t.y. dvigubų kabučių analogas.

$tekstas = <<<TEXT
Čia mano tekstas.
Dar teksto.
Dar daugiau teksto.
TEXT;

9. Koks skirtumas tarp === ir == ir = ?
=== - palyginimo operatorius (lygina ir elementų tipus, pvz., ‘0′ !== 0)
== - palyginimo operatorius (lygina tik reikšmes, pvz., ‘0′ == 0)
= - priskyrimo operatorius (buuu)

10. Ką jums sako terminas ‘design patterns’?
Design patterns - apibendrinti būdai spręsti dažnai praktikoje pasitaikančius programavimo (programų sistemų projektavimo) uždavinius. Palengvina ne tik projektavimo procesus, bet ir bendravimą tarp kūrėjų (pakanka pasakyti naudosime tokį ir tokį design pattern’ą). (kran)

Panašūs straipsniai


“PHP klausimai #2 - atsakymai” komentarų: 5

  1. NightVision

    7. Koks skirtumas tarp manoFunkcija() ir @manoFunkcija() ?
    Su @ ignoruos klaidas. (cyberfox)

    Deja, ignoruos ne visas. Ignoruos tik klaidas, kurios sugeneruotos senuoju būdų (E_WARNING, E_NOTICE, trigger_error()…).. Naujuoju būdų (nuo PHP 5 versijos) sugeneruotų klaidų / EXCEPTIONŲ NEIGNORUOS.

    Netikite? Patestuokime:
    [code lang=”php”]
    function Generate_Old() {
    trigger_error(”Klaida (Old)!”, E_USER_ERROR);
    }

    @Generate_Old();
    [/code]
    Kaip ir turėtų būti ekrane nieko nepamatysime, nes klaida ignoruojama.

    Dabar patestuokime naujuoju būdų - su exception’ais:
    [code lang=”php”]
    function Generate_New() {
    throw new Exception(”Klaida!”);
    }

    @Generate_New();
    [/code]

    Nors ir “ignoravome”, klaidą vistiek matome:
    [code lang=”php”]
    Fatal error: Uncaught exception ‘Exception’ with message ‘Klaida!’ in ***:*** Stack trace: #0 ***: Generate_New() #1 {main} thrown in *** on line ***
    [/code]

    Sėkmės.

  2. Armandas

    Ką reiškia “ignoruos”? Aš suprasčiau, kaip darbo tęsimą, nepaisant klaidos. Deja, jei klaida kritinė - skripto vykdymas stabdomas. Tagi @ tiesiog “paslepia” klaidos pranešimą.

  3. Slave

    Tai tik žodžiai. Nors, aišku, reikėjo konkretizuoti ;-)

  4. Eimantas

    @ operatorius taip pat labai “stabdo” ir jo bus atsisakyta PHP6 versijoje.

  5. kran

    o, ačiū, už tokį manęs įvertinimą :)

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.