Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [Framework] TurFramework Preview 2, No to się dorobiłem własnego Frame'a...
Turgon
post
Post #1





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam!
Kiedyś postanowiłem, że napiszę sobie CMS'a. Po kilku dniach wziąłem się do pracy. Projekt porzuciłem po trzech tygodniach. Ostatnio go odgrzebałem. Pomyślałem i zrobiłem takie cuś. Podchodzi bardziej to do FrameWorka. Manuala nie udało mi się opracować, ale proszę o ocenienie kodu, wskazanie kierunku itp.
I teraz ostatecznie Frameworkiem się stało smile.gif

Paczuszka z SQLem:
Paczka Zip
Paczka Tar.gz

Zdravim
Łukasz

Ten post edytował Turgon 16.01.2007, 13:24:40


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


1."* Not allowed to use. This is only preview!"
to moge go uruchomic czy nie?

2.
  1. <?php
  2. $config['database']['host'] = '127.0.0.1';
  3. ?>

a da sie nr. portu skonfigurowac?

3. brak formatowania kodu:
  1. <?php
  2. class indexVendor extends TurVendor{
  3.  
  4. public function index(){
  5. $this->view->loadView('index');
  6. return $this->view->render();
  7. }
  8. public function another(){
  9. }
  10. }
  11. ?>


4. nie udalo mi sie go uruchomic na lighttpd (mod_rewrite)

5.
  1. <?php
  2. $var = preg_replace('/<script type="text/javascript">(.*)</script>/i','',$var);
  3. ?>

a co gdy podam:
  1. <script>...</script>
  2. <script type="..." >...</script>
  3. itd
?

6. co robi "class TurVendor" to juz zupelnie nie wiem
bloki, zmienne, uprawnienia -- wszystko w jendej klasie


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Turgon
post
Post #3





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


1. Możesz, ale tylko do testów. Miałem na myśli użycie w projektach itp. ;]
2. Dodajesz po hoście porcik smile.gif
3. Kate nie oferuje takiej opcji, a ja nie jestem przyzwyczajony wciskać co chwilę "Tab".
4. Działa bez mod_rewrite. Tam są tylko dwie testowe reguły, które uruchamiałem na zdalnym serwerze.
5. Powinno zablokować tylko właściwe ;] Czyli JavaScriptowe, choć do końca nie testowałem. Słabo go znam.
6. To podstawa dla każdego Vendora, ponieważ każdy Vendor nie będzię dziedziczył po 20 klasach winksmiley.jpg, bo to trochę bez sensu. I te bloki, to nie działają bo wyrzuciłem klasy typu TurBlock. Odchudziłem aplikację, bo interesuje mnie głównie ocena jądra.


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Jeśli chodzi o klasę TurKernel, to mi się nie podoba. Zawiera metody, które coś wypisują na ekran. Rozumiem, że to są testy, ale ładniej by to wyglądało, gdyby np. metody TurKernel::compileInfo(), albo TurKernel::listModules() wyszukiwały informacje, a potem je zwracały. Z samej tej klasy IMHO da się wydzielić co najmniej 5 różnych klas, bo teraz klasa ma zbyt dużą odpowiedzialność. W obecnym stanie rozwoju nie stanowi to problemu, ale jeśli zechcesz rozbudować, to napotkasz na mur. Będziesz musiał przekazywać coraz więcej parametrów do metod, a co za tym idzie, coraz więcej instrukcji warunkowych. Jeśli to jednak skończony projekt, to nie ma problemów. : )

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Turgon
post
Post #5





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Wiem, wiem winksmiley.jpg Cysiaczku, dlatego obecnie przebudowywuję ją całą. Te metody zostaną w takim stanie, gdyż takie je lubię smile.gif Zmienię też delikatnie strukturę jądra smile.gif tzn. niektóre klasy będą domyślnie używane. Powstanie też autoloader smile.gif, ponieważ to pozwoli na wybieranie tylko potrzebnych modułów podczas kompilacji. Jak skończę wrzucę poprawioną wersję na serwer smile.gif
I zapomniałbym. Dorzucę też obsługę interfejsów smile.gif Klasę TurView też czeka przebudowa.

Ten post edytował Turgon 15.01.2007, 12:05:59


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
3. Kate nie oferuje takiej opcji, a ja nie jestem przyzwyczajony wciskać co chwilę "Tab".

Zmien edytor, chociazby Kwrite ma autowciecia. A co z eclipse?
Cytat
4. Działa bez mod_rewrite. Tam są tylko dwie testowe reguły, które uruchamiałem na zdalnym serwerze.

Najpierw uruchomilem bez zadnych rewrittow --> undefined index 'vendor' itd.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Strzałek
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

Ostrzeżenie: (0%)
-----


Nie wiele do oceniania.
Dużo bałaganu widzę, mało czegoś pożytecznego. Np. tursql. Halo! Mamy 2007, mamy PDO, jeżeli ktoś nie lubi to Creole. No ok, chyba że ktoś naprawde chce coś jeszcze lepszego, czemu by nie, ale niech to mam jakąś funkcjonalność, a nie nakładka na kilka natywnych f-cji.

Cytat
Wiem, wiem Cysiaczku, dlatego obecnie przebudowywuję ją całą. Te metody zostaną w takim stanie, gdyż takie je lubię Zmienię też delikatnie strukturę jądra tzn. niektóre klasy będą domyślnie używane. Powstanie też autoloader , ponieważ to pozwoli na wybieranie tylko potrzebnych modułów podczas kompilacji. Jak skończę wrzucę poprawioną wersję na serwer
I zapomniałbym. Dorzucę też obsługę interfejsów Klasę TurView też czeka przebudowa.


To może najpierw zrób z tym pożądek, dopisz co trzeba żeby chciaż ten banalny przykład działa bonzowi winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Turgon
post
Post #8





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Strzałek: Wciąż na wielu serwerach nie ma PDO... Z resztą kilka drobnych klas będących na warsztacie stworzą wraz z TurSQL małego i prostego ORMa ;]
dr_bonzo: Dziwne... W Exception włącz trace i daj tutaj wynik smile.gif


Dodałem poprawioną wersję. I chyba wiem o co chodzi Bonzo winksmiley.jpg
Urle są w formacie : index.php?app=nazwaApp&vendor=nazwaVendor&action=nazwaAction .
Można zawsze zmienić nazwę każdej ze zmiennych. Jeśli którąkolwiek z nich pozostawimy pustą skrypt sam ją uzupełni domyślnymi danymi z kernelImage.php.


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


To ze sa w taki fromacie to sie domyslilem smile.gif pouzupelnialem zmienne na jakies losowe wartosci i nie ruszylo. Zaraz sprawdze nowa wersje.

Cytat
Warning: mysql_connect() [function.mysql-connect.html]: Access denied for user 'root'@'localhost' (using password: NO)

No wiem ze konfigu jeszcze nie ustawilem, ale przydala by sie inna informacja

Wchodze na "/" i undefined index, action, vendor, action.
http://php.dev.localhost/turgoncms/?vendor...mp;action=index
czyli defaultowe wartosci
Cytat
Nie ma takiego vendora.

dla vendor = 'turcms' tez nie dziala


Cytat
public function index(){
$this->view->loadView('index');
return $this->view->render();
}

Po co tyle kodu (jak zapomne to sie pewnie app sypnie, nie wyswietli czegos itd), nie latwiej przyjac ze akcja 'index' jest wyswietlana domyslnie widokiem 'index'? I po co zwracac wynik renderowania -- do zadanie FW, dostal info ktory widok uzyc, jakie ma parametry i sobie poradzi.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Turgon
post
Post #10





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Wiem, wiem... Nad błędami muszę jeszcze pomyśleć smile.gif
Kolejna sprawa app, to katalog z vendorami smile.gif Powinien być turcms smile.gif lub turpowerboard.
Rozumiesz ?

Co do widoków, to dobra postaram się coś pomyśleć smile.gif, ale mi to nie przeszkadza winksmiley.jpg Ale co ty byś proponował, bo do końca nie łapie winksmiley.jpg?

Ten post edytował Turgon 15.01.2007, 15:49:03


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
Co do widoków, to dobra postaram się coś pomyśleć , ale mi to nie przeszkadza Ale co ty byś proponował, bo do końca nie łapie ?


  1. <?php
  2. public function IndexAction()
  3. {
  4.  $this->text = "HelloWorld";
  5. }
  6. ?>


i FW zajmuje sie reszta, zalacza domysly widok 'index' i odpala renderowanie, bo na razie w kazdej akcji musisz to recznie dopisywac, a to nie jest dobre smile.gif


Cytat
Kolejna sprawa app, to katalog z vendorami Powinien być turcms lub turpowerboard.

No w koncu uruchomilem

Masz dosyc nieintuicyjne nazwy:
jest katalog vendors/ i oczekuje ze w nim sa vendory czyli turcms itd.
a nie ze w vendors/ sa aplikacje


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Turgon
post
Post #12





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Wiem trochę napaprałem ;] Ale w configu można zawsze zmienić nazwę app na coś innego w linku winksmiley.jpg To co proponujesz będzie wymagało przebudowy połowy FW, ale Ok ;] W sumie chyba muszę zmienić nazwę aplikacji i oznaczenie w temacie winksmiley.jpg

Ten post edytował Turgon 15.01.2007, 16:17:09


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
To co proponujesz będzie wymagało przebudowy połowy FW

