Topic: Keletas OO PHP klausimų

Sveiki,
Neseniai pradėjau domėtis objektiniu programavimu ir bandau suprast kodėl tai gali būti geriau :)
Tai va, tarkime šis, pavyzdys blogas, nes html struktūra naudojama?
Kaip suprantu, OO naudojama tik įterpt duomenis į HTML elementus?


Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Re: Keletas OO PHP klausimų

Klysti del OOP.

Pirmiausia paskaityk: http://www.coders.lt/php/oop5/php_objek … imo_ivadas


Jei kils klausimu tada klausk.

Sekmes studijuojant.

Re: Keletas OO PHP klausimų

Jo, su php be OOP būtų visai liūdnai, nes nuo 5.3v atsiveria super galimybės. Aišku nėra vienos teisybės, bet mane užknisa tie simple pavyzdžiai įvairiais klausimais, nes pats OOP  principas yra kurt struktūras. Kiek tenka pastebėt, tai pradedantieji dažniausia pasikuria šiukšlyną.

NeturiuVardo,
iškart domėkis OOP + desing patterns, kitaip nesuprasi kam viso to reikia :)

Kiek maigyklių sudėvėjai ?

Re: Keletas OO PHP klausimų

md5 wrote:

Aišku nėra vienos teisybės, bet mane užknisa tie simple pavyzdžiai įvairiais klausimais, nes pats OOP  principas yra kurt struktūras. Kiek tenka pastebėt, tai pradedantieji dažniausia pasikuria šiukšlyną.

Tame ir yra reikalas, kad realaus pavyzdžio kur panaudoti galima neparodo, tik visokius su dėžėm, mašinom ar šeimom... Design patterns, kiek akį užmetęs buvau, jau kažkas konkrečiau. Reiks pasigilint, dėkui :)

Re: Keletas OO PHP klausimų

į OOP DP reiktų labiau įsigilint. Tad susirask ir mokykis iš knygų:
PHP Objects Patterns and Practice
Pro PHP Patterns
PHP Object Oriented Solutions

Dar pasidomėk, kas yra UML, naudingas įrankis.

Kiek maigyklių sudėvėjai ?

Re: Keletas OO PHP klausimų

neblogas ivadas i design pattersns yra http://www.ibm.com/developerworks/libra … signptrns/

7 (edited by neturiuVardo 2010-04-21 22:31:52)

Re: Keletas OO PHP klausimų

Hehe, po truputį suprantu, kad visai neblogas dalykas tas OOP. Va, pradžiai kokį resizerį pasirašiau :)

    class ImageResize{
        public $name;
        // Seni img dydžiai
        public $W, $H;
        // Nauji img dydžiai
        public $NewW = 800;
        public $NewH = 600;
        // Pakeistų paveiksliukų nuorodos
        public $path;
        // Laikini kintamieji
        public $tmp;
        public $src;
        
        public function __construct(){
            $this->src = imageCreateFromJPEG($_FILES['upload']['tmp_name']);
            list($this->W, $this->H) = getImageSize($_FILES['upload']['tmp_name']);
            $this->name = $_FILES['upload']['name'];
            $this->path = $_SERVER['DOCUMENT_ROOT'] . "/abc/upload/";
        }
        
        public function resize(){
            $this->tmp = imageCreateTrueColor($this->newW, $this->newH);
            imageCopyResampled($this->tmp, $this->src, 0, 0, 0, 0, $this->newW, $this->newH, $this->W, $this->H);
            if ( file_exists($this->path . $this->name) ){                // Jei toks failas egzistuoja
                $exts = explode(".", $this->name);            // Explodinam vardą, kad atskirti extensioną nuo failo vardo
                $this->name = $exts[0] . "_" . rand(0, 999) . "." . $exts[1];
            }
            imageJPEG($this->tmp, $this->path . $this->name, 100);
            imageDestroy($this->tmp);
            return $this->path . $this->name;
        }
        
        public function setSize($width, $height){
            $this->newW = $width;
            $this->newH = $height;
        }
        
        public function setSizeVar($max){
            if ( $this->W > $this->H ){
                $this->newW = round( $this->W * ($max / $this->W) );
                $this->newH = round( $this->H * ($max / $this->W) );
            } else {
                $this->newW = round( $this->W * ($max / $this->H) );
                $this->newH = round( $this->H * ($max / $this->H) );
            }
        }
    }

Bet būtų vienas klausimas - kokia prasmė naudoti private ar protected?

8 (edited by Lukas 2010-04-21 22:57:59)

Re: Keletas OO PHP klausimų

>> Bet būtų vienas klausimas - kokia prasmė naudoti private ar protected?

http://php.net/manual/en/language.oop5.visibility.php
tai, kas ir kaip gali naudoti ta metodą/parametrą. OOP esmė (viena iš) atsiranda, kai pradedi naudoti paveldėjimą. Pvz turi objektus Darbininkas, šefas, ir jie turi bendrą tėvinį objektą Darbuotojas, kuriame yra laikomi bendri abiems darbuotojams metodai. public, private ar protected, panaudoti Darbuotojas objekte nusako, ar darbininko objekte/išorėje, bus galima naudotis ta funkcija.

O prasmė ta, kad suteikia saugumo. T.y. taip gali užsitikrinti, kad šefas nepradėtų naudoti tik vidinių darbuotojo metodų. Kartais metodo iškvietimas ne iš ten kur priklauso gali pridirbti nemažai bėdų, kurias laaaabai sunku atsekti. :)