Avatar billede matz Nybegynder
07. marts 2008 - 14:53 Der er 16 kommentarer og
1 løsning

$_POST i class

Nogen der kan sige mig hvorfor dette ikke virker:

class klassen
{
    public $navn = 'navn1';
}

Hvorfor kan den ikke se sådan her ud:

public $navn = $_POST['navn1'];
Avatar billede dkfire Nybegynder
07. marts 2008 - 15:01 #1
Det kan den også godt.
Avatar billede matz Nybegynder
07. marts 2008 - 15:08 #2
Den melder fejl på det:

Parse error: syntax error, unexpected T_VARIABLE
Avatar billede erikjacobsen Ekspert
07. marts 2008 - 15:09 #3
Du kan den tilordning i din constructor, eller endnu bedre: tage den med som argument til din constructor.
Avatar billede jensgram Nybegynder
07. marts 2008 - 15:12 #4
Du kan eksempelvis heller ikke:

function a($a = $b) {
    ...
}
Avatar billede matz Nybegynder
07. marts 2008 - 15:13 #5
Det jeg lige har fået til at virke er:


class klassen
{
    public $navn;
}

$et = new klassen ();
$et->$navn = $_POST['navn1'];

Men kan ikke få det til at virke på den anden måde.

Erik kan du komme med et eksempel
Avatar billede jensgram Nybegynder
07. marts 2008 - 15:17 #6
class klassen {
    public $navn;
   
    function __construct__($navn) {
        $this->navn = $navn;
    }
}


$et = new klassen($_POST['navn1']);
Avatar billede jensgram Nybegynder
07. marts 2008 - 15:17 #7
Hov - den skal kun hedde __construct
Avatar billede matz Nybegynder
07. marts 2008 - 15:20 #8
Okay også hvis der er flere:

class klassen {
    public $navn;
    public $navn2;
   
    function __construct__($navn,$navn2) {
        $this->navn = $navn;
        $this->navn2 = $navn2;
    }
}


$et = new klassen($_POST['navn1'],$_POST['navn2']);

Hvilken måde er så det mest optimale. Det jeg fik den at virke på eller det Jens kom med?
Avatar billede erikjacobsen Ekspert
07. marts 2008 - 15:21 #9
Nu vil det næppe være sundt at lade en klasse være afhængig af at data kun kommer fra en bestemt $_POST-variabel, som jensgrams forslag er 1000 gange bedre end dette:

class klassen {
    public $navn;
 
    function __construct () {
        $this->navn = $_POST['navn1'];
    }
}


$et = new klassen();
Avatar billede erikjacobsen Ekspert
07. marts 2008 - 15:22 #10
"Hvilken måde er så det mest optimale. Det jeg fik den at virke på eller det Jens kom med?" - det kommer an på hvad du skal bruge det til.
Avatar billede matz Nybegynder
07. marts 2008 - 15:24 #11
Den skal hente infomationer udfra en form der så skal vises...Ganske enkelt...
Avatar billede matz Nybegynder
07. marts 2008 - 20:04 #12
Kan man give en "__construct funktion" et navn. Så man kan kalde hele funktionen?
Avatar billede dkfire Nybegynder
07. marts 2008 - 20:10 #13
__construct er navnet på funktionen, og den kaldes når du laver et nyt objekt af din klasse.
Avatar billede matz Nybegynder
07. marts 2008 - 20:15 #14
Okay...Nogle der vil have points? :)
Avatar billede jensgram Nybegynder
09. marts 2008 - 08:52 #15
Som dkfire skriver, kalder __construct automagisk når du skriver new klasse();

Hvis jeg skulle lave en sådan klasse, ville jeg nok give et array af POST-nøgler med, som så kunne udskrives...
Avatar billede matz Nybegynder
09. marts 2008 - 09:51 #16
Jens vil det vise med et eksempel hvordan du mener?
Avatar billede jensgram Nybegynder
10. marts 2008 - 12:47 #17
Nej, for jeg aner jo ikke hvad du skal.
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