De ce programarea?    Sa progresez continuu...

PHP gavno. Part 1: Enums

Sunt sigur că acest articol nu va fi ultimul din seria de articole PHP Gavno, la sigur dacă aveți experiență în acest limbaj o să mă puteți completa cu anumite argumente în favoarea sau în defavoarea ideii că totuși lipsesc unele lucruri normale în acest limbaj. E o tematică subiectivă, foarte subiectivă și mult discutată, dar cred că se poate să adaug și ale mele 5 copeici.

Deci problema cu care m-am întîlnit după apariția unui proiect pe PHP cînd lucrez pe Java este Enum-urile, o chestie foarte utilă cînd merge vorba de nomenclatoare, statute, tipuri și alte chestii defapt des întîlnite. Nu înțeleg de ce încă PHP după ani de dezvoltare nu are așa instrument.

Cum fac aldi rebeata de obicei ca să rezolve problema: bagă SplEnum care practic nu ajută nimic încît el doar oferă niște lucruri opționale nu greu realizabile și fără chestia asta. Eu consider asta incorect. Nativ, prin PHP poți declara o clasă care să conțină niște proprietăți-contante care vor stoca o valoare scalară, exemplu așa:

Iar apelarea o faci TaskStatusType::WAITING, instrucțiunea va returna 1.

Ok, parcă tot normal, de ce totuși sunt nesatisfăcut?! În Java e mai elegant rezolvat, dar nu că mai elegant, dar mai advanced, cum trebuie la băieți serioși.

Cod incomplet, dar cel mai important e ilustrat. Idee genială de a avea enum-uri unde fiecare componentă e un obiect unde poți să faci entitatea ta cu atributele necesare ție și să lucrezi cu getter și setteri care la naiba autocomplitul îi recunoaște.

Apelezi o componentă: TaskStatus.FINISH respectiv poți TaskStatus.FINISH.getName() sau TaskStatus.FINISH.getId()

Oare nu e comod? Oare nu e ceea ce ne trebuie des? Eu nuștiu dar îmi place mult PHP dar și în el sunt instrumente atrofiate și aiurea.

Posibilitatea de a face enum-uri in care fiecare componentă este o entitate e un plus mare în programare când e nevoie ca anume tipul dat să posede ceva caracteristici speciale. Așa construcție reduce folosirea switch-ului sau a array-urilor adiționale care vor descrie tipul dat.

Sunt înteresat cum voi rezolvați problema cu enum-urile?


Ți-a plăcut articolul? Apasă Like:

Tag-uri: php

Comentarii: