Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Framework] Vframe
Forum PHP.pl > Inne > Oceny
Athlan
Witam.

Dziś chciałbym zaprezentować framework, ktory zbudowałem i opieram na nim swoje aplikacje. Jest stale rozwijany, nie ukryję że może spotkać się z gorzkimi słowami krytyki, ale też słodkimi pochwały. Przygotowałem prawie pełną dokumentację, która umieszczona jest na stonie domowej frameworka:

http://framework.vgroup.pl

Wraz z działem download oraz manualem na stronie na bieżąco będę publikował przykłady użycia jakiś komponentów, na dzisiejszy czas są to: upload pliku, caching działania zapytania do bazy danych oraz zmniejszenie pliku graficznego. Najlepszym przykładem będzie aplikacja napisana na frameworku, dlatego zmieściłem kod swojego portfolio http://www.vgroup.pl. Repozytorium plików możecie znaleźć pod adresem http://source.vgroup.pl



Download frameworka oraz przykładowego szkieletu katalogów aplikacji:
http://framework.vgroup.pl/download.html

Instalacja:
http://framework.vgroup.pl/read-instalacja.html

Repozytorium plików frameworka wraz z podstawowymi bibliotekami (mojego autorstwa):
http://framework.vgroup.pl/repository.html

Klasy umieszczone w folderze /Incubator/ potrzebują specjalnych testów, lub są w fazie budowania. Nie odpowiadam za ich nieprawidłowe działanie i tym samym prosze o przetestowanie smile.gif

Zapraszam do oceny smile.gif

Athlan
nrm
wow. bardzo interesujące. ale daj trochę czasu na przejrzenie i poczytanie manuala. na razie duży plus za stronę projektu, manual. Więcej napisze po głębszej analizie. Teraz w oczy rzuciła mi się tylko brzydka (dla mnie) konwencja nazewnictwa. Nie lubię takich potworków jak "news_Vmodel extends Vmodel" czy "($sCategory, $iLimit)" ale wiadomo, to indywidualna sprawa.
Turgon
Interesujący framework, ale według mnie w wielu miejscach dochodzący do [zmoderowano].
Po co taki złożony system dla jednego ciasteczka ?
Dlaczego niby ja mam podawać dane do połączenia z bazą klasie mySQL ? Niech sobie sama pobierze. Raz ustawiam i mam. Chce mieć inne dopiero wtedy podaje.
Tak samo w przypadku typu w Inpucie. Po co ja mam podawać ? Niech będą ustalone priorytety, a niech klasa też sama szuka ;]
Do tej pory więcej grzechów nie zauważyłem. Oceny wystawiać nie będę, bo frameworka nie będę używać.

___
Warn za sposob wypowiedzi
ActivePlayer
Athlan
@normanos, wiedziałem, że nazwenictwo się rzuci, używam go pół na pół, ale podkreślniki jakoś lepiej oddzielają nazwę w moich oczach. Słusznie zauważyłeś - indywidualna sprawa.

Twojego postu nie pozostawie więc bez komentarza. Kiedyś NuLL się czepiał o konfigurację nazewnictwa poszczególnych elementów aplikacji. Jeżeli komuś nie odpowiada surfix _Vmodel, może sobie go dobrowolnie zmienić. Ujęte jest to w stałych w pliku konfiguracyjnym znajdującym się w folderze aplikacji, jak widać każda aplikacja może mieć inne nazewnictwo> Dobrym wypadkiem jest to, kiedy na serwerze mamy kilka aplikacji, tworzonych przez kilku ludzi stosujących różne nazewnictwo korzystające z jednej kopii frameworka. Pomyślałem, żeby aplikacja dostała taką możliwość, jak zmiana nazewnictw, prefiksó i surfiksów nazw klas i swoich plików. Zarzuce linka do repozytorium:

Przykladowy plik konfiguracyjny aplikacji:
http://framework.vgroup.pl/expose-fab8d0f7...5d4abee2ce4.htm

Jeżeli uda mi się wkleić tabelkę napisaną w Wordzie do edytora w panelu admina, z pewnością ukaże się iona w manualu, jeżeli nie, zrobie PDF'a smile.gif

Ad @Turgon: Owszem, model sam szuka sobie danych do konfiguracji MySQL:
http://framework.vgroup.pl/read-model.html#2.2.3
Przykladem konfiguracji bazy danych MySQL jest plik Db_MySQL.Config.php:
http://source.vgroup.pl/expose-e2c21810e10...07e18cae1e0.htm
(przepraszam za stałą, ale nie podam hasła w repozytorium plików źródłowych mojego portfolio tongue.gif )

A z tymi priorytetami to nie taki głupi pomysł, wiesz smile.gif pomyślimy
AxZx
strona troche dziwna, menu po angielsku, teksty po polsku.

