Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.

7 Stron V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> jak pisac jadro ?
halfik
post 1.04.2004, 20:37:54
Post #21





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


Cytat
A ja jak najbardziej chociaz lepiej chocby objac funkcje w klase by uniknac konfliktow nazw...

Naturalnie, że kodowanie obiektowe niesie ze soba wielkei możliwości i jedną z nich jest ta o której wspominasz. Naturalne jest, że napisać jądro jak i sam serwis prościej bedzie w OOP, bo tutaj łatwiej utrzymać pewną hierarchię, zależności itd. - czytelność, zwięzłość kodu etc. Z drugiej jednak strony: wszyscy wiemy, że bez php 5 nie mamy prawdziwego OOP - pozsotaje nam tylko czekać z nadzieją na powiększenie możliwości, które i tak są ogromne smile.gif
Go to the top of the page
+Quote Post
robert_b
post 4.04.2004, 22:34:18
Post #22





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 21.11.2003
Skąd: Gdynia

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


Wow!!!
Ale wy wszyscy jesteście mądrzy! Chyba źle trafiłem...
Ale będę się uczył i niedługo też sobie napiszę "jądro" albo nawet dwa!! :wink:
Go to the top of the page
+Quote Post
Sh4dow
post 5.04.2004, 15:37:44
Post #23





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


no dobra temu panu juz podziekujemy biggrin.gif Joke !

A tak wracajac do sprawy. To nie do konca musze sie zgodzi z wami jesli chodzi o oop. Nie mowie ze nie ma wielu zalet, ale jesli chodzi mi o ta czytelnosc którą tutaj tak chwalicie. Czytelnosc kodu nie zalezy od sposobu pisania, ale od samego piszącego.
Wlasnie skonczylem pisać swoj silnik do strony. Z paroma modulami zajelo mi to miesiac. caly slilnik jest rozplanowany w 4 podstawowe pliki i katalog z bibliotek wspomagajacych. Wszystko napisanie strukturalnie i moim zdaniem jest w miare przejzysty pomimo paru braków w komentarzach. oczywiscie wykozystuje pare mniejszych klas w niektorych miejscach, ale ogolnie kod jest czytelny. Ale to jest moje osobiste zdanie.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
halfik
post 5.04.2004, 17:53:54
Post #24





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


Cytat
Wlasnie skonczylem pisać swoj silnik do strony. Z paroma modulami zajelo mi to miesiac. caly slilnik jest rozplanowany w 4 podstawowe pliki i katalog z bibliotek wspomagajacych. Wszystko napisanie strukturalnie i moim zdaniem jest w miare przejzysty pomimo paru braków w komentarzach. oczywiscie wykozystuje pare mniejszych klas w niektorych miejscach, ale ogolnie kod jest czytelny. Ale to jest moje osobiste zdanie.

Owszem, to czy kod będzie czytelny w dużej mierze zależy od kodera. aLe nam akurat nie o to chodziło. Srpawa jest taka, że patrząc na kod w OOP po prostu czytasz co tam jest napisane np. patrzysz news->dodaj($tresc) - wiadomo co to robi. wiadomo też ze jeśli zechcesz usunąc newsa to będzie odpowiednia metoda w klasie news itd. A przy kodowaniu strukturalnym musisz poszukać, sprqawdzić która funkcaj jest od czego. Choć można tutaj oszedzić używając odp. nazw np. addNews($text) itd. jednak to nie będzie ta sama przejrzystośc kodu. Sam w PHPie po dziś dziań koduje strukturalnie, mój site cały jest strukturalny - wyjątek to kalsy SMARTY - i kod jest czytelny na ile to możliwe. Zawsze jest skrypt głowny od doczepia pliki konfiguracyjne, pliki funkcyjne, a sam dba tylko o sprawdzanie warunków, wywoływanie odp. funkcji, przekazywanie wyników gdzie trzeba oraz przypisywanie wartości do zm. szablonowych itd. Także mam osobny katalog na funkcje, osobny na szablony, osobny na konfigi do szablonów, osobny na konfigi do skryptów itd. - mimo wszystko to nie to samo co można uzyskać dzięki OOP.


