Jump to content
php.lv forumi

OOP kā tāds


Gacha

Recommended Posts

  • Replies 47
  • Created
  • Last Reply

Top Posters In This Topic

Bet tie ir tikai sapņi.

 

Es ļoti gribētu uzzināt cilvēku domas par sistēmu ko lietoju:

http://paste.php.lv/1095

 

Galvenā pamatdoma ir visu sadzīt objektā $out mainīgajā un beigās ar out() funkciju to izdabūt laukā.

Šajā piemērā out() funkcija taisa echo bet parasti ir return.

IMHO metodēm xml, doctype nav nekādas jēgas ;) Ja tu varētu teiksim mainīt Doctype ar doctype funkciju, vai pārdefinēt xml versiju vai ko tādu, tad arī būtu reāla jēga - savādāk sanāk, ka tu vienkārši principa pēc, lai būtu vairāk funkcijas. Funkcijai, kas vienmēr atgriež statisku rezultātu patiesībā nav nekādas jēgas. Tam ir domātas konstantes.. bet tā, visā visumā nav ne vainas ;)

Edited by Kaklz
Link to comment
Share on other sites

Kaklz:

Tas, ka tajā piemērā tās funkcijas īsti neizskatās pēc funkcijām, tas ir skaidrs un tāds arī nebija mans jautājums.

Mans jautājums bij, kādas ir jūsu domas par sistēmu, ka principā viss saits tiek sadzīts vienā mainīgā un tikai pašās beigās tiek izvadīts laukā.

Parasti tā nedara, ļoti bieži php tiek rakstīts pa jaucot kopā ar html.

Link to comment
Share on other sites

Kaklz:

Tas, ka tajā piemērā tās funkcijas īsti neizskatās pēc funkcijām, tas ir skaidrs un tāds arī nebija mans jautājums.

Mans jautājums bij, kādas ir jūsu domas par sistēmu, ka principā viss saits tiek sadzīts vienā mainīgā un tikai pašās beigās tiek izvadīts laukā.

Parasti tā nedara, ļoti bieži php tiek rakstīts pa jaucot kopā ar html.

es to uztvēru kā pašsaprotamu lietu, jo tikko ir doma, ka projektam nāksies vēl kādu reizi kaut ko labot, par html miksēšanu ar PHP gandrīz automātiski jau aizmirstu. Manuprāt tas jūtami uzlabo koda lasāmību

Kaut vai salīdzinot

<?php
$res = mysql_query('BLABLA');
?><table><?php
while ($row = mysql_fetch_row($res)){
   ?><tr><td><?php echo $row[0]; ?></td><td><?php echo $row[1]; ?></td></tr><?php
}
?></table>

ar

<?php
$res = mysql_query('BLABLA');
$content = '<table>';
while ($row = mysql_fetch_row($res)){
   $content .= '<tr><td>' . $row[0] .'</td><td>' . $row[1] .'</td></tr>';
}
$content .= '</table>';
echo $content;

 

Savācot visu HTML body vienā mainīgajā ir tīri labas iespējas izmantot templeitus, ko es arī aktīvi daru :)

Link to comment
Share on other sites

kā jau teicu, neesmu template cienītājs, bet piekasoties augstākminētam 2 variantam, iesaku izmantot output_buffering

<?php
//pirms jebkāda izvada
ob_start()
?>
%HEAD%
%BODYSTART%
<?php
//izvadām visu standarta echo veidā
$res = mysql_query('BLABLA');
echo '<table>';
while ($row = mysql_fetch_row($res)){
  echo '<tr><td>' . $row[0] .'</td><td>' . $row[1] .'</td></tr>';
}
echo '</table>';
?>
%BODYEND%
<?php
//pēc visa izvada
$content=ob_get_contents();//tagad te mums ir pārtverts viss html izvads
ob_end_clean();

//apstrādājam $content, e.g. 
$content=str_replace('%HEAD%','<head>...</head>',$content);
echo $content;
?>

 

manuprāt vieglāk, nekā visur rakstīt klāt $content.=, kas pats par sevīm ir garāks nekā echo (+ VenPadā echo ''; liekas iekšā piespiežot Ctrl+Up Arrow, tā kā ies vēl ātrāk)

 

Šis ir vienīgais veids, kādā atzīstu templeitus.

Edited by Venom
Link to comment
Share on other sites

Nēnu protams, katrs raksta pa savam, bet mans uzskats tomēr paliek tāds, ka programmai ir jaabuut taadai:

