Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Podstawy obiektowości, na przykładzie bloga
kamil_lk
post
Post #1





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

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


Witam.
W ramach nauki obiektówki postanowiłem wykonać jakiś mały projekt, aby załapać podstawy. Po krótkim namyśle stwierdziłem, że napiszę sobie bloga.
I teraz mam do was, bardziej doświadczonych, pytanie. Czy idę w dobrą stronę podczas skrobania tego projektu? Co robię źle, a co dobrze (o ile coś (IMG:style_emoticons/default/tongue.gif) ). Może polecacie jakieś przystępne tutoriale (zadania), które odnoszą się do rzeczy praktycznych, zamiast do kwadratów, czy trójkątów?

Poniżej przedstawiam to co napisałem do tej pory. Co prawda nie ma tego wiele. Głównie chodzi mi tutaj o klasę content.php oraz wpisy.php.

index.php
  1. <?php
  2.  
  3. include_once('class/class.db.php');
  4. include_once('header.php');
  5. include_once('content.php');
  6. include_once('footer.php');
  7.  
  8. $db = new db("mysql:host=localhost;dbname=blog;", "root", "");
  9. $db->query('SET NAMES utf8');
  10.  
  11. $head = new Header('Kamil');
  12. echo $head->getHeader();
  13.  
  14. $content = new Content($db);
  15. $content->getSection();
  16.  
  17. $footer = new Footer;
  18. echo $footer->getFooter();
  19.  
  20. ?>


header.php
  1. <?php
  2.  
  3. class Header{
  4.  
  5. public function __construct($tytul){
  6. $this->tytul = $tytul;
  7. }
  8.  
  9. public function getHeader(){
  10. return '
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <link rel="stylesheet" type="text/css" href="css/style.css" />
  16. <link rel="stylesheet" type="text/css" href="css/popup.css" />
  17. <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  18. <script src="js/jquery-impromptu.js"></script>
  19. <title>'.$this->tytul.'</title>
  20.  
  21. <script type="text/javascript">
  22. function popup(zmienna){
  23. $.prompt(zmienna,{ overlayspeed: 2, buttons: {}});
  24. }
  25. </script>
  26.  
  27. </head>
  28. <body>
  29. ';
  30. }
  31.  
  32. }
  33.  
  34. ?>


footer.php
  1. <?php
  2.  
  3. class Footer{
  4.  
  5. public function getFooter(){
  6.  
  7. return '
  8. <div id="footer">
  9. <span class="footer">Created by Kamil</span>
  10. </div>
  11. </body>
  12. </html>';
  13.  
  14. }
  15.  
  16. }
  17.  
  18. ?>


content.php
  1. <?php
  2.  
  3. include_once('class/wpisy.php');
  4.  
  5. class Content{
  6.  
  7. public $cont;
  8. private $db;
  9.  
  10. public function __construct($db){
  11. $this->db = $db;
  12. }
  13.  
  14. public function getSection(){
  15. echo '<div id="content">';
  16. if( isset($_GET['section']) ) {
  17. switch($_GET['section']) {
  18.  
  19. case 'show' : $this->cont = new Wpisy($this->db); $this->cont->show(); break;
  20.  
  21. default: $this->cont = new Wpisy($this->db); $this->cont->error404();
  22. }
  23.  
  24. if( isset($_GET['action']) )
  25. switch($_GET['action']) {
  26.  
  27. case 'add' : $this->cont = new Wpisy($this->db); $this->cont->addComent($_POST); break;
  28.  
  29. }
  30.  
  31. } else {
  32.  
  33. $this->cont = new Wpisy($this->db); $this->cont->show();
  34.  
  35. }
  36. echo '</div>';
  37.  
  38. }
  39.  
  40. }
  41. ?>


