Lite mer om klasser

Jag kommer att ha genomgång av mina exempel nedan och då kommer jag att förklara följande:

  • Abstrakt basklass
  • Arv
  • Singleton klass
  • Överlagring av metoder

När ni har fått kläm på hur detta fungerar så kommer ni förhoppningsvis se vissa fördelar med att använda er av denna kunskap. Till att börja med så kommer jag att tvinga er till vissa saker, se nedan.

Du skall göra följande:

  1. Gör en kopia av ditt arbete på mvc (Model View Controll), kalla den mvc2 (tips skapa även ett nytt projekt i eclipse)
  2. I mvc2 skall du byta ut dina klasser service_db och service_session mot klasserna nedan.
  3. I mvc2 skall alla dina model klasser ärvas från model_table nedan.
  4. Du skall anpassa och optimera din kod till detta, din kod skall i så stor grad som möjligt använda sig funktionerna som finns i dessa klasser.

När du är klar och känner dig nöjd med det du har gjort så säger du till mig så skall jag kolla om du har utnyttjat fördelarna med objektorienterad programmering på ett godkänt sätt. Det skadar inte att du kollar över din index.php och jämför den med min index.php och min setup.php.



Warning: highlight_file(../../code/mvc2/classes/service/db.php): failed to open stream: No such file or directory in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 3

Warning: highlight_file(): Failed opening '../../code/mvc2/classes/service/db.php' for highlighting in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 3


Warning: highlight_file(../../code/mvc2/classes/model/table.php): failed to open stream: No such file or directory in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 5

Warning: highlight_file(): Failed opening '../../code/mvc2/classes/model/table.php' for highlighting in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 5


Warning: highlight_file(../../code/mvc2/classes/model/user.php): failed to open stream: No such file or directory in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 7

Warning: highlight_file(): Failed opening '../../code/mvc2/classes/model/user.php' for highlighting in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 7


Warning: highlight_file(../../code/mvc2/classes/service/session.php): failed to open stream: No such file or directory in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 9

Warning: highlight_file(): Failed opening '../../code/mvc2/classes/service/session.php' for highlighting in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 9

index.php

Warning: highlight_file(../../code/mvc2/htdocs/index.php): failed to open stream: No such file or directory in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 11

Warning: highlight_file(): Failed opening '../../code/mvc2/htdocs/index.php' for highlighting in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 11

setup.php

Warning: highlight_file(../../code/mvc2/include/setup.php): failed to open stream: No such file or directory in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 13

Warning: highlight_file(): Failed opening '../../code/mvc2/include/setup.php' for highlighting in /home/pers/daniel/public_html/webapp/dokuwiki/inc/parser/xhtml.php(549) : eval()'d code on line 13

// lite kod från forumController 
if($_POST['a']=='InsertItem') {
  if (!$_POST['Item']) {
    $session->AddError('You can\'t post empty item...');
    header ('location: ' . INDEX . '?c=' . $_GET['c'] . '&a=' . $_GET['a']);
    exit();
  }
  $data = array (
    'Item' => $_POST['Item'],
    'UserID' => $session->Get('UserID'),
    'ThreadID' => $_POST['ThreadID'] ,
    'CreateDate' => date('Y-m-j H:i:s'),
    'ChangeDate' => date('Y-m-j H:i:s')
  );
  $forum->InsertItem($data);
  $session->AddSuccess('Item saved!');
  header ('location: ' . INDEX . '?c=' . $_GET['c'] . '&a=' . $_GET['a'] . '&id=' . $_POST['ThreadID']);
  exit();
}
 
// lite kod från forum.php (model_forum)
public function InsertItem ($data) {
  $this->table='lab5_Items';
  return $this->Insert($data);
}
 
public function DeleteThread ($threadid) {
  $query = "DELETE lab5_Threads, lab5_Items FROM `lab5_Threads` LEFT JOIN `lab5_Items` USING(ThreadID) 
            WHERE ThreadID = '" . $_POST['ThreadID'] . "' 
            AND (lab5_Threads.UserID = '" . service_session::getInstance()->Get('UserID') . "' 
            OR " . service_session::getInstance()->Get('Admin') . ")";
  return $this->db->Delete($query);
}