Je PHP nutné k uplatnění?

Fodrek (not logged in)

Re:Je PHP nutné k uplatnění?
« Odpověď #135 kdy: 17. 12. 2014, 12:14:02 »
Práca pre priemerných je mŕtva, zvykajte si

23.07.2013
Technológie a globalizácia rozbíjajú trh práce aj vzdelávanie, zároveň však budujú nové príležitosti

Trh práce sa navždy zmenil. Pracovné pozície pre stredne kvalifikovaných zmizli a už sa nikdy nevrátia. Práce bude len na pozíciách pre nekvalifikovaných a pre vzdelaných špecialistov, ktorých záber sa postupom času bude čoraz viac zužovať, povedala profesorka London Business School Lynda Grattonová publiku konferencie Premier Business Leadership (PBLS), ktorú v júni Amsterdame zorganozivala analytická spoločnosť SAS.

L. Grattonová tejto premene na pracovnom trhu pripisuje aj vysokú nezamestnanosť medzi mladými ľuďmi, ktorí po štúdiu v minulosti rozbiehali kariéru práve na pozíciách vyžadujúcich strednú kvalifikáciu.

Ľudia podľa L. Grattonovej potrebujú pochopiť a prijať, že tento druh práce sa nikdy nevráti bez ohľadu na to, čo tvrdia ministri krízou sužovaných vlád. Zároveň musia musieť investovať oveľa viac do svojho vzdelania.
http://www.etrend.sk/ekonomika/praca-pre-priemernych-je-mrtva-zvykajte-si.html


Kit

Re:Je PHP nutné k uplatnění?
« Odpověď #136 kdy: 17. 12. 2014, 12:45:30 »
Citace
class ucet {
   private int zostatok
   private osoba majitel
   public void zuroc() {
      zostatok = zostatok + zlozityVypocet()
   }
}     
zostatok a majitela natrepete cez konstruktor? k zostatku pristupujete ako?

println(ucet);
Citace
priklad 3:

Citace
class matica {
   private int[][] prvky

   ...
}     

ako nastavujete prvky matice?

Do konstruktoru injektuji zdroj dat. Konstruktor si uloží zdroj dat a na povel si je načte nebo si je načte rovnou.
Citace
priklad 2:

ako riesite objekty mapovane na riadky tabulky? cez properties, ktore v php nemate?

Citace
class automobil {
  private string znacka
  private string model
}

kto vam riesi ukladanie dat? automobil ma metodu find a save ako v ruby?

Značka a model nejsou atributy, ale objekty. Navíc jsou na sobě závislé - nemůžeš tedy změnit značku a ponechat model.

$automobil->update(new Znacka('Audi', 'A8'));

Tohle sice také vypadá jako setter, ale funguje jinak.

perceptron

Re:Je PHP nutné k uplatnění?
« Odpověď #137 kdy: 17. 12. 2014, 13:09:13 »
Citace
println(ucet);
akym magickym sposobom zisti funkcia println() zostatok z uctu?

-------------------------------------------------------------------------------------

Citace
Do konstruktoru injektuji zdroj dat. Konstruktor si uloží zdroj dat a na povel si je načte nebo si je načte rovnou.

Kód: [Vybrat]
public class Matica {
  private Source source;

  public Matica(Source source) {
     this.source = source;
  }

  public int getElementAt(int row, int column) {
     return this.source.getElementAt(row, column);
  }
}


Kód: [Vybrat]

public class ArraySource implements Source {
   private int[][] elements;

   public int getElementAt(int row, int column) {
      return this.elements[row][column];
   }   
}

neviem, ci mi nieco uslo, ale som tam, kde som bol, akurat mam odabstrahovany zdroj dat do separatnej triedy, co je jedna vrstva indirekcie (a mozem mat maticu, ktora taha data z nosql databazy, co moze byt trochu overengineering).

datam v privatnych premennych som sa urcite nevyhol.



---------------------------------------
priklad 3

Kód: [Vybrat]
class automobil {
  private Znacka znacka

  public void update(Znacka znacka) {
     ....
  }
}

aky je, pretty please, rozdiel medzi