--------------------


"Nie wiedziałem tylko, że Bóg też był na grzybach, gdy majstrował przy wszechświecie" (Janusz Wisniewski)
dev: gazeta.ie
Go to the top of the page
+Quote Post
jaco
post 5.04.2004, 20:14:12
Post #25





Grupa: Zarejestrowani
Postów: 115
Pomógł: 1
Dołączył: 15.01.2003

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


Ja tez nie koduje obiektowo, narazie badam (dla mnie) nowy teren - wiedza juz jakas jest, teraz raczej zastanawiam nad samym zastosowaniem.

Dziedziczenie - napewno przydatna zabawka winksmiley.jpg Jak narazie uczytelniam swoj kod do postaci news::add($tresc) (wzorujac sie na przykledzie przedmowcy smile.gif).

Cieszy mnie rowniez takie rozwiazanie bo licznik czasu generowania na to nie reaguje, gdy stworze obiekt jest juz spora roznica (w tym momencie system wysyla 7-10 zapytan na strone, jest juz mocno rozbudowany i generuje sie okolo 0,02s - wlasciwie to co zwalnia to zapytania i obiekty - z zapytaniami sobie poradzilem (np. pre ladowanie danych i zapis w zmiennej globalnej - moduly, biblioteki, userzy - dalej nie ma juz zadnych zapytan zwiazanych z tymi danymi)
Go to the top of the page
+Quote Post
halfik
post 5.04.2004, 23:04:40
Post #26





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


Cytat
Dziedziczenie - napewno przydatna zabawka winksmiley.jpg Jak narazie uczytelniam swoj kod do postaci news::add($tresc) (wzorujac sie na przykledzie przedmowcy smile.gif).

Ja tam wolę określenie mechanizm winksmiley.jpg A tak na serio do tematu: pawdziwe zabawki dostaniemy dopiero z pojawieniem się 5, z tego co się przyglądałem wnioskuje, że wzorcem była tutaj JAVA. Obecnie morduje "Thinking in JAVA" B.Eckela i naprawde niezłe jazdy można robić w pełnym OOP smile.gif

P.S Ktoś na forum pisał, że gdzieś tam w PHPie do czegoś tam używał Singletonu - ciekawi mnie jak, bo bez modyfikatorów dostępu nie da się zrobić czystego Singletonu, a uzycie w tym celu sztucznego licznika obiektów to raczej nie to samo...

Inna sprawa: ciekwe o ile po wejściu 5, skrypty napisane w OOP będą wolniejsze od ich odowiednich kodowanych strukturalnie?


--------------------


"Nie wiedziałem tylko, że Bóg też był na grzybach, gdy majstrował przy wszechświecie" (Janusz Wisniewski)
dev: gazeta.ie
Go to the top of the page
+Quote Post
seaquest
post 6.04.2004, 15:26:16
Post #27





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


@jaco: ale jak rozwiązujesz problem kiedy potrzebne ci jest kilka obiektów jednej klasy...
to mnie ciekawi, bo robie CMS'a pod php 4 i 5. I mam zamiar zrobić ładowanie osobnych sterowników do bazy (SQLite - tylko dla PHP5, MySQL, MySQLi oraz Postgree) i to mogą być klasy oparte na singletonach, ale np. klasa FormGenerator musi mieć stworzonych czasem kilka instancji, a zastosowanie wtedy zmiennych i metod statycznych staje się po prostu niemożliwe.


--------------------
Michał Płachta
Warsztat: Mac OS X Leopard, PostgreSQL, Text Mate, Retrospectiva + SVN
Go to the top of the page
+Quote Post
Balin
post 6.04.2004, 17:34:53
Post #28





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 14.05.2003

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


Wiec nie tworz metod statycznych - stworz obiekt, z 1 metoda statyczna obj::GetInstance() i skladowa statyczna static private $Instance, jesli bedziesz chcial odwolac sie do istniejacej instancji obiektu wywolasz metode obj::GetInstance, ktora sprawdzi czy istnieje juz instancja tego obiektu i zwroci ja.
A jesli bediesz chcial utworzyc nowy egzemplaz obiektu skozystasz z new.
Go to the top of the page
+Quote Post
seaquest
post 6.04.2004, 18:02:33
Post #29





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


Balin wogule mnie nie zrozumiałeś. Chodzi mi o to, że jaco pokazał że korzysta ze zmiennych i metod statycznych. A ja się pytałem jak rozwiązuje to w klasach, w których potrzebne mu kilka obiektów...


--------------------
Michał Płachta
Warsztat: Mac OS X Leopard, PostgreSQL, Text Mate, Retrospectiva + SVN
Go to the top of the page
+Quote Post
hawk
post 6.04.2004, 18:03:20
Post #30





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


@Balin: To złe rozwiązanie. Bo którą instancję ma zwrócić getInstance()? Przy kilku istniejących instancjach to bez sensu, bo musi być jedna wyróżniona instancja, więc po co inne?

@seaquest: IMHO jeżeli potrzbujesz kilku instancji klasy to singleton po prostu nie pasuje i tyle. W twoim przypadku każda klasa, która używa tego FormGeneratora, musi wiedzieć, której akurat instancji używa - więc musi mieć referencję do tej instancji (albo jakiś inny dostęp do tej właśnie referencji). To po co jej dodatkowo singleton?
Go to the top of the page
+Quote Post
jaco
post 6.04.2004, 21:32:59
Post #31





Grupa: Zarejestrowani
Postów: 115
Pomógł: 1
Dołączył: 15.01.2003

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


Cytat
ale jak rozwiązujesz problem kiedy potrzebne ci jest kilka obiektów jednej klasy...


Nie ma takiej sytuacji bo to co ja robie nie ma nic wspolnego z OOP smile.gif Ja poprostu wkladam kod silnika w klase aby uniknac konfluktu nazw, jak narazie jestem baaardzo zadowolony z wynikow - jak wspominalem nie znam do konca zalet programowania obiektowego i jakos nie potrafie sie do tego przekonac jak widze czas generowania strony - narazie nie odpowiada mi wspolczynnik predkosci do zalet (moze dlatego, ze do konca ich nie znam).
Go to the top of the page
+Quote Post
DeyV
post 6.04.2004, 21:47:03
Post #32





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




A ja, tak może nieco OT, powiem, ze nie rozumiem ludzi, którzy zarzekają się, ze nie będą pisać w OOP, ponieważ jest to 'wolne'.

Na poparcie swojego stwierdzenia przytoczę przykład konkursu programistycznego z przed jakiegoś roku, polegającego na napisaniu jakiegoś złozonego algorytmu operującego na kartach do gry w php.

Ocenie podlegało to, by skrypt a) robił to co ma zrobić cool.gif działał jak najszybciej.