a co do dokumentacji to mam pytanie
Cytat
2.1.3. Wybieranie modelu
Model, podobnie jak widok, może być wybierana przez kontroler. Poniższy przykład doskonale ilustruje jego użycie.

<?php

class index_Vcontroller extends Vcontroller
{
public function index_Action()
{
$oModel = $this->setView('SomeModel');
}
}

?>


nie powinno byc
Cytat
$oModel = $this->setModel('SomeModel');

?
nrm
ja po prostu lubię czystość i przejrzystość - zobacz jak to pięknie rozwiązane ma CodeIgniter biggrin.gif

no ale skoro można zmienić to jeden problem z głowy.

Na szybko też nie zauważyłem żadnych filtrów na inputach (albo przeoczyłem), więcej poczytam sobie wieczorkiem przed pójściem spać smile.gif
Athlan
@AxZx: prawda, poprawione. Błędy typu literówki w manualu lub w komentarzach w kodzie prosiłbym o zgłaszanie na PW, nie warto zaśmiecać topicku smile.gif

@normanos: zapisane w todo, tylko jakie, na pewno htmlspecialchars(), trim(), addslashes(), stripslashes()... coś jeszcze? zapraszam na PW smile.gif
nrm
http://www.codeigniter.com/user_guide/libraries/input.html

w ogóle jakbyś wziął to co najlepsze w CI to było by miło winksmiley.jpg
Athlan
Bardzo dobry pomysł, nie trzeba zapamiętywać wszystkich cyferek tak jak jest to u mnie. Super sprawa, pomysł zapisany w todo.

Tymczasem informuję o updacie klasy Cache.Class.php, bowiem po większych testach nie działało usówanie i ewentualne tworzenie nowych grup, był problem z podejściem do plikow (nieestatyczny sposób). Zalecam update.
eai
Tak na szybko:
- Cache (źle przemyślany) po co skanować cały folder i usuwać pliki których ważność się skończyła. Przy większej ilości plików będzie to spore obciążenia. Cache generalnie ma być żeby przyspieszyć a nie spowolnić.
- Nie widze autoloadera klas. (być może gdzieś przeoczyłem)


Ogólnie mówiąc każdy pisze jak mu wygodnie, mi takie coś nie odpowiada i nie użyłbym tego frameworka. Ale życze powodzenia w rozbudowie. jak znajde chwile to przejrze calosc.
elem
..... widać wpływ Rapide Frawework, session, user, acl wydaje mi się że bardzo wzorowałeś się na tym frameworku szkoda że zaimplementowałaś pluginow. Twój Framework to "dość dobre" rzemiosło nie skupiajmy się na szczegółach całościowo pewnie działa i spełnia twoje oczekiwania. Osobiście brakuje mi trochę polotu , wykorzystanie elementów inż. oprogramowania, i podstawowych wzorców projektowych takich jak Strategia Dekorator, Obserwator czyli wzorców opartych o dziedziczenie i kompozycje, a owego dziedziczenia i kompozycji używasz dość często. Brakuje też dobrze oprogramowanej warstwy danych, proponowałbym wprowadzenie DataMapperów - czyli narzędzi mapujących relacyjne bazy na objekty, możesz ja zaiplementować lub dołaczyć dostępne ORM , myśle że to mógłby być kierunek rozwoju frameworka.

Pozdrawiam
empathon
Post autorstwa Athlan, który z uwagi na tymczasowego bana nie może się osobiście wypowiedzieć.

Athlan:

Dziękuję za dotychczasowe opinie, wraz z pojawieniem się nowych opcji, pojawiła sie również nowa dokumentacja. Zacznę od tego, co zostało dodane do myśli technicznej:
  • Dodano mapowanie całości core framewoka, czas działania diametralnie spadł, mapa jest tworzona dzien od ostatniej akutualizacji, lub gdy jakiejś klasy ni będzie w mapie. Jeżeli nie będzie jej po ponownym wygenerowaniu mapy, wówczas zostanie wyrzucony wyjątek.
  • W pliku konfiguracyjnym nie muszą być zdefiniowane wszystkie stałe, potrzebne sa tylko niezbędne, resztę Vframe jest w stanie dopisać sobie automatycznie, na domyślne wartości
Zmiany w funkcjonalności komponentów:

