Navigacija

Vartotojų tinkle

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

Registruoti nariai: 25,902
Naujausias narys: bestnewsfast2

Naujausi straipsniai

Paskutiniai nariai

mariusslo 1 diena
bruzgis 6 dienos
bestnewsfast2 1 savaitė
votas 1 savaitė
MichaelDaniel 1 savaitė
vadma 2 savaitės
ozzWANTED 3 savaitės
Wasiulis 3 savaitės
unny 3 savaitės
slime194 3 savaitės
sortis 6 savaitės
Rytis 8 savaitės
piterisp11 savaitės
Rokas155511 savaitės
programuotuvas11 savaitės
FBpuslapis11 savaitės
Žmogus12 savaitės
xinkas13 savaitės
jsac13 savaitės
desirent13 savaitės

Informacija:


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

Lankomumo Statistika

Peržiūrų šiandien: 4

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
2021 Spa. 2 17:10:30
Mes jį į PHP8 kaip tik artimiausiu metu esame užsakę atnaujinti. Bet tai bendrai bus WordPress, Shopify ir PHPFusion bendruomenė, ne tik Fusion.

Žmogus
2021 Spa. 2 08:10:56
Kokia ateitis laukia portalo?

ozzWANTED
2021 Lie. 8 23:07:33
O kodėl SMS hostingas. Kuo netinka BaCloud.com su PayPal?

aVator
2021 Lie. 7 15:07:53
Sveiki, turiu klausima ar yra koks sms hostingas kuris palaikytu phpmyadmin 7 versija? Nes mano esamas scriptas tokia ir tepalaiko. 7 arba aukstesne versija.

ozzWANTED
2021 Bir. 16 18:06:15
Per telefoną ji randasi dešinėje pusėje. Paspausk ant headerio ikonos vienos ištrijų ir rasi.

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