Gå til innhold

Hva er en klasse?


Anbefalte innlegg

Videoannonse
Annonse
Skrevet

Her er en klasse for en gjestebok jeg har laget, ganske simpelt - men det funker:)

 

<?php
class gjestebok
{

 function display_prev_next() 
 {

 include 'dbconnect.php';

   $result = mysql_query(" SELECT id FROM gjestebok ",$dbc);
   if (!$result) {
     echo("<p>Feil i spørring: " .
     mysql_error() . "</p>");
     exit();
   }

   $innlegg = mysql_num_rows($result);
   $innlegg_per_side = 20;
   if (!isset($_GET['fra'])) {
     $fra = 0;
   }
   else {
     $fra = $_GET['fra'];
   }
   $til = ($fra + $innlegg_per_side);
 
   $fram = ($fra + $innlegg_per_side + 1 > $innlegg ? false : true );
   $tilbake = ($fra - $innlegg_per_side < 0 ? false : true);
   $fra_tilbake = ($fra - $innlegg_per_side);
   $fra_fram = ($fra + $innlegg_per_side);
 
   if ($tilbake == true) {
     $tilbake_klikk = "<a href='?p=gjestebok&fra=$fra_tilbake' >Tilbake</a>";
   }
    else {
     $tilbake_klikk = "Tilbake";
   }
 
   if ($fram == true) {
     $fram_klikk = "<a href='?p=gjestebok&fra=$fra_fram' >Frem</a>";
   }
   else {
     $fram_klikk = "Frem";
   }
 
   echo "<p align='center' >" . $tilbake_klikk . " | " . $fram_klikk . "</p>";
 }

 function display_gjestebok_form() 
 {
 
 setlocale(LC_ALL, 'no_NO', 'nor_nor');
?>
   <div align="center">
     <div id="cbox_top">
     <div id="cbox_cnt" align="left">
     <strong>Ny kommentar </strong>
     </div>
     <div id="cbox_cntsub" align="left">Skriv et nytt innleg</div>
     </div>
     <div id="cbox_mid">
     <div id="cbox_main">
  <div align="left">
       <form action="?p=legg_til_kommentar" method="post" nSubmit="return disableForm(this);" style="display:inline; ">
    <input type="hidden" name="dato" value="<?php echo date(' j F Y H:i:s '); ?>">
    <input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR'];  ?>">
    <strong>Navn:</strong><br />
    <input type="text" size="20" name="navn" value="Anonym"><br /> 
    <strong>Kommentar:</strong><br />
    <textarea name="kommentar" class="textarea" cols="40" rows="6"></textarea>
    <br /><br />
    <input type="submit" name="submit" class="submit" value="Post ny kommentar"></form>
  </div>
     </div>
     </div>
</div>
<?
 }

 function display_gjestebok() 
 {
 $gjestebok = new gjestebok();
 $gjestebok->display_prev_next();

   $innlegg_per_side = 20;

   if (!isset($_GET['fra'])) {
     $fra = 0;
   }
   else {
     $fra = $_GET['fra'];
   }
   $til = ($fra + $innlegg_per_side);

 include 'dbconnect.php';
 $bbcode = new bbcode();

   $result = mysql_query(" SELECT * FROM gjestebok ORDER BY ID DESC LIMIT $fra,$til ",$dbc);
     if (!$result) {
       echo("<p>Feil i spørring: " .
    mysql_error() . "</p>");
    exit();
     }
     while ($myrow = mysql_fetch_array($result))
     {
?>
     <div align="center">
       <div id="cbox_top">
       <div id="cbox_cnt" align="left"><strong>Skrevet av: <?php echo strip_tags($myrow["navn"]); ?></strong></div>
       <div id="cbox_cntsub" align="left">Skrevet: <?php echo $myrow["dato"]; ?></div>
       </div>
       <div id="cbox_mid">
       <div id="cbox_main" align="left">
<?php
   //$bbcode->bbcode_kommentar();   
        $kommentar = $myrow["kommentar"];
      $bbReplace = array ('/(\[[Bb]\])(.+)(\[\/[Bb]\])/','/(\[url=)(.+)(\])(.+)(\[\/url\])/');
         $bbReplacements = array ('<b>\\2</b>','<a href="\\2">\\4</a>');
      $kommentar = preg_replace($bbReplace, $bbReplacements, $kommentar);
   echo nl2br($kommentar);
?>
      </div>
      </div>
 </div>
<?php
    }
 }

