Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Początki z obiektowym PHP
marcinpruciak
post
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Dopiero zacząłem przygodę z obiektowym PHP. Uczyłem się z książki 'Zaawansowane tworzenie stron www PHP5 Szybki start'.

Udało mi się wykombinować taki kod:

http://www.wklej.com.pl/show.php?what=20080812201428

Ma to służyć jako miniCMS, to są klasy do zarządzania podstronami.

Chciałbym się zapytać czy to jest wogóle obiektowo, bo mi się wydaje że to są zwykłe funkcje pogrupowane w klasy. 

Nie wiem czy rozumiem ideę obiektowego programowania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcinpruciak
post
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Kod po poprawkach, zrobiłem jedną klasę z danymi, inne po niej dziedziczą. Wszystko zrobiłem w static, nie wiem czy to dobrze

  1. <?php
  2.  
  3. class HTML_Element
  4. {
  5.     protected static $element_input;
  6.  protected static $element_textarea;
  7.  protected static $element_submit='Zapisz';
  8.          
  9.  public function show_start()
  10.  {
  11.      echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">'; 
  12.  }
  13.  
  14.  public function show_end()
  15.  {
  16.      echo '</form>';
  17.  }
  18. } 
  19.  
  20. class Input extends HTML_Element
  21. { 
  22.  public function add_element_input($type, $name, $size, $maxlength, $title, $value='')
  23.  {
  24.       parent$element_input[]=array('type' => $type, 'name' =>$name, 'size' => $size, 'maxlength' => $maxlength, 'title' => $title, 'value' => $value);
  25.  }
  26.  
  27.  public function show()
  28.  { 
  29.      foreach (parent$element_input as $text)
  30.      { 
  31.          echo $text['title'].'<input type="'.$text['type'].'" name="'.$text['name'].'" size="'.$text['size'].'" maxlength="'.$text['maxlength'].'"value="'.$text['value']; if($_POST['submit'] == parent$element_submit) { echo $_POST[$text['name']];} echo'"><br />'; 
  32.      }
  33.  }
  34. }
  35.  
  36. class Textarea extends HTML_Element
  37. {
  38.  public function add_element_textarea($name, $rows, $cols, $title, $value='')
  39.  {
  40.      parent$element_textarea[] = array('name' =>$name, 'rows' => $rows, 'cols' => $cols, 'title' => $title, 'value' => $value);
  41.  }
  42.  
  43.  public function show()
  44.  { 
  45.      foreach (self$element_textarea as $text)
  46.      {     
  47.          echo $text['title'].'<textarea name="'.$text['name'].'" rows="'.$text['rows'].'" cols="'.$text['cols'].'">'.$text['value'];  if($_POST['submit'] == parent$element_submit) { echo $_POST[$text['name']];} echo '</textarea><br />'; 
  48.      }
  49.  }
  50. }
  51.  
  52. class Submit extends HTML_Element
  53. {
  54.  public function add_element_submit($value)
  55.  {
  56.      parent$element_submit = $value;
  57.  }
  58.  
  59.  public function show()
  60.  {
  61.      echo '<input type="submit" value="'.parent$element_submit.'" name="submit" />'; 
  62.  }
  63. }
  64.  
  65. class Validate extends HTML_Element
  66. {
  67.  protected static $errors=array();
  68.  protected static $data=array();
  69.  
  70.  public function validate()
  71.  { 
  72.      if($_POST['submit'] == parent$element_submit) {
  73.          foreach (parent$element_input as $text) {
  74.              if(empty($_POST[$text['name']])) {
  75.                  self$errors[]=$text['title'];
  76.              } else {
  77.                  self$data[$text['name']] = $_POST[$text['name']];
  78.              } 
  79.          }     
  80.  
  81.          foreach (parent$element_textarea as $text) { 
  82.              if(empty($_POST[$text['name']])) {
  83.                  self$errors[]=$text['title'];
  84.              } else {
  85.                  self$data[$text['name']] = $_POST[$text['name']];
  86.              }
  87.          } 
  88.      }
  89.  }
  90.   
  91.  public function show_error()
  92.  { 
  93.      foreach(self$errors as $error) {
  94.          echo 'Uzupełnij pol: '.$error.'.<br />';
  95.          print_r($validate->data);   
  96.      }
  97.  }
  98.  
  99.  public function return_data()
  100.  {
  101.      return self$data;
  102.  }
  103. }
  104.  
  105. $html = new HTML_Element;
  106. $html->show_start();
  107. $input = new Input;
  108. $input->add_element_input('text', 'title', '30', '50', 'Podtytu: ', '');
  109. $input->add_element_input('text', 'subtitle', '30', '50', 'Podtytu: ', '');
  110. $input->add_element_input('text', 'titje', '30', '50', 'tytu: ', '');
  111. $input->add_element_input('text', 'subtjle', '30', '50', 'Podtytu: ', '');
  112. $input->show();
  113. $text = new Textarea;
  114. $text->add_element_textarea('content', '10', '50', 'Treś: ', '');
  115. $text->show();
  116. $submit = new submit;
  117. $submit->add_element_submit('Zapisz');
  118. $submit->show();
  119. $html->show_end();
  120. $validate =new Validate;
  121. $validate->validate();
  122. $validate->show_error();
  123. $data = $validate->return_data();
  124. echo '<pre>'; print_r($data); echo '</pre>';
  125.  
  126. ?>