1. Saņem ievaddatus

2. Sagatavo izvaddatus

3. Izvada izvaddatus

 

Un man liekas, ka sagatavojot izvaddatus saprotamāk tas viss notiek, ja tu to visu "kluci" iegāz vienā mainīgajā un tad tikai izvadi.

Link to comment
Share on other sites

Nēnu protams, katrs raksta pa savam, bet mans uzskats tomēr paliek tāds, ka programmai ir jaabuut taadai:

1. Saņem ievaddatus

2. Sagatavo izvaddatus

3. Izvada izvaddatus

 

Un man liekas, ka sagatavojot izvaddatus saprotamāk tas viss notiek, ja tu to visu "kluci" iegāz vienā mainīgajā un tad tikai izvadi.

 

Shim es tieshaam pilniibaa piekriitu. Protams, ciesh aatrdarbiiba. Tachu viennoziimiigi ir efektiivi prieksh kaut kaadu uznjeemumu maajas lapaam/citiem projektiem, kuriemm ir kaadi 2000-10000 loadi dienaa, jo mudjiishanaas par katru milisekundi un optimizaacija biezhi panjem paaraak daudz laika. Pie tam sakariigi struktureetu ievaddatu apstraades kodu, kas nejaucas uzreiz paraleeli ar izvadi, ir daudz vieglaak saprast un modificeet, kaa arii taadaa veidaa ir relatiivi mazaak kljuudu.

Link to comment
Share on other sites

bet ja tev tie parametri ir nodefineeti, tad tas noziimee, ka programmeejot ar funkciju paliidziibu tev shie parametri buus nepiecieshami vai arii tajaa klasee ir liekas lietas saliktas iekshaa.

Link to comment
Share on other sites

te ruina gaaja, ka oop neesot iipashi aatrs.

vai varat mineet kaadus piemeerus?

es personiigi esmu noveerojis preteejo.

gribu redzēt tavus maņu orgānus, ka tu to novēroji :P. Ir kāds reāls testu piemērs ar benchmarkiem?

 

pats vienu redzēju, kurā OOP bija lēnāks, taču darbojās ar mazāk kļūdām. Ties gan tests tāds neizteiksmīgs .. :(

http://3a3-interactive.net/simpleblog/post.php?pid=65

Edited by Kaklz
Link to comment
Share on other sites

te ruina gaaja, ka oop neesot iipashi aatrs.

vai varat mineet kaadus piemeerus?

es personiigi esmu noveerojis preteejo.

gribu redzēt tavus maņu orgānus, ka tu to novēroji . Ir kāds reāls testu piemērs ar benchmarkiem?

 

Vinjsh droshi vien domaaja, ka taisiit projektu, izmantojot OOP ir aatraak.

Protams, ja ir klase, kurai ir viens parametrs, kuru echo, tad starpiiba iipasha nebuus, tomeer kaa jau mineeju, tad, piem, ja katru html tagu uztaisam par objektu, tad gan tas viss darbojas ~10x leenaak. tiesa, par to mees ieguustam daudz reiz eertaaku kodeeshanu :) Lai kaads pameegjina bez oop (pie tam mikseejot pa tiesho outputu ar pashu algoritmu) uztaisiit html tabulu, kurai briivi var teiksim ar rectangle mainiit jebkurus td atribuutus(padodtot x1,y1,x2,y2,attribuutu_masiivs), pie tam katra shuuna atkal var satureet citu patvaljiigu tabulu, formu/whatever.

Link to comment
Share on other sites

Vai lūdzu kāds nevarētu iedot kādu maziņu, tiešām maziņu piemēru iz dzīves, nevis no garāžas, kur to OOP var normāli izmantot??? Piemēram kādas formas apstrādi, vai sql ievietošanu vai pox kaut ko tādu noderīgu.

 

OOP ir abstrakcijas veids. Funkcijas tiek grupētas kopā ar datiem, kurus tās izmanto.

 

Diemžēl vai par laimi mazos piemēros nevar attēlot to priekšrocību. Lielos projektos, kur pieaug sarežģītība var veidot objektus, kā jaunus - problēmai specifiskus klucīšus un būvēt tālāk no tiem.

 

Ja ir problēmas ar ātrdarbību, tad papriekšu jānosaka, kur tās ir, tikai tad ir jēga bojāt koda lasāmību optimizācijas dēļ.

 

Atvainojos, par neskaidro rakstu.

Link to comment
Share on other sites


×
×
  • Create New...