Framework romanesc!?

Ai un proiect pe care l-ai realizat în PHP? Doreşti să propui un proiect pe care să îl realizăm în cadrul comunităţii?

Moderatori: cristi, icsfails, Moderatori

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Dum Noi 16, 2008 5:41 pm

De abia asteptam sa ma uit pe ea, iar acum ca am avut posibilitatea iti
spun primele impresii, legate de nivelul low level al codului, nu de
arhitectura framework-ului.

Mi se pare mai slaba decat se facea zarva pe aici, dar e normal. Ai riscat
destul de mult crescand asteptarile asa de timpuriu, iar unele chestii mi se
par demne de http://thedailywtf.com/.

1. Multe metode au ca ultima instructiune:

Cod: Selectaţi tot

return $this->returnToChain ();


care banuiam ce face dar am zis totusi sa verific definitia:

Cod: Selectaţi tot

# Method to do chain appending. It's easier, and sometimes
# We can add some conditions to the chain;
protected function & returnToChain () {
    # Easier, than writing return (this) everytime;
    return $this;
}


Daca la treaba cu "We can add some conditions to the chain" mi se pare
ok, si chiar la asta ma asteptam, comentariul "Easier, than writing return
(this) everytime" e chiar dificil de inteles.


2. Alta chestie:

Cod: Selectaţi tot

public function & __construct ($passedArgument) {
    return $this->setBoolean ($passedArgument);
}

Un constructur nu poate returna decat o instanta a acelei clase. Nu stiu
ce ai vrut tu sa faci acolo, cum nu inteleg nici de ce ai return by reference.
De fapt din cate am vazut ai return by reference de cate ori returnezi un
obiect, iar cum codul ala e clar scris pentru PHP5 si nu PHP4, nu trebuie
sa iti mai bati tu capul cu referintele spre obiecte. Se ocupa Zend Engine
2 de lucrul asta. (Later Edit: se pare ca nu se intampla mereu asa. Later
later edit: se pare ca nu se intampla mereu asa in codul tau, nu in ZE2).

3. Mi se pare foarte nefolositor comentariul asta:

Cod: Selectaţi tot

    /**
     * With this class we chose not to provide any documentation whatsoever, because the code itself is sufficient enough to
     * let the developer understand what is happening 'under-the-hood'. That's why we've set the 'access' comment parameter to it
     * for private, so it will be skipped when generating documentation.
     * @access private
     */

Chiar daca nu vroiai sa apara in documentatia pentru user-programmers,
ai fi putut sa lasi posibilitatea pentru developer-programmers prin tag-uri
phpdoc @internal. Iar claritatea codului rar jutifica lipsa comentariilor.

4. Folosesti prea multe switch-uri. Mai bine zis ai metode care returneaza
in functie de parametru, iar parametrul este trecut printr-un switch. Cum
documentezi set-ul de parametri acceptati?
Spre exemplu FilePath::getPathInfo(), primeste o groaza de parametri
pe care eu nu am chef sa stau sa ii caut prin cod. Mi s-ar fi parut mult
mai frumos din punct de vedere al API-ului sa ai metode separate pentru
fiecare dintre parametrii aia, sau... sa folosesti SplFileInfo sau o clasa
extinsa din SplFileInfo pentru ca ziceai ca framework-ul "se bazeaza
MASIV pe SPL".

5. Limiteaza lungimea liniei de cod la 80 de caractere altfel e greu de citit.

6. De ce e nevoie sa parsezi fisierele cu extensia .css sau .js?

7.
BE STRICT ABOUT DATA TYPES. It's the revolutionary ideea of replacing PHP types with strong type hinted variables,
* ideea that has two advantages: performance in big applications, detection of bugs in the development stage of the
* application.

Nu e revolutionar sa faci Java din PHP. A inceput odata cu PHP5 si unele
lucruri inutile pe care le-a introdus. De altfel nu cred (desi un benchmark
ma poate contrazice) ca strong type hinting poate face aplicatia mai per-
formanta. Java e ok, pentru ca e compilat, PHP nu e (oarecum). Cred ca
asta chiar ramane de vazut.