 function add_coment_gbook() 
 {

 	setlocale(LC_ALL, 'no_NO', 'nor_nor');

   $submit = $_POST['submit'];
   $ip = $_POST['ip'];
   $kommentar = strip_tags($_POST['kommentar']);
   $navn = strip_tags($_POST['navn']);
   $dato = $_POST['dato'];
?>

 <head>
 <meta http-equiv="Refresh" content="2;URL=?p=gjestebok"> 
 </head>

<?php
   // Connect to the database server
   include 'dbconnect.php';

   $sql = "INSERT INTO gjestebok (navn, kommentar, dato, ip) VALUES ('$navn','$kommentar', '$dato', '$ip')";
   $result = mysql_query($sql);
   if(!$result) {
    print "feil i spørring: $sql<br />".mysql_error();
   }
     echo "<p>Kommentaren er lagt til!<br />";
  echo "Redirecting...</p>";
 }

}
?>

 

Som du ser så er en klasse (gjestebok) en samling av diverse funskjoner(display_gjestebok()osv.) og variabler:)

Skrevet

Bare for å si det lett, så er en klasse et objekt, til forskjell fra en funksjon.

 

En funksjon er, som vi alle vet:

 

<?php
// Funksjon
function funksjon_for_ett_eller_annet($param1, $param2 /* OSV. */, $param3) {
if ($param3 = "pluss" || $param3 = "+") {
  print $param1 + $param2;
}

if ($param3 = "minus" || $param3 = "-") {
  print $param1 - $param2;
}

if ($param3 = "gange" || $param3 = "*") {
  print $param1 * $param2;
}

if ($param3 = "dele" || $param3 = "/") {
  print $param1 / $param2;
}
}
?>

 

Det samme kan gjøres med en klasse

 

<?php
class Klasse_for_ett_eller_annet {
var $param1;
var $param2;
var $param3;

function regn_ut() {
if ($this->param3 = "pluss" || $this->param3 = "+") {
  print $this->param1 + $this->param2;
}

if ($this->param3 = "minus" || $this->param3 = "-") {
  print $this->param1 - $this->param2;
}

if ($this->param3 = "gange" || $this->param3 = "*") {
  print $this->param1 * $this->param2;
}

if ($this->param3 = "dele" || $this->param3 = "/") {
  print $this->param1 / $this->param2;
}
}
}
?>

 

Disse to kalles på litt forskjellig måte:

 

funksjon:

<?php
funksjon_for_ett_eller_annet(3, 5, "pluss");
?>

 

Mens klassen:

<?php
$klasse = new Klasse_for_ett_eller_annet;
$klasse->param1 = 3;
$klasse->param2 = 5;
$klasse->param3 = "pluss";

// Regn ut
$klasse->regn_ut();
?>

 

Man kan selvfølgelig, istedetfor å måtte deklarere variablene, gjøre slik:

<?php
class Klasse_for_ett_eller_annet {
var $param1;
var $param2;
var $param3;

// Denne funksjonen kjøres når man lager en ny eksistens av klassen
function Klasse_for_ett_Eller_annet($param1, $param2, $param3) {

// Jaja
$this->param1 = $param1;
$this->param2 = $param2;
$this->param3 = $param3;
}

function regn_ut() {
if ($this->param3 = "pluss" || $this->param3 = "+") {
  print $this->param1 + $this->param2;
}

if ($this->param3 = "minus" || $this->param3 = "-") {
  print $this->param1 - $this->param2;
}

if ($this->param3 = "gange" || $this->param3 = "*") {
  print $this->param1 * $this->param2;
}

if ($this->param3 = "dele" || $this->param3 = "/") {
  print $this->param1 / $this->param2;
}
}
}
?>

 

Kalles slik:

<?php
$klasse = new Klasse_for_ett_eller_annet(3, 5, "pluss");
$klasse->regn_ut();

 

Håper det forklarte problemet!

Skrevet
Kan noen fortelle meg hva en klasse (class) er?

Prøv å hold dere til topic.

5449068[/snapback]

 

Kan prøve:

 

En klasse er en beskrivelse av et objekt. Klassen "Mobil" kan feks ha variablene "merke", "farge" og "størrelse" og den kan ha funksjonene "mottaSamtale" og "ringSamtale", "sendSms".

 

Da vet du at alle objekter av typen mobil har disse variablene og funksjonene, men verdien for hver variabel kan variere fra objekt til objekt. Det er en veldig praktisk måte å organisere informasjon på slik at det blir mest mulig likt virkeligheten.

Skrevet

jo, det er et alternativ. for bare å samle variable, kan du godt bruke et array.

 

objekter kan også ha metoder, f.eks:

 

$m = new Mobil("nokia");

$m->ring(12345678);

 

det kan ikke arrays.

Skrevet
Er en klasse nesten en stor liste med funsjoner?

5453920[/snapback]

 

nei, en klasse er en samling av funksjoner(metoder) og variabler. det meste du kan gjøre med klasser kan også løses på andre måter, men det blir som regel mye enklere å holde oversikt når du bruker klasser, siden det er mer likt hvordan vi ser verden med objekter. det du ikke kan løse uten klasser, eller som ihvertfall blir veldig vanskelig, er arv, polymorfi osv., men det er vanskelig å forklare hva det er når du ikke vet hva en klasse er...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...