Navigacija

Vartotojų tinkle

Prisijungusių svečių: 770
Prisijungusių narių: 0
Prisijungusių narių nėra

Registruoti nariai: 25,956
Naujausias narys: saulyzas

Naujausi straipsniai

Paskutiniai nariai

saulyzas 5 dienos
MaFetas 1 savaitė
TOMIJUS 1 savaitė
ozzWANTED 2 savaitės
Reikalas10 savaitės
Jaunelis17 savaitės
lanis17 savaitės
And2s18 savaitės
Memento Mori23 savaitės
Quwqkibor25 savaitės
asirija29 savaitės
tomeem31 savaitės
weberiz34 savaitės
mRokass37 savaitės
kartoonas38 savaitės
grunskiz41 savaitės
Bruksnys41 savaitės
illusion41 savaitės
ordo42 savaitės
Jurgaila43 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 3.138.175.10
Naujienų: 529
Straipsnių: 235
Temų: 52,588
Postų: 522,537
Postų pask. parą: 0
Shout'ų pask. parą: 0
P.S.C. pask. parą: 0
Nuorodų kataloge: 13

Lankomumo Statistika

Peržiūrų šiandien: 22

Iš viso peržiūrų: 22948724

Prisijungti

REGISTRUOTIS
Nario vardas

Slaptažodis



Pamiršai slaptažodį?
Paprašyk naujo

Aktyvuoti save

Šaukykla

Jei norite rašyti žinutes, turite prisijungti.

MaFetas
2024 Lap. 13 22:11:57
hey how, geras dar veikiantis saitas?

Jaunelis
2024 Lie. 25 11:07:43
Oho vis dar veikia svetainė akinanti šypsen Šimtas metų, matau Šaukykloje nuostalgija. Smagu panaršyt po forumą ir pažiūrėt senas temas šypsosi

And2s
2024 Lie. 17 19:07:04
2008 pirmą kart čia patekau, man buvo 10m ir čia pramokau programavimo.. smagu skaityti senas žinutes, tokia nostalgija akinanti šypsen ačiū Ozz kad saugoji šitą kultūrinį reliktą šypsosi

ozzWANTED
2024 Sau. 17 01:01:00
Desperatiškus komentarus šaukykloje su accountu po mėnesio prasibuvimo, ištryniau. Pasaulis ir taip juodas. Įjungiam šviesą, prašviesės. šypsosi

Majakas
2023 Gru. 10 19:12:39
Negaliu patikėti jog žinutės/pranešimai visi yra nuo 2008 m akinanti šypsen

Šaukyklos archyvas

Apklausa

Ar esate patenkinti lietuviško vertimo kokybe?

Taip!

Taip, bet yra ką taisyti (parašysiu komentaruose)

Ne

Norėdamas balsuoti turite prisijungti.
Archyvas
Reklama 400x60
Objektinis programavimas ir PHP
Objektinis programavimas ir PHP

Kai pradėjau domėtis PHP, turbūt vienintelis dalykas, kurio ilgą laiką negalėjau perprasti buvo objektinis programavimas. Deja, galutinai neperpratau iki šiol, tačiau pasistengsiu pasidalinti iki šiol įgyta patirtimi.
Dabar siūlau susipažinti su pagrindiniais objectinio programavimo terminais:
Klasė - tai rinkinys funkcijų ir kintamųjų, bendradarbiaujančių tarpusavyje.
Savybės - tai klasėje naudojami kintamieji.
Metodai - tai klasėje naudojamos funkcijos.
Konstruktorius - tai funkcija įvykdoma sukuriant klasę (sukuriant objektą).
Iš šių painių apibrėžimų sunku ką nors suprasti. Bet manau, jog perskaitę šį straipsnį susidarysite bent minimalų vaizdą apie objektinį programavimą (OOP - Object Oriented Programming).

Taigi, pradėkime nuo sintaksės. Klasės aprašomos naudojant operatorių Class. Klasių kodas rašomas tarp riestinių skliaustų, lygiai kaip ir aprašant paprastas funkcijas:

<?
<span style='color:green;'>class klase{</span>
// čia aprašomos objekto savybės
var $savybe1;
var $savybe2;

// čia aprašomi metodai
function metodas($kint)
{
// kodas
}
}
?>

Kaip matome, savybės yra aprašomos naudojant operatorių var. Dabar pateiksiu pavyzdį iš realaus gyvenimo, kurį būtų galima susieti su OOP. Automobilis. Tai bus mūsų objektas. Kaip žinome jis turi keletą savybių: spalvą, formą, dydį, galią ir t.t. Tai bus mūsų objekto savybės. Taip pat jis gali atlikti keletą veiksmų: pajudėti iš vietos, pasukti, sustoti, važiuoti. Visa tai bus objekto metodai. Dabar visa tai aprašykime PHP kodu:

<?
class automobilis
{
// automobilio savybes
var $pavadinimas;
var $spalva;
var $forma;
var $dydis;
var $galia;

function pajudeti()
{
// kodas
}

function sustoti()
{
// kodas
}
function vaziuoti($greitis)
{
//kodas
}
function pasukti($kampas)
{
// kodas
}
}

?>

Kaip matome, viskas pakankamai paprasta. Taigi dabar panaudosime šį objektą. Sukurkime keletą automobilių:

