Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

OOP početno pitanje

[es] :: PHP :: PHP za početnike :: OOP početno pitanje

[ Pregleda: 3664 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

slavo.k

Član broj: 302312
Poruke: 46
*.dynamic.isp.telekom.rs.

Sajt: www.eho.in.rs


Profil

icon OOP početno pitanje16.01.2014. u 23:16 - pre 124 meseci
Pozdrav. Imam klasu u kojoj sam izmedju ostalih deklarisao jednu public promenljivu. Ta public promenljiva je niz koji se u okviru neke metode napuni odredjenim podacima. Kako mogu sada iz bilo koje druge metode ispisati vrednost te promenljive. Pokusao sam na par nacina, ali ne uspevam.
 
Odgovor na temu

Ivan_988
Pancevo

Član broj: 290922
Poruke: 16
*.dynamic.sbb.rs.



+2 Profil

icon Re: OOP početno pitanje17.01.2014. u 07:18 - pre 124 meseci
Ovako nesto mozda?

Code:

class ClassName {
    public $arrayName;

    public function fillArray() 
    {
        // napuni niz
    }

    public function getArray()
    {
        print_r($this->arrayName);
    }
}


Ili

Code:

class ClassName {
    public $arrayName;

    public function fillArray() 
    {
        // napuni niz
    }

    public function getArrayElement($name)
    {
        echo $arrayName[$name];
    }
}
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.dynamic.isp.telekom.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: OOP početno pitanje17.01.2014. u 11:17 - pre 124 meseci
Ček, nisam siguran šta tačno pitaš. Ako već imaš klasu kao recimo ovu koju je opisao Ivan, public promenljivoj možeš pristupiti ovako:

Code:
$obj = new ClassName(); 
//... ovde kod koji puni niz, npr $obj->fillArray();

//pristupanje
var_dump($obj->arrayName);

//traversing..
foreach ($obj->arrayName as $item) {
  var_dump($item);
}

Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Ivan Stojmenovic Ikac
Java and PHP Developer
Elance
Pancevo, Srbija

Član broj: 321055
Poruke: 5
*.dynamic.sbb.rs.

Sajt: www.oracle.com


+2 Profil

icon Re: OOP početno pitanje04.02.2014. u 12:48 - pre 124 meseci
Mozes koristiti malo savremenije principe programiranja sto se toga tice.

Probaj raditi PHP Overloading.

Primer:
Code:

<?php

     class FooClass 
     {
            /**
             * Handler - nosac podataka
             *
             *@var array
             */

              public $data = array();

             /**
              * Get 
              */

               public function __get($name) {
                     if (array_key_exists($name, $this->data)) {
                          return $this->data[$name];
                     }
              }

             /**
              * Set
              */

            public function __set($name, $value) {
                  $this->data[$name] = $value;
            }

            /**
             * Primer 2
             * Bez get i set mozes i na ovaj nacin
             */

              public function showStats($data) {
                   if(is_array($data)) {
                        $this->data = $data;
                        foreach($this->data as $key => $value) {
                             echo $key .' = '.$value . '<br>';  // Nije dobra praksa echo u klasi
                             // return $value
                             }
                        }
                  }
     }

     // Primer sa get i set

     $foo =  new FooClass();
     $foo->name = "administrator";
     $foo->email = "[email protected]";
     $foo->password  = "1233445";
     
     // Primer 2 bez get i set

     $bar = new FooClass();
     $data = array('user' => 'administrator',
                   'email' => '[email protected]',
                   'password' => '123324534'
                );
     $bar->showStats($data);
     
     // >> debug

     echo "<pre>";
        var_dump($foo);
     echo "</pre>";
?>


Debug:
Code:
user = administrator
email = [email protected]
password = 123324534

object(FooClass)#1 (1) {
  ["data"]=>
  array(3) {
    ["name"]=>
    string(13) "administrator"
    ["email"]=>
    string(14) "[email protected]"
    ["password"]=>
    string(7) "1233445"
  }
}


Vise o overloading mozes pogledati na : http://www.php.net/manual/en/language.oop5.overloading.php

[Ovu poruku je menjao Ivan Stojmenovic Ikac dana 04.02.2014. u 16:56 GMT+1]

if (wife.position == kitchen) {return sandwich};
if (wife.position == market) {return beer };
 
Odgovor na temu

slavo.k

Član broj: 302312
Poruke: 46
*.dynamic.isp.telekom.rs.

Sajt: www.eho.in.rs


Profil

