Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Budowanie CMSa
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Mimo iż wiem wiele na temat php, nie jestem jakimś ekspertem, więc proszę o wyrozumiałość. Chciałbym napisać swojego CMSa (własnego, bezpiecznego, na wzór innych).
Aby to zrobić, trzeba by napisać.... jakiś framework. Nie wiem wiele o tym, ale z tego co zrozumiałem z Wikipedii ułatwia tworzenie modelu (szablonu) jakiegoś projektu - na przykład strony WWW.
Pomyślałem, że bezpieczniej będzie, jak wszystkie ważne zmienne umieszczę w pliku php z tablicą $_AXF (ma to trochę wspólnego z nazwą tego mojego "frameworka"). Ta tablica jest w oddzielnym pliku.
Tak więc zacząłem pisać klasę pages, która będzie odpowiadać za każdą stronę. Treść stron to po prostu pole w tabeli "strony".

  1. <?php
  2. class page
  3. {
  4. protected $id, $name, // i jakieś jeszcze zmienne
  5.  
  6. static function newpage($name, $dir, $source) {
  7. $_AXF = $GLOBALS['_AXF'];
  8. $now = date("Y-m-d");
  9.  
  10. try{
  11.  if (!@mysql_connect($_AXF['db_c_host'], $_AXF['db_c_login'], $_AXF['db_c_passwd']))
  12.        throw new Exception('Połączenie z bazą danych nie powidło się!');
  13.  if (!@mysql_select_db($_AXF['db_c_base']))
  14.        throw new Exception('Wybranie nazy danych nieudane!');
  15.        
  16.  if ($_AXF['db_set_results'] != "") {
  17.    if (!mysql_query('SET NAMES '.$_AXF['db_set_results']))
  18.        throw new Exception('Nie mogę wykonać zapytania!');
  19.    if (!mysql_query('SET CHARACTER SET '.$_AXF['db_set_results']))
  20.        throw new Exception('Nie mogę wykonać zapytania!');
  21.  }
  22.  if (!mysql_query("INSERT INTO ".$_AXF['db_pages_table']." VALUES(NULL, '$name', '$adress', '$now', 'Przykładowa treść');"))
  23.      throw new Exception('Nie mogę wykonać zapytania!');
  24.  
  25. }
  26.  
  27. catch (Exception $error) {
  28.  echo "Wystąpił błąd podczas działania skryptu o komunikacie: ";
  29.  echo $error->getMessage();
  30.  echo "<br />\n";
  31.  echo "Na linii: ".$error->getLine()."<br />\n";
  32. }
  33. }
  34.  
  35. function __construct() {
  36. $this->id = 0;
  37. $this->name = "example_name.ex";
  38. $this->dir = "directory/";
  39. $this->kategory = "example_kategory";
  40. $this->level = 1;
  41. }
  42. public function assign($id, $name, $dir, $source, $level) {
  43. $this->id = $id;
  44. $this->name = $name;
  45. $this->kategory = $kategory;
  46. $this->level = $level;
  47. }
  48. }
  49. ?>


Mam parę pytań co do swojej klasy.
1. Czy umieszczenie w jednej klasie metod statycznych i tych, co trzeba do ich użycia zmiennej jest w porządku?
2. Czy lepiej, aby ta jedna klasa służyła do wszystkiego wiązanego ze stronami (dodawanie, edycja, wyświetlanie...), czy lepiej, abym stworzył kilka mniejszych ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
A jak chcesz mieć w pełni Twoją (tym razem bez cudzysłowi) to napisz sobie jeszcze własny język programowania, bo przecież w PHP to dziesiątki gotowych rozwiązań masz. Później własny serwer..., następnie własny OS, maszyne, itd

Cytat
Własny komputer w piwnicy też zrobisz? BIOSa do niego nie zapomnij napisać. Czasami lepiej korzystać z gotowych, sprawdzonych rozwiązań.
Framework zastępuje tylko część pracy, związaną głównie z wewnętrznym działaniem modelu MVC, ale nie wykona za ciebie całego systemu. Więc bez obaw korzystaj z czego się da, nikt ci nie zarzuci, że to nie ty to napisałeś


