Jump to content
php.lv forumi

Labais/pareizais stils klašu veidošanā.


Recommended Posts

Sveiki!

Veidoju priekš sevis bilžu apstrādes klasi un līdz ar to radās jautājums kā būtu pareizāk.

Piemēram, es tagad izveidoju apmēram ko šādu:

$imageDataArray = array(
 'height' => 400,
 'width' => 400,
 'thumbs' => array(
'listThumb' => array(
  'height' => 100,
  'width' => 130,
  'scaled' => true
),
'galleryThumb' => array(
  'height' => 50,
  'width' => 70,
  'scaled' => true
)
 )
);
class image{
function image($imageDataArray){
 ...
}
}

Atbilstoši objektam tiek padots massīvs ar vajadzīgajām bildēm, to izmēriem un vēl visādiem citiem datiem. Bet, vai lai pieturētos pie pareizāka/labāka stila vajadzētu veidot apmēram šādi?

class image{
 function image(){
...
 }
 function setHeight($height){
...
 }
 function setWidth($width){
  ...
 }
 function setScaled($scaled){
  ...
 }
 function setThumbImage($imageObj){
  ...
 }
}

Pirmās klases gadījumā, pašā kodā nevajadzētu daudz rakstīt, lai izveidotu nepieciešamās bildes, pietiktu, praktiski, tikai ar iepriekš nodefinētu massīvu. Otrās klases gadījumā, laikam kods būtu daudz lasāmāks.

Tāpat, teiksim, kā rīkoties līdzīgā gadījumā, ja nepieciešams objektam padot vairākus parametrus(~7-9). Padot tos visus paramteros jau pie objekta izveides, vai arī padot tikai nozīmīgos, kas nepieciešami objekta izveidei un pārējos padot caur atsevišķām metodēm?

 

Paldies par atbildēm.

Link to post
Share on other sites

class image{
 function image(){
...
 }

vietā rasītos gan šitā

class image{
 function __construct(){
...
 }
}

Cik nu tur par datiem, ko tu pūt iekšā konstruktorā, tad imo būtu daudz loģiskāk neveidot masīvus masīvā (un attiecīgās darbības saturā), bet gan attiekties pret pret visām bildēm identiski. Ja ļoti gribi, tad vari piesaistīt katras bildes thumbnailus iekš clases, kā masīvu ar referencēm.

Idejiski jau thumb'i arī ir bildes.

 

(es jau protams nez .. tāds kā noobs)

Link to post
Share on other sites

Ja taisa ar referencēm, tad loģiskāk būtu pa virsu vēl vienu interfeisu.

 

GaleryItem / whatEverItem

-> array:Images[&baseImg,&thumbImage]

 

atiecīgi:

 

GaleryItem->addImage(url)
{
  $this->Images[new MyImage(url,MAX_W,MAX_H), new Image(url, THUMB_MAX_W,THUMB_MAX_H) ];
}

Link to post
Share on other sites
mefisto, uz php4 __contruct, ja nemaldos, nestrādā.

Pat ja neņem vērā faktu ka php4 oficiāli izbeidzās 13ajā jūlijā, tad pilnīgi pietiek ar to ka php4 ir bermzīgs un morāli novecojis (lai gan bieži vien liekas ka novecojumu varētu attiecināt arī uz php5). Tas ļoti siboliski ... emm .. simulē objektientētu valodu. A šī foruma sadaļa tak ir php un oop =]

Link to post
Share on other sites
×
×
  • Create New...