volta framework i cmf

0

Witam, chcialem wam pokazac projekt nad ktorym aktualnie pracuje, projekt zostal porzucony i przez 2 lata nic tam nie robilem bo pracowalem aktualnie szukam pracy(jako programista moje marzenie) i wiekszosc rzeczy zostalo napisane od 0 i doszlo duzo nowych funkcji.

Staram sie pisac kod jak najlepiej, trzymajac sie wzorcow ktore panuja w swiecie php.

Tutaj jest blog ktory stoi na cmf-ie napisanym w tym fw: http://eoskar.pl/Vf/index.php/

Jesli znajdziecie jakies bugi bylbym wam wdzieczny gdybyscie nic nie usuwali i ewentualnie pokazali i opisali bug tak zebym mogl go poprawic i z gory wam dziekuje.

Tutaj jest aktualny kod: https://github.com/marcio199226/Volta-framework-and-cmf

A wiec nie jest to jeszcze skonczone w 100% brakuje mi kilku rzeczy ale juz 3/4 projektu jest napisane, jest to moj hobbystyczny projekt ktory zrobilem by nauczyc sie jak dzialaja fw od srodka czyli wszystkie routery,dispatchery,hooki itp....

Jest tam kilka klas ktore chce przepisac od 0 np: obsluga formularzy mam juz idea ale ToDo ma poki co inne taski i orm(jesli tak go mozna nazwac poki co) :D

Potem bedzie dokumentacja restful dla poszczegolnych komponentow i wszystkie klasy uzupelnie o phpDoc.

No to nic czekam na konstruktywna krytyke.

pozdro

0

Kilka uwag, ale tylko związanych z formatowaniem kodu (tak na szybko ;))

  1. Niepotrzebnie stosujesz spację przed oraz po operatorze ->. Nie spotkałem się jeszcze z takim zapisem
  2. Niektóre nazwy metod piszesz małą literą, a niektóre wielką. Np.: objectResult() oraz Select() (a innym razem reset_query()). Nazwy metod nie powinny się raczej zaczynać od wielkiej litery (jeżeli używamy camel case)
  3. Brak spacji po if: if(is_string($rows) i innych konstrukcjach
  4. Zmienne: niekiedy piszesz $search_contain a innym razem: $likeSql Polecam ten drugi zapis :)
  5. Znacznik otwierający powinien wyglądać tak: <?php a nie <? (ten drugi sposób może nie działać na niektórych serwerach [#]_
  6. Komentarze do phpDoc. Zamiast tak:
/**
*Czy ma zwrocic obiekt
*@access public 
*@param boolean $object
*/

proponuje:

/**
 * Czy ma zwrocic obiekt
 * @access public 
 * @param boolean $object
 */
  1. Brak spacji po i przed operatorem . - np.: $http.$config
  2. W SQL nie ma żadnych indeksów czy kluczy obcych. Tak ma być?
  3. ``ban_user varchar(20) NOT NULL. Ta kolumna powinna być chyba typu int?
  4. Niektóre nazwy plików zaczynają się od wielkiej, a niektóre od małej litery. To specjalnie?

Życzę powodzenia w dalszym rozwoju :)

.. [#] abstract/Database.php

0

1.)Glupi nawyk powoli poprawie w kazdym pliku

2/4.)Racja wynika to z tego ze stare klasy te ktore nie zostalu jeszcze przepisane lub nie robilem w nich refraktoryzacji maja wlasnie takie byki to tez poprawie.

3.)To znaczy gdzie dokladnie? ma byc if (.....) czy if( ...... )?

5.)Myslze ze ten "blad" wystapil tylko w tym pliku poniewaz nie stosuje short tag-ow nawet w widokach.

6.)Poprawie!

7.)Czyli powinno byc: $http . $config ?

8.)Nie tak byc nie powinno tez do poprawienia

9.)Banuje uzytkownika po login-ie nie po id wiec chyba varchar jest tutaj na miejscu?!?

10.)Tak pliki zwiazane z framework-iem pisane sa z duzej litery te zwiazane z cmf z malej jak np komponenty/pluginy/widgety czy ich pliki konfiguracyjne.

Dziekuje za uwagi wiekszosc z nich postaram sie poprawic jak najszybciej.

A co jesli chodzi o jakosc kodu?Logike?Wzorce?OOP?Architekture?