Kód: [Vybrat]
  public void update(Znacka znacka) {
     ....
  }[/quote]


a

[quote]  public void setZnacka(Znacka znacka) {
     ....
  }
[/quote]

okrem toho, ze to "funguje jinak"?


a podme dalej

[quote]public class Znacka {
  private String znacka;
  private String model;
}[/quote]

takze riesenim problemu je, ze miesto triedy s dvoma instancnymi premennymi, kde mame triedu s jednou instancnou premennou a jednu triedu s dvoma instancnymi premennymi. opat mam dalsiu vrstvu abstrakcie.

a co toto?

[code]
class automobil {
  private znacka znacka
  private motor motor
}


perceptron

Re:Je PHP nutné k uplatnění?
« Odpověď #138 kdy: 17. 12. 2014, 13:11:09 »
pokazil sa kod, tak este raz

aky je rozdiel medzi

Citace

  public void update(Znacka znacka) {
     ....
  }


a

Citace
  public void setZnacka(Znacka znacka) {
     ....
  }

okrem toho, ze to "funguje jinak"?


a podme dalej

Citace
public class Znacka {
  private String znacka;
  private String model;
}

takze riesenim problemu je, ze miesto triedy s dvoma instancnymi premennymi, kde mame triedu s jednou instancnou premennou a jednu triedu s dvoma instancnymi premennymi. opat mam dalsiu vrstvu abstrakcie.

a co toto?

Citace
class automobil {
  private znacka znacka
  private motor motor
}

Kit

Re:Je PHP nutné k uplatnění?
« Odpověď #139 kdy: 17. 12. 2014, 14:07:05 »
pokazil sa kod, tak este raz

aky je rozdiel medzi

Citace

  public void update(Znacka znacka) {
     ....
  }


a

Citace
  public void setZnacka(Znacka znacka) {
     ....
  }

okrem toho, ze to "funguje jinak"?

Ten, že se to už dál netahá po objektech, ale rovnou se to uloží v databázi. Setter by nemohl mít tento postranní efekt. Update to má v popisu práce.
[/quote]
a podme dalej

Citace
public class Znacka {
  private String znacka;
  private String model;
}

takze riesenim problemu je, ze miesto triedy s dvoma instancnymi premennymi, kde mame triedu s jednou instancnou premennou a jednu triedu s dvoma instancnymi premennymi. opat mam dalsiu vrstvu abstrakcie.

a co toto?

Citace
class automobil {
  private znacka znacka
  private motor motor
}

Totéž. Automobil nepotřebuji mít v objektech, když ho mám v databázi.

Vždy je nutné úlohu rozdělit do vrstev a těm přidělit pravomoce. Objektové volání se převede na procedurální úkon pro zapsání do relační databáze. Klasické ORM.

Myslel jsem si, že se mě zeptáš na něco, co se má řešit objektově.


bezprízorný

Re:Je PHP nutné k uplatnění?
« Odpověď #140 kdy: 17. 12. 2014, 14:30:56 »
Nie je nutné. Ale zas, skriptovacie jazyky sa celkom hodia na rutinné úlohy, keď si potrebuješ predpripraviť data, šablony, čokoľvek iné.

2flame twins (perceptron a Kit): Dobre to robíte chlapi, mladému ste isto silno pmôhli  ;).

Kolemjdoucí

Re:Je PHP nutné k uplatnění?
« Odpověď #141 kdy: 17. 12. 2014, 14:35:41 »
Setter by nemohl mít tento postranní efekt. Update to má v popisu práce.

Lži. Do setteru se může napsat identický kód jako do metody. Jediný rozdíl je v šesti znacích "update" versus devět znaků "setZnacka".

To že máte nějaký interní politický předpis na to že metoda s určitým názvem může pouze něco, je irelevantní.

NooN

Re:Je PHP nutné k uplatnění?
« Odpověď #142 kdy: 17. 12. 2014, 14:47:06 »
a potom sa rozsypali koralky...

Kit

Re:Je PHP nutné k uplatnění?
« Odpověď #143 kdy: 17. 12. 2014, 20:27:25 »
Setter by nemohl mít tento postranní efekt. Update to má v popisu práce.

