Formulier Class Basic

Door Wout van der Burg, 21 jaar geleden, 4.167x bekeken

Ik heb een simpele class gemaakt voor de basisfuncties van een formulier, hiermee kun je sneller werken, want een formulier maken is heel wat typwerk.. Dit is mijn eerste class afgeleid van de laatste OOP tutorial van Roelofs, ik wil weten of ik het snap :) dus brand los met de opmerkingen..

Gesponsorde koppelingen

PHP script bestanden

  1. formulier-class-basic

 

Er zijn 18 reacties op 'Formulier class basic'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Kalle P
Kalle P
21 jaar geleden
 
0 +1 -0 -1
Waarom OOP-en. Totaal geen meerwaarde.

Je eerste pagina is nutteloos voor mensen die OOP willen leren.

Het enige lerende puntje is: $form->formOpen. Kortom hoe je in een externe klasse een functie moet aanroepen. Dit was alleen ook al te lezen in de OOP tut.

Ohja, en je zet geen echo's in een klasse.

Mag snel weg dit drama script.

Later.
Wout van der Burg
Wout van der Burg
21 jaar geleden
 
0 +1 -0 -1
Als je nou ff bovenaan leest:
Ik wil weten of ik het snap, niet of jij OOP-en zinvol vind of dat jij het leerzaam vind..
Kalle P
Kalle P
21 jaar geleden
 
0 +1 -0 -1
Moeten we daarvoor dan een script toevoegen? Read the rules.

Zoiets post je in een topic. Ik weet niet hoeveel posts je hebt, maar je mag dat wel weten. Anders verwijs ik je terug naar 3 zinnen geleden.

Die algemene bla-bla lees ik nooit.

Ik beoordeel het script, zoals logisch is. Je stelt een vraag, dat stel je niet als een script eropt zet.

FORUM!

Opmerkingen heb ik al gemaakt.
Mr D
Mr D
21 jaar geleden
 
0 +1 -0 -1
echo in een class is niet zo'n goed idee, gebruik ipv daarvan een return of zo. Verder zitten er ook van dit soort functies in Smarty en in het Zend Framework, misschien kan je kijken hoe ze dit daar hebben gedaan.
Wout van der Burg
Wout van der Burg
21 jaar geleden
 
0 +1 -0 -1
Je bedoelt meer iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
class Form {
var $openform;
function formOpen ($name,$action,$method) {
        $this->openform = '<form id="'.$name.'" name="'.$name.'" action="'.$action.'" method="'.$method.'" >';
        return $this->openform;
    }
}

?
GaMer B
GaMer B
21 jaar geleden
 
0 +1 -0 -1
Chill-out Kalle. Wat heb je vandaag? Pilletjes vergeten?
Maargoed ontopic:
Erg goed scriptje, kan goed van pas komen. Ik heb me nog nooit gewaagd aan OOP, omdat, nja.... Tis gwoon nog niet nodig geweest :)
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
$aantal = count($array) - 1;
echo '<option value=""></option>';
for ($i = 0; $i <= $aantal; $i++) {
echo '<option value="'.$array[$i].'">'.$array[$i].'</option>';
}

Waarom niet gewoon een foreach? Verder vind ik het een best relaxed script :-)
Niek s
niek s
21 jaar geleden
 
0 +1 -0 -1
Wout:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
    class Boris {
        function
hello($persoon) {
            return "Ugh ".$persoon;
        }
        function
stopwoord() {
            $woorden = array('Iks dee','kebab','gothic');
            return $woorden[rand(0,count($woorden))];
        }
        function
doei() {
            return "Iks dee! Tsjikita lol!";
 
        }
        
    }

    $boris = new Boris();
    echo $boris->hello('Niek');
    while(MODE == "-b") {
        echo $boris->stopwoord();
        if($tijd == BEDTIJD) {
            echo $boris->doei();
            die();
        }
    }

?>


Nooit echo in een class, ook geen HTML. Deze class is niet perfect, maar het zou je wel ongeveer een idee moeten geven.

Edit:
Mensen die wel eens op #phphulp ((IRC)) zitten, snappen deze class wel :P
Leroy Boerefijn
Leroy Boerefijn
21 jaar geleden
 
0 +1 -0 -1
:P

maar leuke klasse hoor! alleen ik denk niet dat het veel minder typwerk is dan gewoon het formulier uittypen :P
Manaus
Manaus
21 jaar geleden
 
