| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Tiedosto- ja kuvaluokatempty 08.07.04 15:50 Tiedostoluokka esittää yhden määritetyn tiedoston tietoja. Kuvaluokka perii sen ja lisää ominaisuudet kuvalle
Teen itelleni uusia kotisivuja ja tässä on nyt sitten pari luokkaa tännekin. Ajattelin suunnitella ihan kunnolla. Aikanaan ovat sitten kotisivuillakin jaossa jahka ehin koodailla ne loppuun saakka ja julkasta. Luultavaa on myös, että jotain lisäominaisuuksi esitellään mutta tässä nämä ensimmäiset toimivat luokat. <?php /** * TiedostoLuokka esittää aina yhtä tiedostoa ja omistaa sille tarkoitettuja * toimintoja * * ver. 0.1 05.07.2004 Ensimmäinen versio * * @author Mika Karjunen */ class TiedostoLuokka { //bool var $m_bOnOlemassa; //string var $m_strTiedostonPolku; //int var $m_iTiedostonKoko; function TiedostoLuokka( $strTiedostonPolku ) { if( !file_exists( $strTiedostonPolku ) ) { $this->m_bOnOlemassa = false; $this->VirheellinenPolku( $strTiedostonPolku ); return; } $this->m_bOnOlemassa = true; $this->m_strTiedostonPolku = $strTiedostonPolku; } /** * Tarkastaa määritellyn tiedoston koon tavuina! * Koko tallentuu luokan attribuuttiin ja on jatkossa luettavissa suoraan * muuttujasta. * * @return Palauttaa tiedoston todetun koon. */ function Tiedostokoko() { if( !$this->m_bOnOlemassa ){ return; } $this->m_iTiedostonKoko = filesize( $this->m_strTiedostonPolku ); return $this->m_iTiedostonKoko; } /** * Ilmoittaa lyhyenä vistinä näytöllä, että polku on virheellinen ja näyttää * mikä polku on syötetty. Tarkoitettu luokan sisäiseksi metodiksi. * * @param1 Virheellisen tiedoston polku */ function VirheellinenPolku( &$strTiedostonPolku ) { echo( "<font size=\"-1\">Tiedostoa ei ole:<br /> $strTiedostonPolku</font><br />" ); } } ?> <?php require_once( 'TiedostoLuokka.php' ); /** * KuvaLuokka merkitsee aina yhtä kuvaa. Luokka kykenee suorittamaan erinäisiä asioita * kuvalle. * * Luokan dokumentti myötäilee PHP 4.3.7:aa mutta luokka toimii luultavasti * PHP 4.3.0:lla. * * ver. 0.1 05.07.2004 Ensimmäinen versio * 0.101 06.07.2004 Koodia lyhennetty ja tehostettu * * @author Mika Karjunen */ class KuvaLuokka extends TiedostoLuokka { //int var $m_iKuvanKorkeus; var $m_iKuvanLeveys; //string var $m_strKuvanTyyppi; var $m_strKuvanKoko; var $m_strKuvan_xhtml; var $m_strAltText; /** * Muodostin tekee uuden olion käyttöön ja määrää parametrit. * * $param1 Polku kuvatiedostoon, voi olla absoluuttinen tai suhteellinen * $param2 Kuvalle tuleva Alt teksti, oletuksena tyhjä. */ function KuvaLuokka( $strKuvanPolku, $strAltText = "" ) { parent::TiedostoLuokka( $strKuvanPolku ); $this->m_strAltText = $strAltText; } /** * Muodostaa kuvasta xhtml -standardin mukaisen merkkijonon jonka tallentaa * luokan attribuuttiin, mistä se on myöhemmin luettavissa. * $m_strKuvan_xhtml * * @param1 Määrittää pitääkö kuvasta laskea sen koko. Mikäli kuvan koko on jo * kerran lasketettu määrittämällä parametri falseksi voidaan optimoida * koodin nopeutta. * Oletuksena parametri on true * * @return Palauttaa muodostetun merkkijonon. Merkkijono on xhtml standardin * mukainen */ function Kuva_xhtml( $bMuodostaKoko = true ) { if( !$this->m_bOnOlemassa ){ return; } if( $bMuodostaKoko ){ $this->KuvanMitat(); } $this->m_strKuvan_xhtml = "<img src=\"$this->m_strTiedostonPolku \""; $this->m_strKuvan_xhtml .= "$this->m_strKuvanKoko border=\"0\" "; $this->m_strKuvan_xhtml .= "alt=\"$this->m_strAltText\" />"; return $this->m_strKuvan_xhtml; } /** * Tarkastaa kuvan fyysiset mitat pikseleinä ja tallentaa ne attribuuttiin. * Jatkossa ne on luettavissa suoraan luokan muuttujista. * m_iKuvanKorkeus Ilmoittaa kuvan korkeuden, int * m_iKuvanLeveys Ilmoittaa kuvan leveyden, int * m_strKuvanTyyppi Ilmoittaa kuvan tyypin, string * m_strKuvanKoko Ilmoittaa kuvan koon, string * * Käytetty php:n funktio on dokumentoitu siten, että se pystyy saamaan selvlille * seuraavien kuvaformaattien koon: GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, * IFF, JP2, JPX, JB2, JPC, XBM, ja WBMP * * @return Metodi palauttaa stringin, jossa on kuvan koko merkkijono muodossa * esim. width="100" height="200", merkkijonoa voi käyttää suoraan kuvan * muodostamiseen. */ function KuvanMitat() { if( !$this->m_bOnOlemassa ){ return; } $tmp = getimagesize( $this->m_strTiedostonPolku ); $this->m_iKuvanLeveys = $tmp[0]; $this->m_iKuvanKorkeus = $tmp[1]; $thsi->m_strKuvanKoko = $tmp[3]; switch ( $tmp[2] ) { case 1: { $this->m_strKuvanTyyppi = "GIF"; break; } case 2: { $this->m_strKuvanTyyppi = "JPG"; break; } case 3: { $this->m_strKuvanTyyppi = "PNG"; break; } case 4: { $this->m_strKuvanTyyppi = "SWF"; break; } case 5: { $this->m_strKuvanTyyppi = "PSD"; break; } case 6: { $this->m_strKuvanTyyppi = "BMP"; break; } case 7: { $this->m_strKuvanTyyppi = "TIFF"; break; } case 8: { $this->m_strKuvanTyyppi = "TIFF"; break; } case 9: { $this->m_strKuvanTyyppi = "JPC"; break; } case 10:{ $this->m_strKuvanTyyppi = "JP2"; break; } case 11:{ $this->m_strKuvanTyyppi = "JPX"; break; } case 12:{ $this->m_strKuvanTyyppi = "JB2"; break; } case 13:{ $this->m_strKuvanTyyppi = "SWC"; break; } case 14:{ $this->m_strKuvanTyyppi = "IFF"; break; } case 15:{ $this->m_strKuvanTyyppi = "WBMP"; break; } case 16:{ $this->m_strKuvanTyyppi = "XBM"; break; } default:{ $this->m_strKuvanTyyppi = ""; break; } } return $this->m_strKuvanKoko; } }; ?> empty 18:15 9.7.04 Nimeämiskäytännössä olisi mielestäni vähän parannettavaa. Ennemmin vaikka luokkien nimiksi yksinkertaisesti Tiedosto ja Kuvatiedosto. Ja yleisesti metodien nimissä käytetään pieniä alkukirjaimia, ainoastaan konstruktorissa isoa. Metodien nimien on tarkoitus ilmaista sitä mitä ne tekevät, ei mitä ne palauttavat. Ja nuo m_ etuliitteet on aikalailla turhia, niillä ei ole oikeastaan mitään informatiivista arvoa. Kannattaa tutustua vaikka PEAR:iin ja sen koodausstandardiin. http://pear.php.net/manual/en/standards.naming.php Ja vaikkapa PHP Eclipseen http://www.phpeclipse.de/ Ja suosittelisin vielä kieleksi englantia. Ainakin itse olen huomannut, että suomenkielellä sopivien nimien keksiminen on paljon hankalampaa. empty 19:03 11.7.04 Hyviä huomautuksia, kiitos vain mielipiteistäsi. Käytän yhtä ja samaa nimeämiskäytäntöä kaikissa kielissä, siksi siis noin. Englannin kielen käyttö on varsin perusteltu ehdotus, kuitenkin omissa projekteissani käytän jo periaatteesta Suomea. RedEagle 09:47 12.7.04 On tuo nyt monin verroin mukavampaa koodia lukea, kuin mitä nuo missä on muuttujat jne nimetty sekaisin suomeksi ja englanniksi. editoitu: 13:18 12.7.04 empty 13:10 12.7.04 Jep, ihan selkeää koodiahan tuo on, ei siinä mitään. Ja sama kai se on miten sitä nimeää jos koodi tulee omaan käyttöön, mutta silti suosittelen yleisesti sovittujen standardien/tapojen noudattamista. Fingelska ei ole mukavaa luettevaa, ja siihen olen sortunut itsekkin juuri tuon suomen kielen hankaluuden takia. Siksipä koodaankin nykyään enkuksi. remix 18:24 15.7.04 JaskaS kirjoitti: nuo m_ etuliitteet on aikalailla turhia, niillä ei ole oikeastaan mitään informatiivista arvoa. Kannattaa tutustua vaikka PEAR:iin ja sen koodausstandardiin. Tuo Pearin naming convention:kin suosittaa luokan jäsenmuuttujien nimeämistä alaviiva(_) etuliitettä käyttäen. Itse käytän m_ -liitettä ja se on mielestäni hyvinkin informatiivinen. |
![]() Haku
|