Lži. Do setteru se může napsat identický kód jako do metody. Jediný rozdíl je v šesti znacích "update" versus devět znaků "setZnacka".

To že máte nějaký interní politický předpis na to že metoda s určitým názvem může pouze něco, je irelevantní.

Asi by se ti líbil zápis
Kód: [Vybrat]
$automobil->setZnacka(new Znacka('Audi', 'A8'));Takže $automobil bude mít rozšířené rozhraní o další metodu setZnačka(). Když budu změnit barvu, tak do rozhraní přidám další zbytečnou metodu setBarva()?

Když budu mít v rozhraní třídy objektu $automobil metodu
Kód: [Vybrat]
function update(Updatable $objekt) {
    $objekt->update($db);
}
tak pokryji všechny změny jednou metodou, ve které jen zavolám update a je to. Ví, co má uložit a kam to má uložit. Všechny objekty jsou privátní. Kde vidíš nějaký setter? Nebo si snad myslíš, že databázi ukládám do auta?

Koralky

Re:Je PHP nutné k uplatnění?
« Odpověď #144 kdy: 18. 12. 2014, 00:32:00 »
Nekdy je lepsi update, nekdy setter, resite tu malichernosti ale to je uz udelem vasich zivotu....

Michal2

Re:Je PHP nutné k uplatnění?
« Odpověď #145 kdy: 18. 12. 2014, 14:42:52 »
Podla mojho nazoru je jedno, aky jazyk sa naucis. Casom ich budes pouzivat viac a vsetko budes vidiet abstraktnejsie. Jazyk sa ti stane prostriedkom, ako dosiahnut urcity ciel. Preto, ak ta ucitel tlaci do PHP, nauc sa PHP. S inymi jazykmi by si si to len komplikoval. Po par rokoch uz nebudes vidiet az taky rozdiel a budes switchovat syntax, aj ked priznavam, ze zo zaciatku to bolo tazke.

Domenovo-specificke veci je vzdy lepsie nechat spravit domenovym specialistom a hlavne navrhnut ich advisovat aby spravili dobry interface! Mozes sa pustat aj tymto smerom, ale podla mna je to zahrabanie sa do nizko-urovnovych veci a neviem ci by si bol pouzitelny stale ako programator po X rokoch.

M.

Zdravím,
chodím na jednu SŠ se zaměřením na Informační technologie - Počítačové sítě a programování. Vzhledem k nabídkám práce a poptávce po programotárech. Jak moc důležitá je znalost webového programování v dnešní době a zároveň také pro budoucnost? Učitel do nás rve za každou cenu PHP, ale já v tom moc perspektivu nevidím. Jaký je na to Váš názor? Já spíše preferuji jazyky jako je C/C++ a Java. Jsem ve fázi takové, že hledám něco, čeho bych se měl opravdu chytnout, abych se uplatnil. Dnes to s prací není jednoduché a můj názor je, že dnes dělá weby téměř každý. Opravdu bych rád znal názor veřejnosti.

Díky. :)

perceptron

Re:Je PHP nutné k uplatnění?
« Odpověď #146 kdy: 19. 12. 2014, 13:46:42 »
ja uz zacinam tusit ducha kitovej architektury :-) to bude tymi prikladmi!

entity, ktore zmene atributov rovno updatuju databazu. takze ten setter-update vola nejaku metodu, tak rovno v nej sa vykonaju sql dopyty. prakticky activerecord styl (ma $automobil findbyid()?).

Kód: [Vybrat]
$automobil->setZnacka(new Znacka('Audi', 'A8'));
predpokladam, ze setZnacka() vola nejaky externy objekt, ktory ma metody s realnou pracou s databazou (teda nejaky orm)

----------
v jave je to pretocene, tam je entita len kontajner na data. neimplementuje ziadne specialne rozhranie, necakaju sa od automobilu ziadne metody typu update() alebo findById(), to riesi externa trieda

takze v jave je to typicky