0 +1 -0 -1
waarom zou je niet mogen werken met een echo in een klas, volgens mij is dat geen probleem?
Baarr
Baarr
21 jaar geleden
 
0 +1 -0 -1
@leroy, maar niet als je voor de zoveelste keer weer <input type = blala moet typen

Anyway, slechte class.. echo ??

Ik heb zelf ook eens een dergelijke class geschreven, daar kon je tenminste ook nog gewoon javascript toevoegen aan je input boxen als je dat wilde, in deze classe is dat onmogelijk.
Mr D
Mr D
21 jaar geleden
 
0 +1 -0 -1
maar waarom zou je javascript willen toevoegen aan je input boxen. Houd javascript gewoon gescheiden van je opmaak en houd je opmaak ook weer gescheiden van je applicatie
Baarr
Baarr
21 jaar geleden
 
0 +1 -0 -1
Wat lul je nou, als ik bijvoorbeeld wil dat na het kiezen van een bepaald item in een selectbox automatisch dat formulier word verstuurd, dan moet ik een javascript functie onchange="" doen.

Dus als de class zo geschreven word dat ik er attributen aan mee kan geven is het opgelost...

Dus een vierde argument voor die select box methode zou dan een attributen array kunnen, en daar geef ik dan bijvoorbeeld dit array aan mee.

$attributes = array('onChange' => 'this.form.submit',
'class' => 'cssstylename');

En die kun je dan makkelijk toevoegen door door de attributen array heen te lopen en klaar is kees.
Mr D
Mr D
21 jaar geleden
 
0 +1 -0 -1
zou ik toch anders doen. Geef aan je selectbox alleen een id mee. In een js bestand doe je dan getElementById('jeid').onchange=''. Dit zet je dan bijvoorbeeld in je init functie. zo heb je op je pagina zelf geen letter javascript nodig
Simon Blok
Simon Blok
21 jaar geleden
 
0 +1 -0 -1
Ik heb zelf weinig ervaring met OOP programmeren in PHP (wel in JS), maar een nieuwe instantie maken van de class in de class-file zelf lijkt me absoluut niet slim.
Wout van der Burg
Wout van der Burg
21 jaar geleden
 
0 +1 -0 -1
@Mr D
Je kan ook getElementByName('jeid'). doen, dit is maar net wat prettig vind, ik geloof zelfs dat de POST-method ook gebruik maakt van name...
Ik heb het script wat geupdate en aangepast naar een betere (zonder echo :) )
Jan Koehoorn
Jan Koehoorn
21 jaar geleden
 
0 +1 -0 -1
Ik zet ook wat vraagtekens bij het plaatsen van een script als je de eerste stappen net gaat zetten. Met behulp van de commentaren hier wordt het script natuurlijk automatisch wel beter, maar de echte kracht van OOP komt hier nog niet tevoorschijn vind ik.

Pas als je een paar goed opgebouwde classes hebt die onderling verbonden zijn, krijg je een idee van de voordelen die OOP kan bieden.

Je zou bijvoorbeeld kunnen denken aan een class formelement. Een aantal membervariabelen heb je voor elk formulierelement nodig, zoals een label, een name en een id. Die class zou je dan kunnen extenden naar de verschillende typen formulierelementen, bijv:

class selectbox extends formelement

De class selectbox zou dan extra membervariabelen krijgen, namelijk een array met de options en een array met de values. Je zou ook bij moeten houden wat de huidige selectie is.

De OOP manier van denken is heel anders dan de procedurele. Elke keer als je een memberfunctie of -variabele verzint moet je nagaan waar in de hiƫrarchie van classes die het beste past.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pieterjan Muller
Pieterjan Muller
21 jaar geleden
 
0 +1 -0 -1
Buiten dat het veel te artificieel is.

Er wordt namelijk geen object toegevoegd ...

Heb ik nog een paar opmerkingen :
- gebruik \n op het einde van de lijn
- waarom al die var's ? werk toch gewoon altijd met $data (zelfs niet $this->data, want je returned direct, en de data moet dus om geen enkele reden bijgehouden worden -> dat doet $this-> )

Ik hoop dat je er iets mee bent.

Pj ;)

PS: dus je volgend experiment, doe je iets waar je echt een object opbouwt.
Een member, of een winkelkar, of een product, etc.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. formulier-class-basic

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.