Zadanie spotkało się ze sporym odzewem, tym bardziej, że nagroda była całkiem ciekawa (chyba Zend Studio i jakieś spore konto www)
Pojawilo się wiec bardzo dużo rozwiazań.
Ludzie też bardzo poważnie potraktowali zagadniania przyśpieszania skryptó. Widziałem nawet kod, który był napisany bez żadnych dodaktowych spacji, oraz znaków nowych lini, aby.. działał jak najszybciej.

Co ciekawe jednak - wygrał skrytp napisany supełnie inaczej.
Był to zresztą chyba kod chłopaka z Polski, kod napisany w pełni w oparciu o OOP, wraz z dokładnymi komentarzami oraz pięknie sformatowanym kodem.

A żeby było jeszce śmieszniej - kod ten wykonywał się od 5 do 50 razy szybciej, niż rozwiazania konkurencyjne, napisane oczywiście strukturalnie .

Może jest to nieco skrajny przypadek, ponieważ nie ma wątpliwości, że ten sam agorytm napisany przy wykorzystaniu OOP, i strukturalnie, zawsze będzie minimalnie szybszyw tym 2 przypadku.
Są to jednak na tyle minimalne różnice, że tak naprawdę nie powinno się o nich wspominać.
Czasem co najwyżej pojawia się inny problem. Pisząć obiektowo, znacznie łatwiej zapomnieć o bagarzu kodu, który pociąga uruchomienie naszej aplikacji. W kodzie strukturalnym jesteśmy zmuszeni do ciągłego przglądania kodu, co skłania nas do cpytamalizawania go (choćby dlatego, by mniej go przepisywać winksmiley.jpg )
Korzystając z przygotowanych wcześniej klas znacznie łatwiej o tym zapomnieć.
Ale w takim przypadku - problem tkwi nie w budowie php, albo w filozofi OOP, a w ... programiście. aaevil.gif


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
jaco
post 6.04.2004, 22:08:31
Post #33