Zaznaczam ze katalogi celowo nie sa poukladane w src/app/bin i inne standardy, jakos tam mi bylo wygodniej.

@Adam Boduch i jeszcze jedno czy underscore w metodach protected/private to zlo?I czy klamry wszystkich staments mam robic tak:

 if(dasdd) {
//kod
}

//ja robie tak wedlug mnie jest czytelniej
if(saddsd)
{
    //kod
}
0
marcio napisał(a):

3.)To znaczy gdzie dokladnie? ma byc if (.....) czy if( ...... )?

Spacja pomiędzy if a nawiasem.

marcio napisał(a):

7.)Czyli powinno byc: $http . $config ?

Tak.

marcio napisał(a):

A co jesli chodzi o jakosc kodu?Logike?Wzorce?OOP?Architekture?

Niestety aż tak nie wnikałem.

marcio napisał(a):

@Adam Boduch i jeszcze jedno czy underscore w metodach protected/private to zlo?I czy klamry wszystkich staments mam robic tak:

 if(dasdd) {
//kod
}

//ja robie tak wedlug mnie jest czytelniej
if(saddsd)
{
    //kod
}

Pamiętam, że kiedyś w Zend Framework stosowali znak _ poprzedzający nazwę metod prywatnych. Teraz już tego nie robią z tego co widziałem :) Każdy sensowny IDE wyświetli które metody są prywatne a które publiczne dzięki słowom kluczowym private, public które do tego właśnie służą.

Obecnie najpopularniejszy chyba standard kodowania to PSR-2. On zakłada, że klamry piszemy w tej samej linii chyba że jest to klamra rozpoczynająca ciało metody/funkcji. Nie jest dla mnie do końca jasne skąd wzięło się to rozróżnienie.

Ja stosuje zapis kodu używany we frameworku Laravel. Czyli PSR-2 z tą różnicą, że:

  • Stosujemy tabulację zamiast spacji
  • Klamry w nowej linii
0

No wlasnie robilem refraktoryzacje kodu zeby byl zgodny z psr 1/2 + phpDoc + dokoncze tlumaczenia i potem biore sie za nastepne taski.

ogolnie dzis bylem na nastepnej rozmowie o prace, mam nadzieje ze ja dostane bo poszlo dobrze ;)!

0

Doszlo kilka nowych funkcjonalnosci miedzy innymi przypomnij haslo, anty brute force w logowaniu z podaniem captch-y lub odczekaniu kilku sekund i wiele fix-ow niestety teraz ort! pracowac w firmie jako programista :D wiec przynajmniej przez pierwszy miesiac nie bede tam nic robil, tym bardziej ze pracuje nad jeszcze jednym projektem malym portfolio w symfony2 + bootstrap ktory integruje sie przez restful z system news-ow z mojego blog

0

Od strony samej strony bardzo boli brak RWD :P

A od kodu:

  • nazwy klas (np. Vf_Admin_FrontController) nie wskazują per se, gdzie leży plik danej klasy (to taki plus-minus, może po prostu trapi mnie to przyzwyczajenie z Zenda),
  • require_once(DIR_LIBRARY.'Controller.php'); - przydałby się autoloader,
  • w kontrolerach, nazwy metod odpowiedzialnych za przyjmowanie requestów powinny zawierać jakiś suffix czy prefix, np. actionIndex, dzięki temu unikniesz wielu niejednoznaczności,
  • często powtarza się choćby Vf_Core::getContainer()->router; - przydałby się jakiś skrót, np. Vf_Controller::getRouter(),
  • co podoba mi się w innych frameworkach, a czego nie ma u Ciebie, to podział na sekcję kodu (np. w Yii jest to katalog protected) oraz zasobów (katalog public or sth, z document rootem ustawionym na public, dzięki czemu nie musisz wstawiać wszędzie .htaccessów, no bo użytkownicy siłą rzeczy nie mogą przy takiej konfiguracji wejść do katalogu protected),
  • generalnie trzymaj się zasady jeden plik = jedna klasa, Orm.php łamie to,
  • nie wrzucaj wszystkiego do katalogu libraries, bo prędzej czy później się pogubisz,
  • length, a nie lenght (i18n) ;P
  • nie rzucaj wyjątków po polsku, komentarze jeszcze ujdą, ale generalnie wyjątki czy jakieś teksty powinny być po angielsku,
  • getComponents/getPlugins w Vf_Component_Model - tak bez pamięci podręcznej?
