Navigacija

Vartotojų tinkle

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

Registruoti nariai: 25,952
Naujausias narys: tomeem

Naujausi straipsniai

Paskutiniai nariai

tomeem 1 savaitė
Reikalas 2 savaitės
weberiz 4 savaitės
mRokass 7 savaitės
kartoonas 8 savaitės
iaescortsmap 8 savaitės
ozzWANTED 9 savaitės
grunskiz11 savaitės
Bruksnys11 savaitės
illusion11 savaitės
ordo12 savaitės
Jurgaila13 savaitės
originalcs1613 savaitės
Rytis14 savaitės
halis15 savaitės
junkus18 savaitės
morlis18 savaitės
Majakas19 savaitės
andsoft20 savaitės
picolee9022 savaitės

Informacija:


OS: Unknown
Naršyklė: Nežinoma
IP: 3.144.102.239
Naujienų: 529
Straipsnių: 235
Temų: 52,584
Postų: 522,522
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.

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

Žmogus
2023 Rugs. 7 21:09:14
O gal BloodKiller pasijungs?

Apocal
2023 Rugs. 2 18:09:23
Nu davai nuveikiam kažką akinanti šypsen. Prisijungti kada visi čia akinanti šypsen.

Apocal
2023 Rugs. 2 00:09:18
Šiaip atėjau pažiūrėti ar dar lopas nesby yra ar koks ten buvo.

Š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
2237
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ų.