icon Re: OOP početno pitanje12.02.2014. u 18:09 - pre 123 meseci
Hvala, ovo mi je dosta pomoglo. izvinite na kašnjnejnu.
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.ptt.rs.



+218 Profil

icon Re: OOP početno pitanje13.02.2014. u 12:47 - pre 123 meseci
Moje misljanje je da _get i _set treba izbegavati i koristiti ih samo kada nema drugi nacin da se resi problem ili je resenje mnogo komplikovano bez tih magicnih metoda.


[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Ivan Stojmenovic Ikac
Java and PHP Developer
Elance
Pancevo, Srbija

Član broj: 321055
Poruke: 5
*.dynamic.sbb.rs.

Sajt: www.oracle.com


+2 Profil

icon Re: OOP početno pitanje16.02.2014. u 11:27 - pre 123 meseci
Pa one su izmisljene da olaksaju zivot programera :D

if (wife.position == kitchen) {return sandwich};
if (wife.position == market) {return beer };
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
82.208.215.*



+218 Profil

icon Re: OOP početno pitanje17.02.2014. u 09:07 - pre 123 meseci
Konkretno kako su tebi olaksale? Moze li neki primer?
Ja cu tebi navesti primere kako su meni zagorcali zivot jer nisu pisani kada i gde treba :)

Mnoge stvari su izmisljene da olaksaju zivot programera ali se kroz njihovo koriscenje utvrdilo da je efekat suprotan, pogotovo ako se ne koriste za sta su i namenjene.

Ako imas klasu user i setujes username, password, birthday sa magicnim metodama i onda neko dodje da nastavi tvoj kod on nema pojima
sta sve ima ta user klasa. Kada gleda klasu on ne vidi sta sve ima klasa vec mora da prodje ceo kod. A ako kod ima par miliona linija onda je to divota.
Da li je username ili user_name ili name? Nije nemoguce nastaviti takav kod ali se pisanje nastavlja sa pretpostavkama sto i nije neko programiranje koje mora da bude precizno.
Za tebe je to super ali razmisli kako je drugima ili tebi ali posle par godina.

Ako user klasa oslikava tabelu u bazi onda mogu da naslutim koja su polja ali mi niko ne garantuje da tu nema jos dodatih polja sem ako klasa nije striktno namenjena da oslikava
strukturu db tabele. Tu vec moze da ima smisla.



