Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> początki - próba zrozumienia
bl4ck_b0x
post 19.10.2008, 15:11:37
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 21.11.2006

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


Witam.

Od jakiegoś czasu chodzi mi myśl o poznaniu obiektowego programowania w PHP. Czytałem trochę na ten temat, przeglądałem trochę kodów. Mam jednak kilka pytań.

1. Jak napisać uniwersalny kod który mógłby być wykorzystywany w różnych miejscach na stronie a następnie jak się do niego odwoływać? Mam na myśli np. klasę tokena. Tokeny są wykorzystywane w rejestracji, dodawaniu komentarzy, logowaniu - no dosłownie w różnych sytuacjach. Więc jak napisać tą klasę tak aby np. tworzenie tokena a następnie jego walidacja (przy przepisywaniu) była również sprawdzana i rezultat był zależny od tego jak ma się dalej wykonać skrypt (poprawnie przepisany token lub nie).

2. Jeśli ktoś zamierza operować na systemie szablonów Smarty to jak pogodzić wyświetlanie wyników z tym systemem? Bo widziałem, że niektórzy pisząc klasy zawierają od razu (w niej) kod HTML który jakoś tam kształtuje wygląd tej strony (nie widziałem jak to jest na TPLach).

Nie znam ani obiektowego PHP ani Smart'ów stąd te pytania - być może wydają się dziwne, idiotyczne ale chciałbym aby ktoś wyjaśnił mi parę rzeczy.
Go to the top of the page
+Quote Post
l0ud
post 19.10.2008, 15:38:20
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Pytania są trochę za obszerne, aby na nie konkretnie odpowiedzieć winksmiley.jpg
Daj sobie spokój ze smarty. Zainteresuj się wzorcem MVC, zobacz np. w jaki bardzo prosty sposób szablony realizuje framework Kohana. Po tym, powinieneś wiedzieć też jak zrobić ten generator tokena.
Cytat
Bo widziałem, że niektórzy pisząc klasy zawierają od razu (w niej) kod HTML który jakoś tam kształtuje wygląd tej strony (nie widziałem jak to jest na TPLach).

No to akurat zły nawyk i nie ma nic wspólnego z poprawnym programowaniem obiektowym.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
bl4ck_b0x
post 19.10.2008, 15:55:05
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 21.11.2006

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


l0ud token jest tylko przykładem - ogólnie zależy mi na nauczeniu się poprawnego programowania obiektowego a co za tym idzie chcę aby jedną klasę dało się wykorzystać w kilku miejscach tylko tak jak pisałem już na GG z rafio... nie wiem "w co ręce włożyć" aby zacząć pisać... jak pisać itd. winksmiley.jpg
Go to the top of the page
+Quote Post
Crozin
post 19.10.2008, 20:12:34
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@l0ud: czy MVC na początek to napewno dobry pomysł? Zresztą nie wszystko trzeba opierać o ten wzorzec winksmiley.jpg


Co do tego tokena - zrealizować to można na multum sposobów, wszystko zależy od tego czego oczekujesz.
Możesz to zrobić np. tak (kod od strony "klienta")
  1. <?php
  2.  
  3. $token = new myToken(200, 400); //szer x wys obrazu
  4.  
  5. //powiedzmy, ze chcemy użyć takich dwóch czcionek
  6. $token->useFont('Arial.ttf');
  7. $token->useFont('MySuperFont.ttf');
  8.  
  9. //kod tokena ma mieć od 4 do 8 znaków alfanumerycznych
  10. $token->generateCode(4, 8, 'a-z');
  11.  
  12. //ustawiamy jakies tlo
  13. $token->setBackground('./images/myBackground.png');
  14.  
  15. //albo niech obiekt sam utworzy jakies tlo
  16. $token->generateBackground(...jakies, parametry...);
  17. ?>
A na następnej stronie robisz sobie tylko coś w stylu:
  1. <?php
  2.  
  3. $token = new myToken();
  4.  
  5. //obiekt sprawdza czy wartosc podana w param. metody isValid jest rowna z ta wygenerowana (i przechowana np. w sesji) na poprzedniej stronie
  6. if($token->isValid($_POST['token'])){
  7.  //jest
  8. }else{
  9.  //nie jest
  10. }
  11. ?>


Co do Smarty i generowania HTMLa:
Smarty są dosyć stare, praktycznie nierozwijane - nie warto ich używać. Możesz skorzystać z czegoś w stylu OPT, albo zrobić to przy użyciu czystego PHP

A generowania kodu HTML wew. klasy to w zdecydowanej większości przypadków objaw złego podejścia do OOP

?>[/php]
Go to the top of the page
+Quote Post
bl4ck_b0x
post 19.10.2008, 22:08:09
Post #5





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 21.11.2006

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


Crozin właśnie chciałem też spytać jak "wplasować" obiektowe PHP korzystając z proceduralnego... smile.gif Co do tokena - to po prostu przykład który chciałem przytoczyć tak żebyście mogli mi powiedzieć jak właśnie "dopasować" do różnych sytuacji (w różnych miejscach). Równie dobrze, może być to np. upload zdjęć (właśnie się nad tym zastanawiam) który konwertowałby każde zdjęcie (powiedzmy miniaturyzował) smile.gif proste przykłady ale na początek myślę, że byłoby dobrze gdybym załapał o co chodzi...

jeszcze jedno pytanie... jaki system szablonów polecasz? bo właśnie nie wiem co robić... czy uczyć się na razie OOP czy również łączenia OOP z jakimś systemem szablonów.
Go to the top of the page
+Quote Post
Crozin
post 20.10.2008, 06:26:08
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Wysyłanie plików i tworzenie miniatur to robota dla dwóch odrębnych obiektów.

Sam korzystam i chwalę sobie system szablonów jaki oferuje PHP:
  1. <html>
  2.  ...
  3.  <title><?php echo $this->title; ?></title>
  4.  ...
  5.  <a href="<?php $this->url(array('..', '...', '..', '...') ?>">Hello!</a>
winksmiley.jpg
Go to the top of the page
+Quote Post
Marq
post 20.10.2008, 16:43:29
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 5
Dołączył: 14.10.2008
Skąd: Tarnów

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


A ja mam trochę inne pytanie, ale nie będę zakładał nowego tematu, mianowicie:

Rozwiązywanie problemu pobierania danych z bazy, powiedzmy pobieramy tablicę dwuwymiarową, w każdym z wierszy jest informacja o użytkowniku(id, imie, nazwisko, nick etc etc). Aby wyświetlić takiego użytkownika, należy go wpisać w obiekt klasy użytkownik, a następnie użyć odpowiedniej metody, aby wyświetlić tegoż użytkownika przekazując ten obiekt? I tak dla każdego wiersza=użytkownika? Czy nie prościej(szybciej) po prostu przekazać wyniki zapytania do bazy bezpośrednio do funkcji która wyświetla dane użytkownika operując na tejże przekazanej tablicy? Przecież tworzenie każdego obiektu wymaga jakiegoś tam czasu procesora i pamięci, prawda?
Go to the top of the page
+Quote Post
Cysiaczek
post 20.10.2008, 23:56:40
Post #8





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




Coś za coś smile.gif
Nie przesadzałbym jednak. Codziennie piszesz aplikacje na 100 000 odsłon dziennie, żeby miało to znaczenie?

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

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:00