Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nawyki projektowe, mój pierwszy prodźekt ;)
uirapuru
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


Nie wiem, czy jest to do końca ważne co dokładnie projektuje, ale chciałbym, żebyście skorygowali mój tok myślenia.

1) mam sobie kilka rodzajów includeów,
a) wszystko zapisane jako .php i objete w <? ?> (np. ustawienia skryptu na zasadzie $zmienna = "wartosc' (rzeczy typu hasla do bazy, loginy, inne wartosci)
(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) podobnie na zasadzie define('BLAD', opis); porobione komunikaty
c) w jednym includzie funkcje, w drugim klasy
d) chce docelowo includowac plik html, za pomocą str_replace podmieniac ciagi %%tutaj_cos%% na odpowiedzi skryptu (czy lepiej tak jak w joomli wykonywac w odpowiednich miejscach templatu odpowiednie funkcje?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

2) index.php includuje wszystko, zawiera sobie glowny obiekt oraz switche akcji (index.php?akcja=cos_tam i cos_tam jest case'm)
3) logowanie i zmienne oparte na sesjach, ale poprostu ustawiam zmienne jak "logged in" itp, nie wiem czy wymagany jest inny mechanizm, logowanie porownuje jedynie hashowane md5 hasło z zahashowanym hasłem z bazy
4) wszystkie $_GET i $_POST przed obrobka przejezdzam rekurencyjna funkcja z strip_slashes itp
5) komunikacja z baza wyglada tak, ze tworzony jest obiekt mysql, ktory nawiazuje przy tworzeniu polaczenie, a reszta odbywa sie za pomoca mysql_query, ale cos czuje, ze chce zrobic to tak, ze dla kazdej tablicty bedzie osobna klasa z rodzajem metody tablica.set_costam(wartosc)

dajcie znac, czy ide w dobra strone
Go to the top of the page
+Quote Post
okitoki
post
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

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


a) nie dokońca, jak zaczynasz łańcuch " to tym samym go kończysz, podobnie sprawa ma się do '
d) polecam smarty

2) ja bym to zrobił w całości w OOP, dodatkowo użył bym mod_rewrite

a do reszty nie mam uwag (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
uirapuru
post
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


Cytat(okitoki @ 6.05.2009, 05:13:35 ) *
a) nie dokońca, jak zaczynasz łańcuch " to tym samym go kończysz, podobnie sprawa ma się do '
d) polecam smarty

2) ja bym to zrobił w całości w OOP, dodatkowo użył bym mod_rewrite

a do reszty nie mam uwag (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


@a) - literówka (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

@d) przejrze sobie w koncu to smarty, bo nie pierwszy raz mnie ten temat atakuje, ale tak na szybko: na jakiej zasadzie dziala wtedy to co moj skrypt wywala (czy robie jakies przechwytywanie bufora, czy wywalam odp do zmiennych?) a potem podpiecie tego pod templatke?

a juz widze, czyli ustawiam sobie poprostu zmienne obiektu smarty... proste jak budowa gwoździa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

@2) tzn. bawic sie w rzeczy typu serwer/wyswietlanie == serwer/index.php?akcja=wyswietl ?

Ten post edytował uirapuru 6.05.2009, 06:22:45
Go to the top of the page
+Quote Post
okitoki
post
Post #4





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

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


w smarty ładujesz wszystkie informacje do tablicy, następnie podpinasz szablon, a w samym szablonie można sporo zrobić też (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
a jeżeli chodzi o mod_rewrite, to tworzysz kontener, który będzie wykonywany jak na podanym adresie nie będzie pliku

.htaccess
Kod
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /controller.php [L]
</IfModule>


controler.php
Kod
$lokalizacja = $_SERVER["REQUEST_URI"];
$page = explode('/',$lokalizacja);
.......

interpretujesz adres jak Ci wygodnie pozbywasz się ?& i innych śmieci na rzecz htto://www.costam.pl/costam/costam

smarty
Kod
require_once 'lib/Smarty.class.php';
$sm = new Smarty();
$sm->assign('witaj',"Witaj");
$sm->display('index.html');


templates/index.html
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="{$keywords}" />
<meta name="Description" content="" />
<meta name="Robots" content="index, follow" />
<meta name="Revisit-After" content="1 day" />
<meta name="Page-Topic" content="{$pagetopic}" />
<meta name="Rating" content="General" />
<title>{$page_head}</title>
</head>
<body>
{$witaj}
</body>
</html>


w smarty można sporo rzeczy robić a modyfikacja templatki modyfikuje wygląd strony, chociaż tu lepiej użyć XHTML i CSS
Go to the top of the page
+Quote Post
uirapuru
post
Post #5





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


no tak, to musze poprostu o tym wiecej poczytac potem. jak sie domyslam serwer/skrypt/arg1/arg2/arg3 mam potem do eksplodowania z adresu? czy od razu jako zmienne sa w skrypcie dostepne?
Go to the top of the page
+Quote Post
.radex
post
Post #6





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Cytat
c) w jednym includzie funkcje, w drugim klasy