Grupa: Zarejestrowani
Postów: 115
Pomógł: 1
Dołączył: 15.01.2003

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


Cytat
A ja, tak może nieco OT, powiem, ze nie rozumiem ludzi, którzy zarzekają się, ze nie będą pisać w OOP, ponieważ jest to 'wolne'.


Ja tego nie robie i jestem swiadom, ze to problem mojej osoby smile.gif Poprostu za malo znam te technike (nie da sie ukryc, ze dla zaczynajacego jest troche zawila) zeby odrazu pisac na nowo, obiektowo gdy praktycznie zakonczylem prace nad platforma systemu - napisanego strukturalnie oczywiscie.

Zreszta wcale nie przeszkadza to w zrobieniu hybrydy, silnik dziala niezaleznie od modulu zas API moze byc klasa (tego bedzie uzywac programista piszacy modul).
Go to the top of the page
+Quote Post
KirkoR
post 11.04.2004, 14:09:39
Post #34





Grupa: Zarejestrowani
Postów: 118
Pomógł: 0
Dołączył: 14.02.2004
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Można gdzieś znaleźć na necie do ściągnięcia taki Engine. Tzn. architekturę na któej można opierać swoje apliacjie? Jesli tak to prosze o linki.
Go to the top of the page
+Quote Post
marcin96
post 11.04.2004, 14:44:09
Post #35





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 21.08.2003
Skąd: Będzin

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


poczytaj sobie o tym:

http://www.php.pl/index.php/phppl/artyku_y...wadzenie_do_mvc

..na końcu Hawk podał kilka różnych frameworków opartych o wzorzec MVC snitch.gif)


--------------------
www.calek.info
Go to the top of the page
+Quote Post
Ace
post 11.04.2004, 17:25:11
Post #36





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


Ja mam pytanie z innej beczki. Mianowicie, czy przechowywanie danych w tablicy zmiennych globalnych $GLOBALS jest dobrym rozwiazaniem ? ma to jakies przeciwskazania ? Przy pisaniu silnika bardzo latwo dodaje moduly, tworze z nich referencje, nie musze miec dodatkowych klas czy funkcji ktore zwracaja mi referencje, tylko odwoluje sie bezposrednio do zmiennych/obiektow/tablic ktore znajduja sie w zbiorze tablic globalnych...
np:
[php:1:6c9a871414]<?php
class silnik
{
function login()
{
if ( $login == $wynik['login'] && $haslo == $wynik['haslo'] )
$GLOBALS['_USER']['login'] = $login;
$GLOBALS['_USER']['access'] = $access;
}

}
?>[/php:1:6c9a871414]

a w innej czesci silnika daje np:
[php:1:6c9a871414]<?php

// ...

if ( $GLOBALS['_USER']['access'] > '2' )
echo 'masz dostep do panelu administracyjnego';

// ...

?>[/php:1:6c9a871414]

co myslicie o takim rozwiazaniu ?
Go to the top of the page
+Quote Post
hawk
post 11.04.2004, 20:31:47
Post #37





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


1. Jest nieobiektowe (ale to sam wiesz...)

2. Sypie się, gdy developerów jest więcej, bo jeden nie wie gdzie co wstawił drugi, a obiekt jednak ma swój interfejs i łatwiej jest zorientować się jak się do tego dostać.