wpisy.php
  1. <?php
  2.  
  3. class Wpisy{
  4.  
  5. private $db;
  6.  
  7. public function __construct($db){
  8. $this->db = $db;
  9. }
  10.  
  11. public function show(){
  12. if(!isset($_GET['param'])){
  13. $result = $this->db->select('wpisy', '1=1 ORDER BY data_dodania desc', '', 'id, temat, tresc, DATE_FORMAT(data_dodania, \'%d.%m.%Y\') AS data_dodania');
  14. foreach($result as $record){
  15. echo '
  16. <div class="wpis">
  17.  
  18. <h6>'.$record['temat'].'</h6>
  19. <span class="data">'.$record['data_dodania'].' &raquo; Kamil</span>
  20. <div class="tresc">'.$record['tresc'].'</div>
  21. <div class="wiecej">
  22. <a href="index.php?section=show&param='.$record['id'].'" class="wiecej clear">Czytaj całość</a>
  23. </div>
  24.  
  25. </div>
  26. ';
  27. }
  28. } else {
  29. $result = $this->db->select('wpisy', 'id='.$_GET['param'], '', 'id, temat, tresc, DATE_FORMAT(data_dodania, \'%d.%m.%Y\') AS data_dodania');
  30. foreach($result as $record){
  31. echo '
  32. <div class="wpis">
  33.  
  34. <h6>'.$record['temat'].'</h6>
  35. <span class="data">'.$record['data_dodania'].' &raquo; Kamil</span>
  36. <div class="tresc">'.$record['tresc'].'</div>
  37. <div class="wiecej">
  38. <a href="index.php?section=show" class="wiecej clear">Wróć</a>
  39. </div>
  40.  
  41. </div>
  42. ';
  43. }
  44.  
  45. $result = $this->db->select('komentarze k, wpisy w', 'id_wpisu='.$_GET['param'].' and w.id=k.id_wpisu', '', 'k.id kid, nick, k.tresc ktresc, k.temat ktemat, DATE_FORMAT(k.data_dodania, \'%d.%m.%Y %h:%i:%s\') AS kdata_dodania');
  46. foreach($result as $record2){
  47. echo $record2['kid'].' - '.$record2['nick'].' - '.$record2['ktemat'].' - '.$record2['ktresc'].' - '.$record2['kdata_dodania'].'<br /><br />';
  48. }
  49.  
  50. echo '
  51. <form action="index.php?section=show&action=add&param='.$_GET['param'].'" method="post">
  52. <fieldset class="komentarze">
  53. <label for="nick">Nick<br /><input type="text" name="nick" id="nick" value="" /></label>
  54. <label for="temat">Temat <span class="wymagane">*</span><br /><input type="text" name="temat" id="temat" value="Re: '.$record['temat'].'" /></label>
  55. <label for="tresc">Treść <span class="wymagane">*</span><br /><textarea name="tresc" id="tresc"></textarea></label>
  56. <label for="dodaj"><input type="submit" name="dodaj" id="dodaj" value="Dodaj komentarz" /></label>
  57. </fieldset>
  58. </form>
  59. ';
  60. }
  61. }
  62.  
  63. public function addComent($array){
  64.  
  65. if(isset($array['dodaj'])){
  66. if( isset($array['temat']) && isset($array['tresc']) && $array['temat'] != '' & $array['tresc'] != ''){
  67. $array['id_wpisu'] = $_GET['param'];
  68. $array['data_dodania'] = date('Y-m-d h:i:s');
  69. if(empty($array['nick']) || $array['nick'] == "") $array['nick'] = 'anonim';
  70. $result = $this->db->insert('komentarze', $array);
  71.  
  72. if($result){
  73. echo '<script type="text/javascript">popup("Dodano!")</script>';
  74. } else {
  75. echo '<script type="text/javascript">popup("Nie dodano!")</script>';
  76. }
  77. } else echo '<script type="text/javascript">popup("Brak danych!")</script>';
  78.  
  79. }
  80. }
  81.  
  82. public function error404(){
  83. header('Location: 404.html');
  84. }
  85. }
  86.  
  87. ?>


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krzysiekk
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


hi
jesli chodzi o pdo i bindowanie polecam: http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO (nie złośliwie ) na przykladach najlepiej zobaczyć o co chodzi.

jesli chodzi o programowanie OO to też mialem klopoty by to wszystko zalapac kupilem wiec ksiażkę , ktorą polecam zawsze coś tzrba miec wiedzy niemniej jest jatwiej z dobrymi przykladami i wzorcami ZF http://zend-framework.gajdaw.pl/html/menu/moje-ksiazki.html

pozdr.K
Go to the top of the page
+Quote Post

Posty w temacie


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: 11.10.2025 - 20:57