To nie ma być tak, że jest podzielone ze względu na rodzaj (typ/klasa), tylko ze względu na przeznaczenie, np. w DB.php znajdują się klasy i funkcje związane z bazą danych. Chociaż to może był zły przykład, bo nie powinno się dawać kilku klas w jednym pliku, bo wprowadzają zamieszanie, no chyba, że są krótkie.

Cytat
d) chce docelowo includowac plik html, za pomocą str_replace podmieniac ciagi %%tutaj_cos%% na odpowiedzi skryptu (czy lepiej tak jak w joomli wykonywac w odpowiednich miejscach templatu odpowiednie funkcje?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?


Użyj jakiegoś gotowego systemu szablonów (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

http://pornel.net/szablony

Ten post edytował .radex 6.05.2009, 06:38:52
Go to the top of the page
+Quote Post
okitoki
post
Post #7





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

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


jeszcze jedno jest ważne

smarty musi mieć jeden katalog do zapisu
domyślny jest templates_c na nim ustaw odpowiednie prawa

Cytat(uirapuru @ 6.05.2009, 07:36:29 ) *
no tak, to musze poprostu o tym wiecej poczytac potem. jak sie domyslam serwer/skrypt/arg1/arg2/arg3 mam potem do eksplodowania z adresu? czy od razu jako zmienne sa w skrypcie dostepne?


używasz explode, dla ciebie taki adres to źródło informacji dla innych jest czytelny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat(.radex @ 6.05.2009, 07:38:02 ) *
To nie ma być tak, że jest podzielone ze względu na rodzaj (typ/klasa), tylko ze względu na przeznaczenie, np. w DB.php znajdują się klasy i funkcje związane z bazą danych. Chociaż to może był zły przykład, bo nie powinno się dawać kilku klas w jednym pliku, bo wprowadzają zamieszanie, no chyba, że są krótkie.


dobry pomysł, możesz w katalogu /DB umieścić klasy obsługi baz danych, zmiana informacji w konfiguracji może spowodować że twój projekt będzie obsługiwał różne silniki bazodanowe

Cytat(.radex @ 6.05.2009, 07:38:02 ) *


dla czego nie, wiele projektów na nim zrobiłem, i sobie go chwale (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował okitoki 6.05.2009, 06:49:24
Go to the top of the page
+Quote Post
uirapuru
post
Post #8





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


Cytat(okitoki @ 6.05.2009, 05:48:26 ) *
dobry pomysł, możesz w katalogu /DB umieścić klasy obsługi baz danych, zmiana informacji w konfiguracji może spowodować że twój projekt będzie obsługiwał różne silniki bazodanowe


dżizys, znaczy mam sobie zrobic katalog /db_mysql na przyklad i kazda klase zapisywac w osobnym pliku a potem to includeowac jakimś dir i w pętli dla kazdego pliku?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? bo na moj gust stykloby zrobic jeden plik dla mysql, jeden dla postgresa itd... i zunifikowac jedynie nazwy klas i metod a w konfigu podawac nazwe pliku... dobrze mysle?
Go to the top of the page
+Quote Post
okitoki
post
Post #9





Grupa: Zarejestrowani
Postów: 214
Pomógł: 18
Dołączył: 25.04.2009

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


możesz też zrobić np

mysql.php
Kod
class mysql
{


}


potem można zrobić include uniwersalne w funkcji autoload, już nie muszisz robić include(......) tylko robić $sql = new mysql(); a skrypt dołączy ci sam odpowiedni plik klasy

jak coś raz zrobisz dobrze w OOP, to możesz to potem wykorzystywać w wielu swoich projektach i z modyfikacjami takich projektów też potem nie ma problemu
Go to the top of the page
+Quote Post
uirapuru
post
Post #10





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


kurde, 10 minut czytania waszych postow i rece sie trzesa do nowego pisania (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) za duzo tego php, zeby sie na pamiec nauczyc, a jeszcze wlasnie kwestia odpowiednich rozwiazan. szukalem czegos takiego jak wzorce projektowe, ale one sa raczej w skali ogolnej niz szczegolnej, chodzi mi np. o temat: "jak sie pisze bezpieczne logowanie do serwisu i bezpiecznie obsluguje sesje". niby proste, ale ilu programistow tyle rozwiazan. albo obsluga ciasteczek itd. czy sa jakies gotowe standardy i wzorce programistyczne?

Ten post edytował uirapuru 6.05.2009, 07:07:57
Go to the top of the page
+Quote Post
Zyx
post
Post #11





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


1. Sprawa sesji - tak, są powszechnie znane techniki ich zabezpieczania i pewne standardy ich tworzenia. Kiedyś powstało "PHP Security Consortium"... coś szybko się wykruszyło, ale zostawiło po sobie całkiem interesujący dokument dotyczący m.in. sesji: http://phpsec.org/projects/guide/

2. Przejeżdżanie $_GET oraz $_POST przez stripslashes() - nie rób tak! Słowem kluczowym jest tutaj: magic_quotes, ty powinieneś pisać skrypty tak, jakby było ono wyłączone, a usuwać slashe tylko wtedy, gdyby włączone było. W PHP6 opcja ta zniknie i będziesz w kropce, bo Twój skrypt będzie do przeróbki.

3. Nie pisz nowej klasy do komunikacji z bazą danych od zera, tylko skorzystaj albo z czystego PDO, albo z rozwiązania bazującego na nim. Stare rozszerzenia, o ile są już w PDO zaimplementowane zamienniki, nadają się właściwie tylko na śmietnik. Przy okazji PDO automatycznie dostosowuje się do ustawień magic_quotes.

4. Kwestia systemu szablonów - Smarty ma tę zaletę, że jest popularny, ale w sumie od lat stoi w miejscu i od strony składni szablonów nie błyszczy - idzie mocno w stronę "tradycyjnego" programowania, więc i tak trzeba się namęczyć, by cokolwiek bardziej zaawansowanego napisać, do tego pozmieniał dobrze funkcjonujące rozwiązania programistyczne (komu przeszkadzało wywołanie funkcji w stylu f(x) ?) i nie ma zbyt wiele narzędzi do modularyzacji i wielokrotnego wykorzystania tego samego kodu. W ogóle temat systemów szablonów jest o wiele bardziej złożony, pełno tutaj różnych mitów i pseudoporównań (np. widziałem już "porównania" typu "Smarty"-jakiś framework, i to robione przez naprawdę znających się na rzeczy programistów (!)). Kiedyś w jakiś rodzaj systemów szablonów i tak będziesz musiał wejść, więc może warto poczytać parę rzeczy na ten temat:

http://pornel.net/szablony - już podany wyżej, trochę przydałoby mu się odświeżenia, ale ogólnie OK
http://www.zyxist.com/pokaz.php/uzyteczne_systemy_szablonow
http://phpedia.pl/wiki/Systemy_szablonów

Ten post edytował Zyx 6.05.2009, 07:59:54
Go to the top of the page
+Quote Post
uirapuru
post
Post #12





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


Cytat(okitoki @ 6.05.2009, 05:36:27 ) *
w smarty ładujesz wszystkie informacje do tablicy, następnie podpinasz szablon, a w samym szablonie można sporo zrobić też (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
a jeżeli chodzi o mod_rewrite, to tworzysz kontener, który będzie wykonywany jak na podanym adresie nie będzie pliku

.htaccess
Kod
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /controller.php [L]
</IfModule>


controler.php
Kod
$lokalizacja = $_SERVER["REQUEST_URI"];
$page = explode('/',$lokalizacja);
.......

interpretujesz adres jak Ci wygodnie pozbywasz się ?& i innych śmieci na rzecz htto://www.costam.pl/costam/costam


rozumiem, ze zamiast controller.php moge od razu dac index.php? czy przekierowanie robic z pliku "obok" i zmienne przewalać dopiero do index.php i przekierowywac tam z uzyciem header() ?
Go to the top of the page
+Quote Post

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 Aktualny czas: 31.12.2025 - 20:14