asterisk
Spalis 12, 2007

PHP klausimai #7

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 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>";
}

Panašūs straipsniai


“PHP klausimai #7” komentarų: 2

  1. Eimantas

    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ė .)

  2. Žilvinas Sadauskas

    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ė.

Rašyti komentarą

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