<?
// sukuriame mano automobilį
$mano=new automobilis;
$mano->pavadinimas="BMW";
$mano->spalva="Juoda";
$mano->galia="200 AG";

// sukuriame jos automobilį
$jos=new automobilis;
$jos->pavadinimas="Ferrari";
$jos->spalva="Raudona";
$jos->galia="300 AG";

// na, o dabar mamo automobilis turėtų pajudėti iš vietos
$mano->pajudeti();
// o dabar padidinti greitį iki 150 km/h
$mano->vaziuoti(150);

// o, štai atlekia jos automobilis
$jos->vaziuoti(180);

// o ne, keliu policija.........
$mano->sustoti();

?>

Naujas objektas sukuriamas panaudojant operatorių new. Kintamajam priskiriama "object" tipo reikšmė, taip paverčiant jį objektu. Panaudojant -> (priešingai ne JavaScript ir kt.) mes galime pasiekti visas objekto savybes ir metodus. Reikšmių priskyrimas objekto savybėms yra identiškas reikšmių priskyrimui kintamiesiems.
Naudojant OOP dažnai reikia keisti objekto savybių reikšmes pačios klasės viduje. Tam yra naudojamas išskirtas kintamasis $this, nurodantis, jog savybė priklauso esamai klasei.

<?
class automobilis
{
var $pavadinimas;
var $spalva;
// ............. kitos savybes ............

function perdazyti($spalva)
{
$this->spalva=$spalva;
}
}

$auto=new automobilis;
$auto->spalva="Raudona";
$auto->perdazyti("Juoda");
?>

Panaudojant $this galima ne tik naudoti objekto "vietines" savybes. Taip pat galima vykdyti ir metodus.
Na, o dabar pavyzdys iš praktinio klasių pritaikymo: sukursime klasę, kuri sukurs HTML lentelę, su nurodytu skaičiumi eilučių ir stulpelių.

<?
class lentele
{

var $eil;
var $stulp;

// nurodyti eilučių ir stulpeių skaičių
function nustatyti($eil, $stulp)
{
$this->eil=$eil;
$this->stulp=$stulp;
}

// sukurti lentelę
function kurti_lentele()
{
echo "<table border=1>";

for ($x=1; $x<=$this->eil;$x++)
{
echo "<tr>";
for ($y=1; $y<=$this->stulp;$y++)
{
echo "$x, $y";
}
echo "</tr>";
}
echo "</table>";

}

}
?>

Šioje klasėje yra du metodai: nustatyti(), kuris nurodo, kiek eilučių ir stulpelių turės lentelė, ir kurti_lentele(), kuris atvaizduoja lentelę pagal nurodytus duomenis. Štai panaudojimas:

<?
$obj=new lentele;
$obj->nustatyti(2,3);
$obj->kurti_lentele();
?>

OOP taip pat galima aprašytiyti funkciją, kuri bus vykdoma sukuriant objektą. Tokia funkcija vadinama konstruktoriumi ir turi turėti tokį pat pavadinimą, kaip ir klasė.
Pavyzdžiui, papildysime lentelės klasę funkcija, kuri priskirs reikšmes kintamiesiems pagal nutylėjimą.

<?
class lentele
{
var $eil;
var $stulp;

// dabar reikia konstruktoriaus
function lentele()
{
$this->eil=5;
$this->stulp=3;
}
}
//kitos funkcijos
?>

O dabar galime kurti lentelę, nenurodinėdami parametrų:

<?
$lent=new lentele;
$lent->kurti_lentele();
?>

Įvykdę šį kodą gausime 5x3 lentelę.

Na, ir galiausiai papasakosiu apie vieną iš svarbiausių OOP galimybių - plečiamumą ir paveldimumą. Tai yra labai paprasta: paprasčiausiai sukuriame klasę, kuri išplečia jau esamą ir paveldi jos metodus, savybes.
Išplėsti jau esamai klasei yra naudojamas operatorius "extends". Taigi dabar išplėsime lentelės klasę:

<?
class lentele
{

var $eil;
var $stulp;
var $krastine;

// nurodyti eilučių ir stulpeių skaičių
function nustatyti($eil, $stulp)
{
$this->eil=$eil;
$this->stulp=$stulp;
}

// sukurti lentelę
function kurti_lentele()
{
echo "<table border=$krastine>";

for ($x=1; $x<=$this->eil;$x++)
{
echo "<tr>";
for ($y=1; $y<=$this->stulp;$y++)
{
echo "$x, $y";
}
echo "</tr>";
}
echo "</table>";

}

}

class geresne_lentele extends lentele
{
function nurodyti_krastine($storis)
{
$this->krastine=$storis;
}
}

?>

Tai tiek apie OOP. Kaip matote tai nėra itin sudėtinga, tačiau reikia nuolat tobulintis, praktikuotis, dirbti....




Straipsnio informacija

Autorius
N3PST3R
Parašymo data
2006 spalio 26 21:10:51
Komentarų
1
Skaityta
2276
Spausdinti Spausdinti
Komentarai
ramon 2008 birželio 27 19:06:24
Manau turetum uzdeti straipsnio autoriu.. Bet strapsnis saunus šypsosi
http://php.lt/render/Articles;ai...
Rašyti komentarą
Prisijunkite, norėdami parašyti komentarą.
Reitingai
Balsuoti gali tik nariai.

Prašome prisijungti arba prisiregistruoti.

Nėra reitingų.