Go to the top of the page
+Quote Post

Posty w temacie
- marcinpruciak   Początki z obiektowym PHP   12.08.2008, 19:19:44
- - wlamywacz   Niestety jest to tylko kod strukturalny zamknięty ...   12.08.2008, 20:00:31
- - dyniaq   No trochę lipa. Utwórz np klasę podstrona i w niej...   12.08.2008, 20:01:30
- - marcinpruciak   Zmieniłem to w jedną klasę podstrony.  Nie widzę ...   12.08.2008, 21:00:43
- - ayeo   Tak jak ktoś wyżej napisał, myślisz funkcjonalnie....   12.08.2008, 21:40:53
- - Cysiaczek   Nie, niestety nie chodzi o to. Przynajmniej nie wp...   12.08.2008, 22:05:48
- - qBK   W sumie nie wiem czy rozpoczęcie nauki programowan...   13.08.2008, 07:35:21
- - Crozin   @qBK w PHP5 nie ma var, jest private, protected, p...   13.08.2008, 13:40:46
|- - qBK   Cytat(Crozin @ 13.08.2008, 14:40:46 )...   13.08.2008, 19:49:27
- - marcinpruciak   Pomęczyłem się pół dnia i trochę już łapię. Zrobił...   13.08.2008, 15:37:19
- - Shili   Jak już się uczysz, to nabieraj od podst...   13.08.2008, 15:48:28
- - Crozin   Nie private var $abc, a private $abc   13.08.2008, 23:13:02
- - marcinpruciak   Trochę pomyślałem, pokombinowa...   22.08.2008, 11:32:37
- - Kicok   CytatNieźle jak na pierwszy kontakt z obiektowości...   22.08.2008, 13:32:04
- - f1xer   Abstrahując od twojego problemu, jeżeli ...   22.08.2008, 14:13:25
- - marcinpruciak   Tylko jak poradzić sobie z pętlą? Wszystkie przykł...   22.08.2008, 17:01:16
- - f1xer   jeżeli masz jusz dane w tablicy to tą ta...   22.08.2008, 17:26:53
- - marcinpruciak   Zedytowałem to tak: [PHP] pobierz, plaintext...   22.08.2008, 23:47:21
- - kbsucha   Zobacz w manualu opis funkcji mysql_fetch_assoc(),...   23.08.2008, 00:19:14
- - marcinpruciak   Udało się. Dzięki za sugestię....   28.08.2008, 22:44:36
- - Cysiaczek   Dla każdej strony robisz osobny obiekt? Moim ...   29.08.2008, 08:35:55
- - marcinpruciak   <P>Tylko że ja już mam książkę. "Zaawan...   29.08.2008, 10:47:40
- - wlamywacz   Musisz potraktować taką klasę jako obiekt a nie ty...   29.08.2008, 11:21:51
- - -=Peter=-   jak klase można potraktować jako obiekt? Klasa i o...   30.08.2008, 22:37:44
- - wlamywacz   Tak jest to łatwiej zrozumieć początkującym   31.08.2008, 10:56:43
- - marcinpruciak   A co powiecie na to? : [PHP] pobierz, plaintext ...   31.08.2008, 13:57:27
- - wrzasq   jesli chodzi o samo pojecie obiektowosci to juz le...   31.08.2008, 14:39:15
- - marcinpruciak   Czemu sądzisz że to dopiero zalą...   31.08.2008, 16:50:06
- - Crozin   Każdy formularz na stronie może być obiektem, ale ...   31.08.2008, 17:52:11
- - marcinpruciak   No tak, wiem o tym, ale ja robiłem klas...   31.08.2008, 18:26:57
- - wrzasq   powiem tak - do PHP nie warto inwestowac w ksiazki...   31.08.2008, 20:06:28
- - Fixus   co do tytułu "PHP5: Zaawansowane progra...   31.08.2008, 20:12:54
- - Crozin   Input dziedziczący po Form? Jakoś mi się to nie wi...   31.08.2008, 21:41:30
- - Fixus   @Crozin - może faktycznie mnie poniosło z tym dzie...   31.08.2008, 21:48:46
- - marcinpruciak   Kod po poprawkach, zrobiłem jedną klasę z danymi, ...   12.09.2008, 22:33:34
- - Crozin   1) HTML_Element powinno być klasą abstrakcyjną i j...   13.09.2008, 07:49:31
- - marcinpruciak   [PHP] pobierz, plaintext <?php abstract cl...   14.09.2008, 16:56:55
- - marcio   W jakim sensie sam sie ucze ale ja bym to dal do i...   14.09.2008, 19:30:22
- - Shili   Ja mam parę uwag: W konstruktorach masz stan...   14.09.2008, 20:01:22


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 Aktualny czas: 6.10.2025 - 14:47