Avatar billede Slettet bruger
28. december 2006 - 16:39 Der er 3 kommentarer og
1 løsning

Klasser og funktioner - OOP - hvordan i praksis?

Hej

Jeg har været ved at kigge på brugen af klasser og funktioner sammen, og er ikke sikker på jeg helt har forstået hvordan det hænger sammen.

Jeg har tænkt på at lave en class til form-validering, for at få en grundlæggende føling med hvordan det bruges.

Jeg har en form. Fra denne form får jeg x antal formfelter.

$felt1 (indeholder navn)
$felt2 (indeholder telefonnr.)
$felt3 (indeholder email)

Jeg kan godt se ideén med at lave en funktion, der f.eks. kan validere mit navn.

validate_form(variabel,type,størrelse,gyldige tegn);

validate_form($felt1,"name","50","letters");
validate_form($felt2,"phone","50","numbers");
validate_form($felt3,"email","50","");

...men jeg kan ikke se ideén med at bruge en klasse.

Er der ikke en der kan hjælpe mig på vej, ikke med at lave alt kode, men med at visualiserer hvordan en sådan klasse kunne være?
Avatar billede windcape Praktikant
29. december 2006 - 13:42 #1
Din ide er ikke særlig smart , når PHP har www.php.net/ctype , så synes ikke rigtig at du skal fortsætte med den, da den ikke vil give andet end dårlige vaner.

OOP er mere til større projekter, men hvis du vil have et eksempel kan du f.eks. se den gæstebogs class jeg har skrevet:

Class:
http://dragons-lair.org/repository/PHP/Guestbook/Guestbook.phps
Eksempel:
http://dragons-lair.org/repository/PHP/Guestbook/example.phps

Funktioner er til mindre formål, som f.eks. at sortere data, eller simpelthen for at undgå redundant (gentagende) kode.
Avatar billede windcape Praktikant
29. december 2006 - 14:50 #2
function validatePostField($key,$type,$size=0) {
    if(!isset($_POST[$key])) {
        return false; // key not set
    }
    $data = $_POST['key'];
    if($size != 0) {
        return (strlen($data) < $size);
    }
    switch($type) {
        case 'string':
            return ctype_alpha($data);
        break;
        case 'number':
            return ctype_digit($data);
        break;
        case 'default':
            return ctype_alnum($data);
        break;
    }
}

validatePostField('name','default',50);

vil så validere om $_POST['name'] er en a-zA-Z0-9 og er 50 eller mindre antal characters :-)

Men klasse ville så være at wrappe det i et størrere scope så f.eks.

$validator = new Validator('POST');
$validator->validate('name','string',100);
$validator->validate('phone','number',8);
$validator->validate('email','default',100);
if(!$validator->isValid()) {
    echo 'Du har ikke udfyldt felterne korrekt';
} else {
    // f.eks. indsæt i en database.
}
Avatar billede Slettet bruger
30. december 2006 - 12:14 #3
Kan godt se at det i virkeligheden er funktioner jeg skal lave.

Ideén var at lave nogle scripts (funktioner), der kan genbruges igen og igen, således at hver gang jeg laver en side med en form, vil disse funktioner kunne bruges til at validere mit indhold, uanset hvad disse form-felter indeholder.

Du har hjulpet mig på sporet af hvordan jeg vil gøre, så læg et svar og der er point på vej :O)
Avatar billede windcape Praktikant
30. december 2006 - 20:50 #4
svar \o/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging