![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cześć!
Mój prosty framework (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) jest już na ukończeniu, jednak mam wątpliwości jeśli chodzi o zastosowanie obiektów... Skrypt działa na systemie szablonów Smarty. -------------- Każdy plik posiada swoją klasę, jako przykład weźmy plik libs.php (zarządzanie bibliotekami):
i class/Lib.php:
A więc każda biblioteka to po prostu klasa złożona z kilku funkcji statycznych... Zastanawiam się, czy nie jest to głupotą/nagięciem zasad OOP. Zastosowałem metody statyczne, bo: * Nie muszę tworzyć obiektu, by się do nich odwołać... * ...przez co nie jest problemem użycie danej metody w innym pliku * Są proste w kodowaniu i użyciu Z tym, że cały framework jest oparty i takie właśnie klasy... Może można by to rozpisać inaczej: prościej, a zarazem poprawniej? Pozdrawiam, Fipaj |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
to nie jest OOP to jest po prostu umieszczenie funkcji w klasach.
Trudno mi wyjaśnic na czym polega OOP, ponieważ nie jest to tylko class Foo a cały sposób myślenia, filozofia i nie da się tego wytłumaczyc w dwóch zdaniach. Polecam czytac dużo materiałów, tutaj na forum, na wiki i php.pl jest troche, plus phppatterns.com plus sitepoint.com |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat to nie jest OOP to jest po prostu umieszczenie funkcji w klasach. Wiem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Jestem po lekturze znakomitej książki Matta Zandstry o OOP, może przesadziłem, mówiąc, iż "cały framework jest oparty o te metody statyczne", ale po prostu szukam sposobu na ominięcie tego. Bo z drugiej strony, pisanie tego jako normalną klasę też nie jest dobre, bo to poprostu jedna linijka kodu więcej. Wiem i rozumiem, iż funkcje statyczne służą do troszkę czego innego, ale jak to rozwiązać? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Singleton, Factory, Decorator, cala masa innych wzorcow obiektowych.
Pozatym przeciez przekazywanie argumentow przez konstruktor i metody, dziedziczenie etc. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Pozatym przeciez przekazywanie argumentow przez konstruktor i metody, dziedziczenie etc. Tyle tylko, że skrypt jest tak prosty, iż to jest po prostu nie potrzebne... Co do wzorców: można, tylko po co? Singleton to taki OO odpowiednik zmiennych globalnych, ale nie ma tutaj potrzeby jego stosowania... Inne wzorce: między poszczególnymi metodami nie ma jakiegoś większego związku, więc sa one, w większości, nieprzydatne... Specjalnie przytoczyłem kawałek kodu, żeby pokazać, że aplikacja jest max prosta... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Singleton to taki OO odpowiednik zmiennych globalnych, ale nie ma tutaj potrzeby jego stosowania... Jesli uwazasz ze singleton sluzy tylko do tego to daj sobie spokoj z obiektowka i jeszcze duuuzzzooo poczytaj.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Null: czytam, czytam.
Cytat Jesli uwazasz ze singleton sluzy tylko do tego to daj sobie spokoj z obiektowka i jeszcze duuuzzzooo poczytaj. Po prostu tak sobie tłumaczę, że nie mam tu jak go stosować... ---------- Słowem wyjaśnienia - programowac obiektowo umiem troche w teorii, troche w praktyce, ale jeszcze nigdy nie stosowałem wzorców... Kilka dni temu zacząłem czytać nowe phppatterns.com i dopiero *poznaję* wzorce, więc tu proszę o wyrozumiałość... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 476 Pomógł: 1 Dołączył: 5.11.2005 Skąd: Bieruń city Ostrzeżenie: (0%) ![]() ![]() |
Jak używasz tylko funkcji statycznych, to odpuść sobie klasy. Nie prościej napisać:
dzieki temu nie trzeba dodatkowo pisać 'nazwaKlasy::' |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Z pewnej strony masz rację, ale to da się zrobić tylko w *tej* klasie. Już obsługa plug-in'ów jest bardziej skomplikowana, występują tam pewne zależności...
Szukam rozwiązań OO. Ten post edytował Fipaj 5.11.2005, 18:51:38 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
W jakim OOP ty piszesz ? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) - co za za OOP piszac na samych metoda statycznych ? Piszesz strkturalnie grupujac funkcje w klasy - nic wiecej.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Kolejna ofiara nowego systemu szkolnictwa - brak czytania ze zrozumieniem.
Jeśli chcesz to zrobić porządnie to proponuje pójść do najblizszego sklepu z materiałami biurowymi a następnie kupienie bloczku kartke w kratke formatu A4 i ołówka. Potem jak wrócisz do domu to ułóz to przed sobą i odpręż się a potem zacznij szkicować cały serwis - jak ma wyglądać itp. To co zaprezentowałeś to nic - brak funkcji sprawdzajacych poprawność wprowadzanych danych, brak funkcji obsługujących błędy, brak możliwości rozszerzenia. Poza tym proszę wyedytuj pierwszego posta i zamiast "mój prosty framework" napisz "najprostszy framework na świecie". Naprawdę polecam przygotowanie najpierw szkicu porządnego, bez tego ani rusz jeśli chcesz coś porządnego zrobić. A jeśli chcesz zrobić g*** to lepiej do WC pójdź (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jeśli chcesz to zrobić porządnie to proponuje pójść do najblizszego sklepu z materiałami biurowymi a następnie kupienie bloczku kartke w kratke formatu A4 i ołówka. Potem jak wrócisz do domu to ułóz to przed sobą i odpręż się a potem zacznij szkicować cały serwis - jak ma wyglądać itp. 1. nie serwis, a framework Prometeus, wiem, że to jest po prostu grupka funkcji w klasie... Ale to jest wykorzystane do tak prostych działań, między metodami nie ma żadnego powiązania... Ale chyba mam już pomysł na rozwiązanie tego problemiku... Klasa Lib jest bardzo podobna do klasy File, obie służą do zarządzania, jedna katalogami, druga plikami. Tworzę interfejs:
Potem tworzymy dwie klasy, przykładowo Lib:
Better? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował Fipaj 6.11.2005, 09:26:10 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
No już trochę lepiej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ogólnie to mela clupa - framework należy rozpisać, serwis najczęściej buduje się w oparciu o już istniejący framework lub o framework, który się dla niego napiszze. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No to może jakieś wyjaśnienie o frameworku.
Framework buduję nie po to, aby zbudować jakiś serwis, ale po to, by uprościć tworzenie innych aplikacji... Podstawowe funkcje frameworka to 'dorzucanie' do przygotowywanej aplikacji bibliotek (Smarty, Creole, itp.), generowanie systemu plików, dołączanie skryptów umożliwiających stworzenie instalatora, systemu błędów, itp... Poza tym framework posiada prosty system plug-in'ów oraz szablonów... Tworzony akurat na moje potrzeby (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
olej system szablonow (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) nie ma czasu na pierdoly, sam framework Ci powinien zajac pare miesiecy jesli to ma byc COS (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 19.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
1. system szablonów to prowizorka, po prostu w katalog /tpl szablony są pogrupowane w katalogu, a klasa Tpl wczytuje z pliku 'default-tpl' nazwę aktualnego szablonu ;P już zrobione
2. to nie ma być COS, to ma mi pomóc *szybko* tworzyć projekty, wykonując za mnie takie zadania jak dołączanie bibliotek, organizowanie struktury katalogów, tworzenia instalatora, wielojęzykowości i wieloszablonowości (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) 3. już kiedyś chciałem stworzyć COS, umieściłem w tym nawet menedżer notatek (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) , ale potem wyrzuciłem cały kod uznając go za kilkaset bezużytecznych linijek... 'i tak powstał loveframework!' (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Ten post edytował Fipaj 6.11.2005, 13:59:12 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 06:26 |