Myślę, że Koledzy trochę za bardzo "przesadzili" co do tworzenia własnych rozwiązań. Zgadzam się z twierdzeniem, że pisanie narzędzi w stylu Symfony czy ZF mija się z celem, ale pojęcie "framework" nie ogranicza się tylko do tego typu systemów. Ja na przykład na potrzeby tworzonych przez siebie aplikacji napisałem sobie (i ciągle rozwijam o nowe moduły) taki a'la framework, oparty na architekturze MVC.
Poza podstawowym zadaniem tego frameworka (czyli podziału aplikacji na logikę, przetwarzanie danych i ich prezentację), stworzyłem w nim szereg klas, które ułatwiają mi tworzenie pewnych standardowych, powtarzających się elementów aplikacji (tabelki z listami np. rekordów w bazie danych, formularze, linki, upload plików, sortowanie wyników w tabelach, prosta wyszukiwarka, zaawansowana wyszukiwarka itp.). Metody w tych klasach mają za zadanie maksymalnie ułatwić mi budowę nowych modułów aplikacji bez konieczności np. tworzenia szablonu Smarty i przetwarzania w nim foreach-em wyników z bazy, aby wyświetlić kompletną tabelę. Po prostu - tworzę sobie obiekt klasy "Table", do niego jedną metodą przesyłam nagłówki kolumn, do drugiej metody przesyłam tablicę asocjacyjną zawierającą wynik zapytania do bazy, trzecia metoda zwraca mi gotową tablicę. Plus klasy do obsługi połączeń z bazą, obsługi $_SESSION czy też tablic $_GET i $_POST.
Jest to jedynie forma uproszczenia sobie pracy, a nie chęć konkurowania z ZF czy Symfony. Po prostu do niektórych prostszych aplikacji stosowanie ZF to próba naprawy Malucha młotem pneumatycznym.
Go to the top of the page
+Quote Post

Posty w temacie
- Asmox   Budowanie CMSa   16.03.2009, 18:12:19
- - erix   Cytat[PHP] pobierz, plaintext <?php$_AXF = $GLO...   16.03.2009, 18:18:28
- - Asmox   Znaczy bo nie wiem: co jest źle? Bo to jest tak: W...   16.03.2009, 18:33:39
- - erix   Zmiennych globlanych się unika jak ognia, bo częst...   16.03.2009, 18:55:22
- - Asmox   Aha, czyli po prostu taką klasę ze zmien...   16.03.2009, 19:27:26
- - Mephistofeles   Zainteresuj się wzorcem rejestru, korzysta z niego...   16.03.2009, 19:54:23
- - Asmox   OK, tylko za bardzo nie mogę się doczytać o tych w...   16.03.2009, 20:26:34
- - erix   4: absolutnie - po to stworzono wyjątki, aby z nic...   16.03.2009, 20:50:34
|- - Asmox   Cytat(erix @ 16.03.2009, 20:50:34 ) 1...   17.03.2009, 06:46:55
- - Mephistofeles   Ja sugeruję die()? W żadnym wypadku. Prz...   16.03.2009, 22:28:18
- - Crozin   Chcesz się brać za pisanie CMSa nie mając podstawo...   17.03.2009, 13:28:24
- - Asmox   Nie, nie źle mnie zrozumiałeś Crozin. Mam książkę ...   17.03.2009, 16:23:03
|- - Riklaunim   Cytat(Asmox @ 17.03.2009, 18:23:03 ) ...   17.03.2009, 16:34:03
|- - Asmox   Cytat(Riklaunim @ 17.03.2009, 16:34:0...   17.03.2009, 20:25:25
- - Crozin   CytatCo do wykorzystania Frameworków... Nie wiem, ...   17.03.2009, 17:09:32
- - Mephistofeles   Jeśli chcesz szybko skończyć swój projekt to polec...   17.03.2009, 21:05:20
- - Riklaunim   Za dużo hasełek się naczytałeś... OOP, obiektowość...   17.03.2009, 21:07:09
- - kbsucha   Ale z drugiej strony doszliscie do takich wnioskow...   17.03.2009, 21:27:37
- - Asmox   Chciałbym bardzo zrobić coś samemu,...   18.03.2009, 06:57:31
|- - Riklaunim   Cytat(Asmox @ 18.03.2009, 08:57:31 ) ...   18.03.2009, 09:19:22
- - Crozin   Tylko widzisz... Ty chyba nie do końca rozumiesz c...   18.03.2009, 09:33:01
- - Mephistofeles   Własny komputer w piwnicy też zrobisz? BIOSa do ni...   18.03.2009, 10:12:02
- - blooregard   CytatA jak chcesz mieć w pełni Twoją (tym razem be...   18.03.2009, 10:27:35
- - melkorm   Eh. Troche się chyba zagolopowaliście z tymi osąda...   18.03.2009, 10:33:29


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: 13.10.2025 - 15:25