3. Może się sypać, gdy nie tylko ty masz taki pomysł, ale też twórca drivera do bazy danych, systemu szablonów, itd. i pechowo 2 ludzi wybierze sobie te same nazwy -> wtedy systemy są całkowicie niekombatybilne.

4. Mało modyfikowalne. Jak już masz to zaimplementowane to zmiana rozwala cały kod. A np. treść metody możesz wymienić, byleby tylko dalej zwracała co trzeba.

5. Mało dokumentowalne. Jak masz metodę getLogin() to dokumentacja tego jest prosta. Ale jak masz tablicę w $GLOBALS, to np. nie ma gdzie podczepić komentarzy phpdoc. A nawet jak już gdzieś się je umieści, to wyjasnienie, co będzie wstawiane w poszczególne pola, wymaga dłuższych elaboratów. A z metodą - proste.

6. Powiązania każdy-każdy. Nie masz pojęcia które pliki/klasy korzystają z których, bo jak coś siedzi w $GLOBALS to każdy kawałek kodu ma do tego dostęp. Łatwość dodawania modułów, o której piszesz, wynika właśnie z tego, że wszystko ma dostęp do wszystkiego. A design obiektowy wymusza zastanowienie się, komu dać dostęp (referencję) do danego obiektu. Jak zrobisz coś podobnego w podanym przykładzie, to wyjdzie z tego chaos.

Czyli ogólnie... nie, nie mam przeciwwskazań jeżeli system jest na tyle mały (w sensie ilości kodu i liczby developerów) że da się tym zarządzać przy użyciu kodu nieobiektowego.
Go to the top of the page
+Quote Post
Ace
post 11.04.2004, 23:14:44
Post #38





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


ok to milo, bo w sumie to tylko jedna osoba to pisze -> ja winksmiley.jpg ale latwo mi jest dojsc do danego obiektu, a tak czy inaczej obiekty sa przypisywane wedlug konkretnych regul, module inaczej, clasy glowne inaczej, wiec z tym problemu nie mam...
Go to the top of the page
+Quote Post
jaco
post 11.04.2004, 23:59:59
Post #39





Grupa: Zarejestrowani
Postów: 115
Pomógł: 1
Dołączył: 15.01.2003

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


Wroce do tematu mojego silnika i jego "obiektowosci" otoz dzis przepisalem prawie caly na OO i bardzo mile sie zaskoczylem (wsumie to moje poczatki z OO i stara zasada nie zrozumiesz jak nie sporobojesz) - poczatkowo cyferki na liczniku generowania pomnozone byly 3-4 razy...

Okazalo sie, ze istota OO pozwala na wyeliminowanie blokow niezbednego kodu strukturalnego i w tym momencie licznik generowania odczuwa zmiane tylko na 3 miejscu po przecinku (wzrost o 0,003-0,006 - wymarzony efekt!!).

Z przykroscia stwierdzam jedynie, ze dziedziczenie jednej klasy przez druga spowalnia caly system okolo dwa razy w prownaniu z dwoma osobnymi obiektami.
Go to the top of the page
+Quote Post
Ace
post 12.04.2004, 14:55:06
Post #40





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


jeszcze wroce do wypowiedzi HAWK'a
Cytat
wynika właśnie z tego, że wszystko ma dostęp do wszystkiego. A design obiektowy wymusza zastanowienie się, komu dać dostęp (referencję) do danego obiektu


hm, przyszlo mi na mysl, ze w sumie chyba nie ma sensu branie pod uwage dostepnosci. Przeciez chyba wszystkie zmienne sa dostepne w zmiennej $GLOBALS...
wiec jesli ja tworze sobie w obietk np: silnik, to w GLOBALS bedzie dostep do tej funkcji, ja tak to robie. Wiec czemu ktos kto nie ma dostepu do jednej klasy nie zdobedzie go ? zaden problem napisac

[php:1:634880fed1]<?php
$nowy_obiekt = & $GLOBALS['nazwa_obiektu'];
?>[/php:1:634880fed1]

?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 12:46