FW ma chyba ulatwiac i uprzyjemniac pisanie aplikacji -- wiec chyba warto to raz a porzadnie zrobic niz w kazdej aplikacji sie meczyc.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Turgon
post
Post #14





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Wiem, dlatego przebudowałem, ale coś nie działa hmmm... Na deskę kreślarską wraca biggrin.gif Przebudowa zakończona biggrin.gif Działa tak jak chciałeś ;] Teraz tylko trzeba troche zmienić rejestr systemowy, bo nie jest przystosowany do nowych warunków!

Ten post edytował Turgon 16.01.2007, 10:02:48


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Prph
post
Post #15





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam,

Troche balaganiarski styl programowania. Pomine wciecia, bo nie wiem, czy naprawde tak piszesz, czy edytor zrobil Ci na zlosc i usunal tabulatory. Jednak nie trzymasz sie nazwenictwa - wszystko w FW w postaci turcoś.class.php, natomiast helpery nazwałeś ViewHelpers (dlaczego tu z duzych?).

Znalazłem mały błąd, ktory może powodować w przyszłości złe wyświetlanie widoku:

  1. <?php
  2. $render = ob_get_contents();
  3.  
  4. // Zamiast tego, uzyj:
  5.  
  6. $render = ob_get_clean();
  7. ?>


Pozdrawiam, Adrian.
Go to the top of the page
+Quote Post
Turgon
post
Post #16





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Prph: Trzymam się, bo Helpery to cuś innego ;] dla mnie. Dzięki za tą funkcję, nie wiedziałem, że taka jest smile.gif Co do wcięć ? Po co smile.gif? Edytor ich nie dodaje, to co będę na siłę je robił biggrin.gif

Więc porobiłem wam te wcięcia, a wy zajmijcie się oceną kodu... Nowy Preview wyszedł ;] Zmiany są znaczące smile.gif


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Athlan
post
Post #17





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


Jak już się Prph doczepił tych helperów to i ja to zrobie. Przytoczę kawałek kodu
  1. <?php
  2. addPasswordInput($name,$cssId = null,$cssClass = null)
  3. ?>

nie przewidziałeś że np ktoś może sachceć dodać inne parametry, chociażby np style. Czyżby przeróbka funckji? Nie lepiej zrobić, żebym listę parametrów ładował w tablicy?

Funkcje addTextInput() i addPasswordInput() w zasadzie różnią się słowem text/password, nie cierpie proceduralnego kopiowania kodu...

Zabolała mnie jeszcze jedna rzecz. Mianowicie fetching zapytań masz w klasie turquery.class.php, wykonanie ich turquery.class.php, obsługę bazy w tursql.class.php. Powiem tak: SYF. Klasa odpowiedzialna za baze danych powinna stanowić całość. A jak użyja innej bazy danych niż MySQL to chyba komponent turquery.class.php nie pójdzie do kosza? używasz tam funkcji do obsługi mysql... radzę zrobić jedność. Aby połączyć się z bazą muszę także ręcznie wywołać metodę za to odpowiedzialną. Nie wiam jak u Ciebie, ale u mnie w modelu podajesz nazwę klasy odpowiedzilną za obsługę źródła danych, wówczas konfigi, połączenie itd wykonuje się samo smile.gif

W dispatcher
  1. <?php
  2. private static $app;
  3. ?>
po co static?

Obsługa uzytkownika (o mój Boże). Znowu jestem uzależniony od mysql... klasa chyba powinna TYLKO przechowywać info o nim, zbieranie danych z bazy danych to Model smile.gif

  1. <?php
  2. if(count($this->vars) > 0){
  3. foreach($this->vars as $name => $val){
  4. if(!is_array($val)){
  5. $render = preg_replace('/{'.$name.'}/i',$val,$render);
  6. }
  7. }
  8. }
  9. ?>

po co... a nie lepiej wsadzić w template <?= $sText ?> albo <?php= $sText ?> , nie ma to jak szybkość działania.

