1. Kaip nusiųsti parametrus į praplėstos klasės konstruktorių?
class klase1 { public __construct($parametras = NULL) { if ( !is_null($parametras) ) echo $parametras; } } class klase2 extends klase1 { .... } $klase = new klase2('kažkas'); // Rezultatas turėtų būti atvaizduotas 'kažkas'.
2. Kam naudojamos “magic” funkcijos klasėse __sleep() ir __wakeup()?
3. Ar galima ir jeigu taip, tai kaip padaryti, jog PHP sesijų naikinimui naudotų jūsų funkciją?
4. Kuo skiriasi printf() nuo fprintf()?
5. Kodėl geriau naudoti PCRE, o ne POSIX (kokie privalumai)? Arba atvirkščiai.
6. Ar yra paprastesnis ir geresnis sprendimas pakeisti šį kodą:
<?php $handle = fopen("http://www.example.com/", "rb"); $contents = ''; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?>
7. Kodėl register_globals yra blogai?
8. Kuo skiriasi mysql_escape_string() nuo mysql_real_escape_string() (vietoje mysql gali būti kita duombazė)?
9. Kokie geriausi būdai yra sukurti dokumentaciją savo kodui?
10. Kodėl šis sprendimas yra blogas?
$result = mysql_query("SELECT `smth` FROM `smwhr`"); while ($row = mysql_fetch_array($result)) { print $row['smwhr'] . "<br>"; }
2007-10-12 | 17:41
4) printf nuo fprintf skiriasi tuo, kad fprintf pirmą parametrą priima failo deskriptorių, tuo tarpu printf “by default” ima stdout.
5) $contents = file_get_contents(”http://www.example.com”); ?
8) antroji f-ja veikia su UTF-8?
9) PHP Documentor arba jokios dokumentacijos. Kodą buvo sunku rašyti, jį turėtų būti sunku ir skaityti — Neprisimenu kas taip smagiai pasakė .)
2007-10-12 | 18:07
1) išvestinėj klasėj sukurti konstruktorių __construct($param = null) { parent::__construct($param); }
2) __sleep - ka daryt, kai objektas serialize’inamas, __wakeup - kai unserialize’inamas.
4) printf printina į stdout, fprintf į kokį nors stream’ą.
5) geriau, blogiau nėra. yra situacinė vertė. Jeigu reikia galingo regexpo, geriau PCRE, jeigu paprasto ir greitai parašomo - POSIX.
6) file_get_contents()
7) dėl pažeidžiamumo, kai per POST, GET ar SESSION, nuspėjus programuotojo naudojamus kintamuosius, galima ojojoj kiek visko pridaryt.
8) mysql_real_escape_string() pakeičia “negerus” simbolius šešioliktainiu kodu, paprastas escape tik uzdeda slashus.
9) yra įvairių tools’ų. Kaip toj dainoj, kiekvienam savo. Kitam visai nereikia.
10) Todėl, kad parašyta nesamonė.