Kód: [Vybrat]
automobil.setZnacka(new Znacka('Audi', 'A8'));
Kód: [Vybrat]
automobilRepository.saveOrUpdate(automobil)
ano, je to anemicky styl a ano, fowler na to strasne nadava, ale

1. v jave je to cele o datach, ktore tecu cez vrstvy, ale realne oni na webe tecu aj tak: v takom angulari tecu data z widgetov do controllerov cez jsony do mvc controllera na serveri, ktory to zvaliduje, posunie do servicu, ktory to spracuje, posunie do perzistencie a ta posunie do databazy.
2. je to dominantny styl, ktory funguje.
3. technicke dovody nepustia (je tazke urobit dependency injection ORM do entity a ak to aj spravite, je tazke potom ten ORM mockovat v unit testoch a teda predpokladam, ze unit testy kit pise)
4. kyvadlo ide od objektovo orientovanych veci naspat k mentalite "tu je procedura / webservice / rest api" a "tu su spravy, co medzi nimi tecu". ... pretoze skalovanie nepusti

Kit

Re:Je PHP nutné k uplatnění?
« Odpověď #147 kdy: 19. 12. 2014, 14:29:09 »
ja uz zacinam tusit ducha kitovej architektury :-) to bude tymi prikladmi!

entity, ktore zmene atributov rovno updatuju databazu. takze ten setter-update vola nejaku metodu, tak rovno v nej sa vykonaju sql dopyty. prakticky activerecord styl (ma $automobil findbyid()?).

Vypadá to následovně:
Kód: [Vybrat]
$automobil->update(new AutoZnacka('Audi', 'A8'));Objekt $automobil má metodu update():
Kód: [Vybrat]
function update(Updatable $objekt) {
    $objekt->update($this->db, $this->id);
}
a pak je tu ještě třída AutoZnacka, která je v servisní vrstvě:
Kód: [Vybrat]
class AutoZnacka implements Updatable {
    private $znacka;
    private $typ;

    function __construct($znacka, $typ) {
        $this->znacka = $znacka;
        $this->typ = $typ;
    }

    function update(MyPDO $db, $id) {
        $update = $db->prepare('UPDATE automobil SET znacka=?, typ=? WHERE id=?');
        $update->execute(array($this->znacka, $this->typ, $id));
    }
}

Trochu jsem to zjednodušil, aby byl pochopitelný princip. Namespace a ošetření výjimek si tam snad každý dodělá podle svých potřeb.

Radek Miček

Re:Je PHP nutné k uplatnění?
« Odpověď #148 kdy: 19. 12. 2014, 15:09:52 »
Kód: [Vybrat]
class AutoZnacka implements Updatable {
    private $znacka;
    private $typ;

    function __construct($znacka, $typ) {
        $this->znacka = $znacka;
        $this->typ = $typ;
    }

    function update(MyPDO $db, $id) {
        $update = $db->prepare('UPDATE automobil SET znacka=?, typ=? WHERE id=?');
        $update->execute(array($this->znacka, $this->typ, $id));
    }
}

Trochu jsem to zjednodušil, aby byl pochopitelný princip. Namespace a ošetření výjimek si tam snad každý dodělá podle svých potřeb.

Jde získat např. hodnotu $znacka? Mj. není ten kód AutoZnacka boilerplate?


perceptron

Re:Je PHP nutné k uplatnění?
« Odpověď #149 kdy: 19. 12. 2014, 15:25:32 »
ja mam pocit, ze ten priklad je blby^wzjednoduseny ze popiera pointu

Kód: [Vybrat]
function update(Updatable $objekt) {
    $objekt->update($this->db, $this->id);
}

lebo potom auto, ktore updatuje autoznacku, v skutocnosti to prehodi na volanie na autoznacku, ktora updatuje automobil..., co je, ako vravi pan Micek, dost boilerplatovo.

ak by to bolo mapovanie, ze co tabulka, to Updatable entita, tak aj tak mi z toho ide hlava kolem

ak autoznacka nesie Audi a A8, preco ma vediet o konkretnych autach, ktore ma updatnut? ak teda predpokladam, ze znacky su v nejakom ciselniku

dalsia vec je, ze takto neurobite unit testy, co je epic fail