8. Nu cred ca ajuta sa ai denumiri din astea telegrafice in loc de un
nume mai comprehensibil: EML in loc de Email. Sau spre exemplu:
manageTTL, pe care eu initial l-am citit ca "manage Time To Live".

9. TheFactoryMethodOfSingleton e de fapt Registry Pattern.

10. Legat de STH. In loc sa fi obligat programatorul sa paseze un anumit
tip de parametru unei functii/metode mai bine puneai in declaratia metodei
o bucata de cod care sa faca conversia. Ai spus ca vroiai sa scapi de acele
verificari de parametri in functie. Desi ai rezolvat asta, ai dat mai mult de
tastat programatorului.

Cod: Selectaţi tot

self::renderScreenOfDeath (new S (__CLASS__);

// cred ca era mai bine asa
self::renderScreenOfDeath (__CLASS__);

protected static function renderScreenOfDeath($string) {
    $string = new S($string);
}

In felul asta nu ma obligi sa instantiez o clasa S de cate ori trebuie sa
trimit un string catre metodele din framework. Recunosc insa ca ar fi
folositor sa normalizezi numele de functii care opereaza asupra string-
urilor si pe care PHP-ul le pune la dispozitie.

Ok, cam atat deocamdata. Daca mai apare ceva o sa editez postul asta
sau creez altul nou.

Apropo, incearca sa dezvolti cu error_reporting(E_ALL | E_STRICT),
caci genereaza cateva Strict standards warnings.
Ultima oară modificat Mie Noi 19, 2008 10:35 am de către Amenthes, modificat de 2 ori în total.


I'm under construction | http://igstan.ro

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 16, 2008 6:05 pm

Nu am sa intru intr-o dezbatere cu tine despre ce e bun si ce e rau. Am invitat programatori sa se alature si s-au alaturat.

Intr-adevar, vor fi programatori carora le convine codul si carora nu le convine. Asta e treaba lor. Ceea ce stiu aici e ca am eliberat un cod PHP destul de amplu, ca am pus la punct un hosting/domeniu/mailinglist/acces SVN pt. el, ca pot invita programatori sa se alature proiectului sau nu, functie de dorinta lor si de ce considera ei ca e bine.

Efectiv, nici n-am stat sa citesc intreaga critica, fiindca nu doresc sa incep vreo polemica sau sa fiu instigat la discutii contradictorii. Unele denumiri de functii sunt relativ idioate si pe care le doresc clar schimbate, insa n-am stat in timpul dezvoltarii sa-mi bat capul cu probleme de denumire.

E clar ca e o critica constructiva. Trebuie doar sa realizezi ca:
- de la bun inceput am punctat ca sunt lucruri de facut, gen documentatie compatibila PHPDoc, total, redenumirea unor functii chiar e una din prioritati ... (manageTTL, etc.)
- sunt multe din ceea ce ai zis (phpizare CSS/JS) probleme de care cei ce au folosit fw-ul s-au lovit si au avut nevoie de o rezolvare. (doreau ca functie de un parametru din db si o pagina care executa un CSS/JS, efectiv din fisierul de CSS sa poata pune o conditie PHP de tip if/ ... sau un loop) ... si astfel de probleme pe care le-am mai discutat odata.
- nu exista inca documentatie/tutoriale/etc. Analiza pura de cod e oarecum trasa de par, precum si recomandarile "incearca sa dezvolti cu error_reporting ...") ... Oh doamne ... Adica: cel putin argumentul 10, cel legat de stringuri are un defect de "big-picture", in sensul ca zici ceva de normalizat functiile oferite de PHP. Intr-o masura mai mare sau mai mica acest lucru s-a realizat, insa neavand o documentatie cu exemple, in care sa intelegi mecanismul ... cam greu sa cred ca ai prins ideea STH-ului. Ma rog, ti-am zis, nu vreau sa intru intr-o polemica. Gandeste-te si tu ca in urma unui an de experienta si discutii interminabile pe subiect cu programatori destul de experimentati s-a ajuns la aceasta concluzie. Sa reiau acelasi discutii si cu tine, n-am de gand sa fac. Ar fi OVERKILL.