Vsession, Vuser - dodano możliwość odwołania się do danych jako tablicy obiektu, gdyż implementowany jest interfejs ArrayAccess
Vcontroller, Vview, Vmodel - otrzymały implementację interfejsu ArrayAccess i najważniejszych aliasów dla komponentów Lang(), Session(), Input(), Url(). Dziedziczą z klasy VcommonMVC i Vattributes.
Vattributes - dodana nowa klasa, która daje możliwość operowania na atrybutach (tablicy $_aAttributes) poprzez metody __set(), __get(), has(), remove().
Vinput - wprowadzone zmiany o ktore prosiliście, przy okazji bardzo mi się przydały w wykonaniu jednego z projektów. więcej:
http://framework.vgroup.pl/read-input-data.html#4.7.1
Vlanguage - wykrywanie domyślnego języka użytkownika oraz wybranie odpowiedniego z dostępnych w aplikacji - główna myśl wersji 0.1.10, więcej:
http://framework.vgroup.pl/read-languages.html#4.8.4
http://framework.vgroup.pl/read-uzytkownik.html#4.11.4
Zmienione nazewnictwo plików językow na skróty, zamiast Polish jest pl itd., więcej:
http://framework.vgroup.pl/read-languages.html#4.8.1
Vuser - ustawianie języka użytkownika, więcej:
http://framework.vgroup.pl/read-uzytkownik.html#4.11.4

Vframe 0.1.10 możecie pobrać z działu download:
http://framework.vgroup.pl/download.html

Manual dostępny pod starym adresem:
http://framework.vgroup.pl/manual.html

Dodany został DevServer, na którym stale działam, tam są publikowane natychmiastowe zmienay w CORE, które nie zostały opublikowane. Na devserwer tworzone są kolejne wersje fw:
http://framework.vgroup.pl/devserver.html
eai
Średnio:
Cytat
Vframe request has been processed in 0.016093015670776 seconds!

Przy pierwszym wywołaniu 0.3 s

VFrame oraz Aplication (pobrane dziś ze strony)

W tej chwili piszę własny FrameWork, jest w fazie testów i udało mi się zejść do 0.004s
Strona testowa jaką generuje http://jeanne.euo.pl/
Cysiaczek
@eai - Ja tez na początku prac miałem 0.004 sekundy, a nawet mniej. Tyle, że jak dodasz nieco "featurów", to wydajność musi spaść. Mi obecnie pojedyncze wywołanie zajmuje 0.03 sekundy. Przeciętna aplikacja (bez bazy danych) to łącznie 0.05-0.06 sekundy. Dane bez cachu.

Pozdrawiam.
menic
Zalezy oczywiscie na czym jest skrypt uruchomiony...
Na moim laptopku przy 800 MHz wywolanie zwyklej strony z akcja i blokiem menu to cos około 0.04 oczywiscie bez laczenia z bd.
Chodzi oczywiscie o SparkleWorks - moj fw snitch.gif
eai
obie aplikacje wrzucilem na serwerek na nazwa.pl

Edit:
Popraw sobie http://framework.vgroup.pl/home.html pod kątem błędów ortograficznych (opeacji, tychże, smniejszenia, itd). Pozdro ;-)
Hacker
Zauważyłem błąd w kodzie "Załadowanie avatara i zmniejszenie go w razie potrzeby - przykład"

  1. <?php
  2. $oView = $this->setView('profile');
  3. $oView->setTemplate('profile_change_avatar');
  4.  
  5. $oLanguage = new Vconfig('Polish');
  6. $oLang = $oLanguage->load('profile');
  7.  
  8. $oConfig = new Vconfig();
  9. $aConfig = $oConfig->getConfig('main', true);
  10.  
  11. $oFile = new Vfile('avatar');
  12.  
  13. $sImageUniqueName = md5(time() . $oFile->name) . $oFile->extension;
  14.  
  15. try
  16. {
  17. $rImage = $oImage->load($oFile->temp, $oFile->type);
  18. $rImage = $oImage->imageResize($rImage, $aConfig->avatars_max_x, $aConfig->avatars_max_y);
  19.  
  20. $bChangeImage = $oImage->save($rImage, $aConfig->avatars_patch . $sImageUniqueName);
  21. }
  22. ?>


nigdzie wcześniej $oimage nie jest używane, a tu nagle...
Nie podoba mi się również to, że jest to tylko nakładka na funkcje php, równie dobrze mogąca być nie zamknięta w klasie, a w luźnych funkcjach, bo o ile dobrze kod rozumiem to przy wywoływaniu metod pierwszym argumentem prawie zawsze jest uchwyt do obrazka...
Athlan
Cytat
nigdzie wcześniej $oimage nie jest używane, a tu nagle...
Nie podoba mi się również to, że jest to tylko nakładka na funkcje php, równie dobrze mogąca być nie zamknięta w klasie, a w luźnych funkcjach, bo o ile dobrze kod rozumiem to przy wywoływaniu metod pierwszym argumentem prawie zawsze jest uchwyt do obrazka...


Projekt jest zamknięty, nowa klasa Image z Vframe zamyka resource i działa na fabryce w naszym frameworku Rapide:

http://rapideframework.googlecode.com/svn/...Image.class.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.