[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.sbb.rs.



+7 Profil

icon Re: OOP početno pitanje24.02.2014. u 10:57 - pre 123 meseci
Da to nevalja nebi ga ni izmislili. Ako nisi siguran sta je tamo neki Pera ili Mica pisao po celom App source-u u Front controlleru pogledaj koji su to!
Code:

$class_vars = get_class_vars(get_class($my_class));


ili dump-uj neku klasu pa da vidis
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: OOP početno pitanje24.02.2014. u 11:10 - pre 123 meseci
Citat:
VladaSu:
Ako imas klasu user i setujes username, password, birthday sa magicnim metodama i onda neko dodje da nastavi tvoj kod on nema pojima
sta sve ima ta user klasa. Kada gleda klasu on ne vidi sta sve ima klasa vec mora da prodje ceo kod. A ako kod ima par miliona linija onda je to divota.


Pa ne mora da prođe ceo kod nego samo deklaracije.

 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: OOP početno pitanje24.02.2014. u 11:56 - pre 123 meseci
Kako da prođe samo deklaracije kad get i set metode mogu da prime bilo šta (videti primer koji je Ikac napisao)?

Drugo, teoretski neko može u getter metodi da napiše nešto kao

Code:

public function __get($name) {
  formatHardDisk();
}


i onda neko kaže echo $foo->name

Malo karikiram ali nije daleko od istine - imaš u kodu nešto što izgleda kao najobičnije čitanje atributa objekta a ustvari izvršava neki kôd sa ko zna kakvim side-efektima.
 
Odgovor na temu

Ivan Stojmenovic Ikac
Java and PHP Developer
Elance
Pancevo, Srbija

Član broj: 321055
Poruke: 5
*.dynamic.sbb.rs.

Sajt: www.oracle.com


+2 Profil

icon Re: OOP početno pitanje24.02.2014. u 13:49 - pre 123 meseci
Ma sve je sada to do stila programiranja i potrebama! Eo zivi primer Symfony i Zend Fw, samo malo da se baci oko na njihov kod komponenti i bundles pa se onda dobije prava slika koliko su mocne te metode! Sto bi neko sada lupao glavu sta si ti pisao kada on jednostavno moze da napravi sebi novi objekat i uradi onako kako on zeli! Magija OOP.

if (wife.position == kitchen) {return sandwich};
if (wife.position == market) {return beer };
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.ptt.rs.



+218 Profil

icon Re: OOP početno pitanje24.02.2014. u 15:29 - pre 123 meseci
Citat:
alfa-pro: Da to nevalja nebi ga ni izmislili. Ako nisi siguran sta je tamo neki Pera ili Mica pisao po celom App source-u u Front controlleru pogledaj koji su to!
Code:

$class_vars = get_class_vars(get_class($my_class));


ili dump-uj neku klasu pa da vidis


Druze, sa ovim nisi ama bas nista postigao. Sta ces da dobijes ako se koriste magic metode? Nista.

Napravili su i GOTO narebu pa se ispostavilo da nikako ne valja. To nije argument.
PHP je jedan od konceptualno najlosijih masovno prihvacenih programskih jezika sto se tice nacina programiranja i tu ce se svako sloziti. Sto bi neko pravio nesto lose?
U zadnjih 7-8 godina uspeli su znacajno da ga poprave ali jos uvek zaostaje. Pokusava se napraviti neki napredak sa Zend ali sve to kaska i ne daje rezultate kakve su ocekivali.
Zasto vecina drugih programskih jezika nema ove magic metode a u razvoju su 10 godina ispred PHP?
Svasta ljudi izmisle pa se kasnije vidi da to nije toliko korisno kao sto su mislili da ce biti.
Ja jesam PHP programer ali radio sam i Javu i ASP i .net i mogu da uporedim. Necu da pricam o mukama i smehu drugara koji su silom prilika prelazili sa nekog drugog jezika na PHP.
Ceo dan sam morao da slusam njihove neverice a odgovori su mi bili "jbg, jbg tako je, jbg..."

@Predraze kako ne mora da prodje ceo kood kada neko na nekom mestu podigne user klasu i setuje polje birthday. Ti samim pogledom na klasu ne mozes da znas da postoji to polje.
Mozda i mozes, zavisi od kooda. Nije mi jasno....

Citat:
Ivan Stojmenovic Ikac: Ma sve je sada to do stila programiranja i potrebama! Eo zivi primer Symfony i Zend Fw, samo malo da se baci oko na njihov kod komponenti i bundles pa se onda dobije prava slika koliko su mocne te metode! Sto bi neko sada lupao glavu sta si ti pisao kada on jednostavno moze da napravi sebi novi objekat i uradi onako kako on zeli! Magija OOP.


Uf. Sokiran sam :) A sto bi onda koristio neki FW kada neces da lupas glavu nego samo pravis nove objekte? Napravi sve iz pocetka. I bilo ko da nastavi tvoj kod i nece da lupa glavu neka sam pravi nove klase. Klasa na klasu, klasa na klasu a onda i najmanja izmena osnovne funkcije klase ima da bude nocna mora. Ili napravi Pera novu klasu, napravi Zika novu klasu i onda neko hoce da promeni nesto u user klasi i shvati da su Pera i Zika napravili nove klase za njihove potrebe jer ih je mrzelo da lupaju glavu i onda mora i tamo da menja. Eto ti prilike da zaposlis jos jednog programera ili da das otkaz Peri i Ziki. Ovo sto si ti rekao nije Magija OOP vec OOP nocna mora.

Nisam rekao da ne treba to koristiti vec treba paziti kada, kako i zbog cega se koristi jer precesto se desava da se koristi i kada nema potreba a samim tim se komplikuje kood.
Konkretno u ovom primeru ne vidim zasto bi se koristilo. Potencijalno vece stete nego koristi.

Uopste me ne zanima ko je u pravu vec sam samo hteo da skrenem paznju autoru teme da moze taj savet sa magic pristupom da pored dobrih posledica moze da ima i negativne posledice i da treba razmotri pre nego sto pocne da pise takav kood a na njemu je da odluci.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.ptt.rs.



+218 Profil

icon Re: OOP početno pitanje24.02.2014. u 15:56 - pre 123 meseci
Da ne bih pricao dalje vredi procitati

Ja sam davno izbacio magic metode a razlozi su navedeni na linku. Dosao sam u situaciju kada sam video da to ne valja. Verovatno je bilo jos razloga zbog
kojih me je zabolela glava ali davno bese to da se vise ni ne secam ...

[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: OOP početno pitanje

[ Pregleda: 3664 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.