Oricum, carcotasi se gasesc multi, nu asta e problema. Cei care intr-adevar vor sa schimbe ceva, mai putin.

In alta ordine de idei, it's a free country. You either like it or not, nu te obliga nimeni nici macar sa sa te uiti pe cod daca nu-ti place, de aici trag concluzia foarte simpla ca din moment ce nu te-a starnit nimeni la o astfel de concluzie, ceea ce faci aici e doar carcoteala specifica programatorului PHP care se crede ZEU :) ... si pe care doresc sa-l las sa viseze in balonul sau de aer cald ... Vreau sa intelegi ca nu te-am obligat sa te uiti pe cod, sau sa-ti placa. E un cod GPL de acum, fie iti place fie nu-ti place, e doar un cod ... ca o sa decida comunitatea ca poate fi schimbat sau nu, asta e treaba comunitatii, nu a mea. Momentan rolul meu e sa organizez acesti voluntari care doresc sa contribuie, incat sa formeze un grup care sa duca proiectul mai departe sa ia decizii mai bune decat am luat eu si sa ghideze proiectul asta, in litera de lege data de motto-ul Open Source: "Given enough eyes, all bugs are shallow." :P ...
Ultima oară modificat Dum Noi 16, 2008 6:18 pm de către Abbadon, modificat 1 dată în total.
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Dum Noi 16, 2008 6:16 pm

Abbadon scrie:- sunt multe din ceea ce ai zis (phpizare CSS/JS) probleme de care cei ce au folosit fw-ul s-au lovit si au avut nevoie de o rezolvare. (doreau ca functie de un parametru din db si o pagina care executa un CSS/JS, efectiv din fisierul de CSS sa poata pune o conditie PHP de tip if/ ... sau un loop) ... si astfel de probleme pe care le-am mai discutat odata.

Din cauza acestor probleme a aparut MVC, pentru a face output la diferite
View-uri.

Abbadon scrie:...precum si recomandarile "incearca sa dezvolti cu error_reporting ...") ... Oh doamne ...

Cum vrei...

Abbadon scrie:Oricum, carcotasi se gasesc multi, nu asta e problema. Cei care intr-adevar vor sa schimbe ceva, mai putin.

Nu ma intelege gresit. Initiativa e de laudat, tamtam-ul de dinainte mi se
pare cam exagerat. Nu am gasit (inca) nimic revolutionar in framework,
dar e clar ca asta e o parere cat se poate de subiectiva.

Spor la treaba, poate nu peste mult timp va iesi ceva frumos.
I'm under construction | http://igstan.ro

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 16, 2008 6:23 pm

Merci. Subiectivitatea scade atunci cand multi ochi pot sa-si dea cu parerea despre un anumit obiect iar din rezultatele adunate se poate trage o concluzie. Asta a fost si o motivatie a lansarii codului: singur nu puteam sa-l fac extraordinar, insa cu cat mai multi oameni isi aduc experienta lor in joc, cu atat rezultatutul experientei fiecarui programator intrece experienta individuala a fiecaruia.

Astept cu nerabdare miscarile lui Rakimon pe partea de website. Eu i-am pus la dispozitie tot ce are nevoie, el a terminat web-ul ... sa vedem cand are timp sa il puna si online ...

P.S.
Pt. partea "revolutionara" trebuie un pic sa astepti sa se scrie o parte din documentatie. Daca n-as exemplifica exact modul de folosire al unor feature-uri, ti-ai da seama doar din cod ca e revolutionar? :) ... Voi argumenta atunci ce si cum ... Patience is a virtue ...

P.S.2:
Programatorii PHP sunt LAZY BASTARDS. Decat sa inteleaga un concept obligativ ca necesarul existentei unui view, prefera sa aiba libertatea de gandire a codului nerestrictionat, insa capacitatea MVC-ul de a separa business logic-ul de prezentare. Si daca in alte puncte de vedere diferim, macar aici te rog sa fii de acord cu mine ca natia noastra de PHPisti este una puturoasa rau ...
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Dum Noi 16, 2008 6:30 pm