Rozumiesz co to zmienne statyczne?
  1. <?php
  2. public final function registry($name){
  3. ?>

Używa się ich zazwyczaj w metodach statycznych, a Ty kombinujesz je w normalnych metodach wymagających instancji obiektu.

Podsumowywując... nie jest najlepiej. Przynajmniej takie jest moje zdanie.

Pozdrawiam, Athlan smile.gif

btw polecam zajżeć http://strzalek.net/blog/5/przyjazne-urle-piszemy-router smile.gif

Ten post edytował Athlan 16.01.2007, 15:53:16


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Turgon
post
Post #18





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Cytat

Odpada ten sposób! PATH_INFO jest blee i tyle.

Cytat
nie przewidziałeś że np ktoś może sachceć dodać inne parametry, chociażby np style. Czyżby przeróbka funckji? Nie lepiej zrobić, żebym listę parametrów ładował w tablicy?

Funkcje addTextInput() i addPasswordInput() w zasadzie różnią się słowem text/password, nie cierpie proceduralnego kopiowania kodu...


Może, mi tego nie potrzeba, ale może jak będę miał trochę wolnego czasu to napiszę, to.
Cytat
Zabolała mnie jeszcze jedna rzecz. Mianowicie fetching zapytań masz w klasie turquery.class.php, wykonanie ich turquery.class.php, obsługę bazy w tursql.class.php. Powiem tak: SYF. Klasa odpowiedzialna za baze danych powinna stanowić całość. A jak użyja innej bazy danych niż MySQL to chyba komponent turquery.class.php nie pójdzie do kosza? używasz tam funkcji do obsługi mysql... radzę zrobić jedność. Aby połączyć się z bazą muszę także ręcznie wywołać metodę za to odpowiedzialną. Nie wiam jak u Ciebie, ale u mnie w modelu podajesz nazwę klasy odpowiedzilną za obsługę źródła danych, wówczas konfigi, połączenie itd wykonuje się samo smilingsmiley.gif


O jedności za przeproszeniem gówno prawda... http://www.codeigniter.com/user_guide/database/examples.html Popisałeś się też logiką w modelu podajesz nazwę klasy odpowiedzialną za obsługę źródła danych. Model to ma robić ! Jakie tutaj configi (przez "c" piszemy w takiej formie jak coś). Może czasem nie potrzebuje się łączyć z bazą danych...

Cytat
po co... a nie lepiej wsadzić w template <?= $sText ?> albo <?php= $sText ?> , nie ma to jak szybkość działania.

Nie podoba się ? Wyłączasz. Mam inne upodobania.

Cytat
po co static?

Potrzebuje w funkcji getVendor() info o app. Bo nie mam ochoty tego wpisywać za każdym razem...

Zdravim
Łukasz

Ten post edytował Turgon 16.01.2007, 16:43:27


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Athlan
post
Post #19





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


Cytat
Odpada ten sposób! PATH_INFO jest blee i tyle.

Niezłe uzasadnienie, powiedziało mi bardzo dużo smile.gif Tutaj masz router napisany przeze mnie, który dokonale obrazuje, że jednak ten sposób nie jest fe smile.gif
http://framework.vgroup.pl/expose-da42a823...1a0c8c2612b.htm

Cytat
O jedności za przeproszeniem gówno prawda...

Chcesz kolejnego warna od mike_mech? tongue.gif (przy okazji pozdrawiam) smile.gif

Ale nie "gówno prawda", napisałeś w pewnym momencie:
Cytat
Popisałeś się też logiką w modelu podajesz nazwę klasy odpowiedzialną za obsługę źródła danych. [ ... ] Może czasem nie potrzebuje się łączyć z bazą danych...

Dzięki, to komplement? Jeżeli nie chcesz się łączyć to chyba nie uzywasz w modelu połączenia z bazą danych nie? U Ciebie jednak nawet jeżeli połączenia nie potrzebuję, muszę się łączyć. zacytuję tutaj linie kodu index.php żeby nie było nieporozumień:
  1. <?php
  2. try{
  3. TurConfig::loadFile('./kernelImage.php');
  4. $kernel = new TurKernel();
  5. $sql = new TurSQL();
  6. $sql->connect();
  7. $sql->selectDb();
  8. TurView::setStyle(TurConfig::get('defaultStyle'));
  9. $user = TurKernel::register('TurUser',new TurUser());
  10. $session = TurKernel::register('TurSession',new TurSession());
  11. echo $kernel->runVendor();
  12. }
  13. ?>


Cytat
Jakie tutaj configi (przez "c" piszemy w takiej formie jak coś).

Tutaj powini wypowiedzieć się ludzie odpowiadający za gramatykę. Nie napiszesz Configuracja tylko konfiguracja, tak samo nie będziesz pisał Controller tylko Kontroler, nie Computer tylko Komputer. To są swego rodzaju neologizmy wprowadzone (już na stałe) do przeciętnego użytku języka polskiego przez programistów.

Pozdrawiam, Athlan smile.gif

-- [edit ] --

O widzę, że zedytowałeś post i dorzuciłeś linka do Manuala CI. Najpierw pomyśl, potem rzucaj linkami. Jawet w CI fetching, querying i połączenie odnoszą się do tego samego komponentu ładowanego poprzez $this->db-> ... smile.gif

Pozdrawiam smile.gif

Ten post edytował Athlan 16.01.2007, 16:55:03


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Turgon
post
Post #20





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Athlan, nie mam ochoty pisać kolejnego klona ZF, co ty zrobiłeś. I co nie łaska jak nie potrzebujesz wywalić connect ?


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 23:04