Jump to content
php.lv forumi

Kad OOP jā, kad nē


daGrevis

Recommended Posts

Sveiki,

Es patiešām smagi cenšos pāriet no parastā PHP koda (pa... (aizmirsu kā saucās)) uz objektu orientēto (OOP)! =)

Tagad nāktos visu kodu pārrakstīt uz OOP. Un tātad, lūk, jautājums.

Ko nozīmē visu kodu? Man katram sīkumam jābūt kā objektam? Kā man tos objektus dalīt?

 

Piemērs. Pavisam viegls skriptiņs.

$start_time = microTime(true);

$end_time = microTime(true);

$result = round($end_time - $start_time, 3);

 

Vai ko tādu ir jēga par objektu pārtaisīt??

 

class timer
{

public $start_time;
public $end_time;
public $result;

function start()
{

	$this->start_time = microTime(true);

}

function end()
{

	$this->end_time = microTime(true);

}

function result()
{

	return $this->result = round($this->end_time - $this->start_time, 3);

}

}

$timer = new timer;

 

Un man ir, piemēram, lietotāju sistēma. Var reģistrēties, ielogoties.

 

Kā man viņu par objektu taisīt? I'n confused.

Link to comment
Share on other sites

Dari taa kaa pasham liekaas eerti. Nav obligaati visam jaabuut OOP vai preteeji proceduraalam. Var arii mikseet lietas. Arii man, shad un tad, patiik izmantot shaadas, taadas funkcijas, lai gan paarsvaraa mans kods ir objektains :)

 

Saac leenaam maaciities par OOP un tad jau automaatiski viss vajadziigais liksies objektos, kaut kaadi noderiigi helperi funkcijaas.

 

Kaa arii ja tu veidosi plikas klases, bez jebkaadaam inheritaacijaam un abstrakcijaam, tad nedomaaju, ka vispaar ir veerts tam kjerties klaat, bet lai tajaa kaartiigi iebrauktu vajag krietni palasiities par OOP pamatiem (ne tikai PHP OOP).

 

OOP labi saistaas kopaa ar MVC. Ir modelji (piemeeram Lietotaajs, Raksts, Komentaars), katrs no tiem ir klase. Katrs no tiem extend'o klasi Modelis, kas satur metodes un propertijus, kuras ir izmantojamas globaali. Tas pats ir ar kontrolieriem (LietotajaKontrolieris, RakstaKontrolieris, KomentaaraKontrolieris).

Link to comment
Share on other sites

Piemērs. Pavisam viegls skriptiņs.

$start_time = microTime(true);
$end_time = microTime(true);
$result = round($end_time - $start_time, 3);

Vai ko tādu ir jēga par objektu pārtaisīt??

Nee nav gan.

Parasti dara taa, ja paredzets ka dotais kods tiks pielietots vairakas vietaas, piedevam iespejams tiks modificets, tad reali izpauzas OOP prieksrociibas..

Jo nav jegas veidot klasi, ja tajaa ir tikai 1-2 funkcijas.

OOP prieksrociiba ir taa ka, visas vinja ietilpstosaas iipasiibas, var viegli modificet, vienkarshi katru reizi izveidojot jaunu Objektu.

--

Piedevam tavaa piemeraa buutu liederiigi izmantot Konstruktoru, kas automataa palaistu taimeri, pie objekta izveidosanas ( pirmo funkciju nosaucot nevis start() , bet gan timer() ...

{ reals piemers kur klases konstruktors buutu liederiigi izmantojams }

--

Link to comment
Share on other sites

IMO lai apgūtu OOP vajag kārtīgi apgūt procedurālo pieeju, lai vispār saprastu kādi tieši ir OOP ieguvumi. Rakstīt objekt-orientēti tikai tādēļ, lai būtu OOP nav jēgas un kods sanāks ne tāds ne šāds. Un PHP vispār OOP implementācija nav tā labākā IMO :/

 

MVC var dabūt arī ne-OOP'iski.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...