Abbadon scrie:In alta ordine de idei, it's a free country. You either like it or not, nu te obliga nimeni nici macar sa sa te uiti pe cod daca nu-ti place, de aici trag concluzia foarte simpla ca din moment ce nu te-a starnit nimeni la o astfel de concluzie, ceea ce faci aici e doar carcoteala specifica programatorului PHP care se crede ZEU :) ... si pe care doresc sa-l las sa viseze in balonul sau de aer cald ...

Nu iti comentez logica caci e clar ca nu a fost la rece. Imi pare rau ca ai
primit in felul asta review-ul meu. Chiar nu pot sa spun ca framework-ul asta
va revolutiona lumea PHP, imi pare rau. Insa o repet, spun asta cu ceea ce
am inteles pana acum din framework.

Si nu ma cred zeu, mai am destul pana acolo si ma straduiesc din greu sa
ating acel punct. Reactia ta la comentariul meu, insa, este chiar de neinteles.
Chiar ma gandeam ca imi spui sa astept pana instalezi Trac ca sa scriu niste
tickete.
I'm under construction | http://igstan.ro

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 16, 2008 6:33 pm

Legat de TRAC: o sa. Vin dupa 3 zile de culcat la 5 dimineata, trezit la 10/11 ... In momentul asta o perna e mai frumoasa decat femeia ... ca sa nu mai zic de PHP ...

P.S. (later edit:)
Cred ca reactia mea e din cauza la nesomn. Mai am o groaza de facut, e Duminica, lumea doarme, eu stau si frec menta in fata la un calculator ... that's not that funny. Sorry ...
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Pirahna
Senior Member
Mesaje: 5985
Membru din: Dum Aug 22, 2004 2:04 am
Localitate: la birou
Contact:

Mesajde Pirahna » Dum Noi 16, 2008 11:26 pm

Abbadon scrie:Legat de TRAC: o sa. Vin dupa 3 zile de culcat la 5 dimineata, trezit la 10/11 ... In momentul asta o perna e mai frumoasa decat femeia ... ca sa nu mai zic de PHP ...

P.S. (later edit:)
Cred ca reactia mea e din cauza la nesomn. Mai am o groaza de facut, e Duminica, lumea doarme, eu stau si frec menta in fata la un calculator ... that's not that funny. Sorry ...


Oh nu te mai plange, eu am o medie de somn de 2 ore pe zi in ultimii 3 ani. Ia niste vitamine, baga 8 redbulls, alearga 2 km si fumeaza un trabuc si-ti trece. Si nu, nu fac misto.

Referitor la ochiul pe care l-am aruncat si eu random pe aplicatia aia as avea o singura observatie. Daca vrei sa-l faci romanesc, pentru romani, fa-l domne in limba romana.

function FiltreazaString($string), function OrdoneazaDateCrescator($array),class EditareImagine

Nu ca n-ar stii phpistii nostri engleza, dar trebuie totusi sa vii cu ceva diferit si natural. Si da, am inteles ca o sa fie mai performant ca nu faci nu stiu cate modificari ca alte framework-uri, dar nu e de ajuns ca sa fie special.

Mi se pare mai natural sa scriu Interogheaza decat mysqli_query($mysqli_connection,$mysql_sql_instruction);

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 16, 2008 11:35 pm

No comment. Metode si functii in .ro ar fi impuscare in picior cu obuze de tun, si n-am zis eu prima asta. Imi pot si imagina corcitura "sintaxa engleza", "nume romanesti" de clase cum numai la noi se poate.

P.S.
Don't smoke, don't drink redbulls. Also known as: "si eu dorm in copac cu capul atarnat in jos, dar nu ma laud."
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
superduper
Average Member
Mesaje: 52
Membru din: Dum Sep 14, 2008 1:24 pm

