PHP.ee
 php.ee   linuxator.com   whee 
07.02.12 / 23:13
  Artiklid
  » Algajaile
  » Andmebaasid
  » Varia
  » Graafika
  » Advanced
Logi sisse:
< nimi
< pass
Unustasid passi?
Kas eelistad võimalusel PHP koodi objektorienteeritult kirjutada?
 Jah, see teeb töö lihtsamaks
 Jah, see on lihtsalt lahe
 Nii ja naa, ei tunne erilist võitu
 Ei, mõttetu ajakulu
 Ei oska objektorienteeritult progeda
Tulemused
Muutuja skoop e "tegevusraadius"
Kristo Iila

Lühike referents neile, kel seni selgusetuks jäänud muutujate skoobid ning nende tööpõhimõte.

Kõigepealt, muutuja skoop tähendab seda, millises koodi osas see muutuja eksisteerib ja omab sama väärtust, mis talle omistatud on.

Kõige väiksema püsivusega on funktsiooni kohalikud muutujad - need kestavad ainult konkreetse funktsiooni sees ja funktsioonist väljudes kaotavad oma väärtuse, ntx nii:

PHP kood:


 
// siin $muut ei oma v22rtust
function teeseda()
{
$muut 2;
// siin $muut omab v22rtust
}
// ja siin j2lle mitte. 
teeseda();
// ja siin ei oma $muut ka v22rtust, kuna ta on funktsiooni sees lokaalne muutuja. 



Teiseks on klassi muutujad. Need on olemas niikaua kuni konkreetne klassi instants eksisteerib ning neid saab kasutada ainult ära näidates, millise klassi instantsi seest neid lugeda tuleb, nt nii:

PHP kood:


 
<?php
class seesama
{
var 
$klass_muut;

    function 
jajah($v22rtus)
    {
    
$this->klass_muut $v22rtus;
    
// siin andsime selle klassi instantsi sees 
    // muutujale $klass_muut v22rtuse. 
    // seda saab kasutada teiste selle klassi funktsioonide sees
    
}

    function 
tryki()
    {
    
// ntx siin. 
    
echo "klass_muut = "$this->klass_muut," <br />";
    }
}

// teeme kaks instantsi sellest klassist
$yks = new seesama;
$kaks = new seesama;

// anname yhele klassi muutujale m6lemas instantsis erineva v22rtuse
$yks->jajah(13);
$kaks->jajah(45);

// trykime nad v2lja
echo "esimese instantsi tryki():<br />";
$yks->tryki();

echo 
"teise instantsi tryki():<br />";
$kaks->tryki();
?>



Kolmandaks on globaalsed muutujad. Neid saab kasutada funktsioonidest ja klassidest väljaspool, nagu tavalisi muutujaid ja nad kestavad terve skripti jooksul. Nende kasutamiseks funktsioonide ja klasside seest tuleb nad enne global käsuga vastava funktsiooni skoopi importida, nii:

PHP kood:


<?php
function banaan()
{
    echo 
"karu enne globalt = $karu <br />";
    
    global 
$karu;
    echo 
"karu p2rast globalit = $karu <br />";
}

$karu 88;
echo 
"karu enne banaani = $karu <br />";
banaan();
echo 
"karu p2rast banaani = $karu <br />";
?>



Loodan et ehk see jutuke aitab kedagi :)

Artikli kommentaarid

O