Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: początki - próba zrozumienia
Forum PHP.pl > Forum > PHP > Object-oriented programming
bl4ck_b0x
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.
l0ud
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.
bl4ck_b0x
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
Crozin
@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]
bl4ck_b0x
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.
Crozin
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
Marq
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?
Cysiaczek
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 jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.