0

Od strony samej strony bardzo boli brak RWD

Wdrozenie bootstrap tez jest w todo ;) ale poki co zaczolem pracowac w firmie wiec czasu brak.

nazwy klas (np. Vf_Admin_FrontController) nie wskazują per se, gdzie leży plik danej klasy (to taki plus-minus, może po prostu trapi mnie to przyzwyczajenie z Zenda),

require_once(DIR_LIBRARY.'Controller.php'); - przydałby się autoloader,

Ogolnie rzecz biorac w todo mam wdrozenie namespace-ow tylko nie wiem czy mi sie bedzie chcialo za duzo musialbym zmieniac(choc robilem juz wieksze refraktoryzacje w kodzie) ale po prostu nie widze az tyle plusow akurat w projekcie ktory uzywam tylko ja.
Autoloader jest ale jest to chyba pierwsza klasa ktora napisalem wiec musze go troche udoskonalic niektore pliki musze include-owac bo inne klasy po nich dziedziczy wiec autoloader bez namespace-ow sie tutaj nie sprawdzi.

w kontrolerach, nazwy metod odpowiedzialnych za przyjmowanie requestów powinny zawierać jakiś suffix czy prefix, np. actionIndex, dzięki temu unikniesz wielu niejednoznaczności,

U mnie wszystkie akcje to metody publiczne nie widze potrzeby uzywania prefix-ow wszystko co jest publiczne jest akcja reszta do metody zwiazane strict z kontrolerem np na potrzeby jakiejs akcji.

często powtarza się choćby Vf_Core::getContainer()->router; - przydałby się jakiś skrót, np. Vf_Controller::getRouter(),

Tak mi jest wygodniej zwracam kontener i potem odwoluje sie do klas shared,normalnych lub do zwyklych atrybutow.

co podoba mi się w innych frameworkach, a czego nie ma u Ciebie, to podział na sekcję kodu (np. w Yii jest to katalog protected) oraz zasobów (katalog public or sth, z document rootem ustawionym na public, dzięki czemu nie musisz wstawiać wszędzie .htaccessów, no bo użytkownicy siłą rzeczy nie mogą przy takiej konfiguracji wejść do katalogu protected),

Co kazdy framework to inna architektura/ulozenie plikow na moje potrzeby tak jak jest ok nie jest to poziom Yii ;) i nigdy nie bedzie :D

generalnie trzymaj się zasady jeden plik = jedna klasa, Orm.php łamie to,

Tak jak zauwazyles to orm i query builder maja kilka klas w jednym pliku i faktycznie jest to do zmiany, to tez sa jedne z pierwszych klas ktore napisalem i zreszta widac po jakosci wzgledem "mlodszych" klas.

nie wrzucaj wszystkiego do katalogu libraries, bo prędzej czy później się pogubisz,

To znaczy dlaczego mialbym sie pogubic?

nie rzucaj wyjątków po polsku, komentarze jeszcze ujdą, ale generalnie wyjątki czy jakieś teksty powinny być po angielsku,

Racja po kolei jak edytuje dana klasa to poprawiam takie kwiatki.

getComponents/getPlugins w Vf_Component_Model - tak bez pamięci podręcznej?

Tzn?

Dzieki za obserwacje.

zamiana znaczników <code> na <quote> - @furious programming

0

To znaczy dlaczego mialbym sie pogubic?

Jedne klasy w libraries, inne w i18n, jeszcze inne gdzie indziej...

Tzn?

To znaczy, że wykonują operacje na bazie danych, ale nie korzystają z pamięci podręcznej.
Chyba że masz cache wplecione w query builder czy coś.

0

w libraries sa biblioteki, w helpers helpery ktore uzywam w widokach(czasami w kontrolerach) a w i18n sa tlumaczenia klas/komponentow/widgetow/pluginow

Nie cache mam osobno ale tak ogolnie to jest tak malo danych na ktorych tam operuje ze korzystanie z cache to pomylka.

Zreszta prawie nigdzie z niego nie korzystam oprocz plikow konfiguracyjnych opartych na xml.

1 użytkowników online, w tym zalogowanych: 0, gości: 1