Mesajde superduper » Mie Noi 19, 2008 10:03 am

Nu imi place frameworkul. Nu e revolutionare. Codul e ciudat.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Mie Noi 19, 2008 11:15 am

... a obligat cineva pe altcineva sa placa?! Credeti-ma ca fara documentatie scrisa cat de simplu se poate e cam greu sa va placa. Toata lumea se asteapta "sa-i placa" codul. Doamne ... Ca utilizator, ideea e sa-ti placa sa-l folosesti. Abia ca si contributor trebuie sa-ti placa ca si mod in care a fost dezvoltat. La "Codul e ciudat." preferam si un argument.
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
superduper
Average Member
Mesaje: 52
Membru din: Dum Sep 14, 2008 1:24 pm

Mesajde superduper » Mie Noi 19, 2008 2:00 pm

Nu am timp sa iti iau codul la puricat.
Si nu am nevoie de documentatie sa imi dau seama ce ai facut, iei peste picior multi oameni de pe forum cu aroganta asta.

Mi s-a parut ca Amenthes a subliniat niste lucruri destul de clare.

Nu esti familiar cu limbajul in sine, cu mecanismele lui interioare.

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Mie Noi 19, 2008 2:24 pm

Pirahna scrie:Daca vrei sa-l faci romanesc, pentru romani, fa-l domne in limba romana.
Daca s-ar face asta ar rezulta un FW care ar putea fi folosit exclusiv de romani, si nu cred ca asta se doreste. Cum ar fi daca Ferarri-ul pe care ti-l doresti ar avea tot ce e scris pe si in el in italiana? Sau daca Porsche-ul pe care am inteles ca il conduci, ar avea totul scris in germana?
superduper scrie:Nu am timp sa iti iau codul la puricat.
Atunci nu ar trebui sa arunci cu pietre. Vorbesti in necunostinta de cauza.
superduper scrie:iei peste picior multi oameni de pe forum cu aroganta asta.
Pe cine si cu ce a luat peste picior? Ce aroganta?
superduper scrie:Mi s-a parut ca Amenthes a subliniat niste lucruri destul de clare.
Asa, si ce legatura are asta cu ce ai spus tu?
superduper scrie:Nu esti familiar cu limbajul in sine, cu mecanismele lui interioare.
Si tu esti?

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mie Noi 19, 2008 2:43 pm

Simt ca iar se indreapta discutia catre off-topicuri...
Reveniti si discutati doar pe analiza si problemele gasite in cod, daca afirmati ceva aduceti si argumentele corespunzatoare, altfel vorbiti degeaba
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Mie Noi 19, 2008 2:48 pm

@mihaitha, care e parerea ta despre framework? Stiu ca vroiai sa contribui
la dezvoltarea lui.
I'm under construction | http://igstan.ro

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Mie Noi 19, 2008 2:59 pm

Inca nu am nici o parere, nu mi-a permis timpul sa ma uit in cod. De aceea nici nu am emis nici una, asta nu inseamna insa ca nu ma deranjeaza vorbele aruncate aiurea.

Inca mai vreau sa contribui, in limita in care imi permite timpul (din pacate sunt destul de aglomerat acum si peste o luna voi fi si mai aglomerat - vine ala micu). In plus insa, tot din pacate, dorinta de a contribui imi e redusa si din cauza unor concepte, considerate de Abaddon "revolutionare" in timp ce mie mi se par... ingraditoare (for lack of a better word) - i-am si spus asta pe mess. Imi convine la PHP tocmai flexibilitatea ce mi-o ofera prin soft type hinting, si un FW care imi ia acest privilegiu probabil va ajunge sa ma enerveze. Pe de alta parte, pentru cineva neobisnuit cu conceptul MVC sau suficient de lenes pentru a nu il folosi, implementarea restrictiva e buna. De asemenea, poate va fi o metoda de atragere spre PHP a celor obisnuiti sa faca scripting intr-un limbaj restrictiv (platforma .NET de exemplu) - dar aici deja ma repet.


Înapoi la “Proiecte”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 16 vizitatori