Avatar billede Svane55 Nybegynder
06. november 2009 - 01:02 Der er 6 kommentarer og
1 løsning

constructor overload

Hvordan laver jeg en overload på min constructor

altså eksemmpelvis hvis jeg gerne vil have noget lign. dette:

function __construct($var1)
{
  $this->var1 = $var1;   
}

function __construct($var1, $var2)
{
  $this->var1 = $var1;
  $this->var2 = $var2;   
}

Jeg kan godt gennemskue at dette ikke er måden i php, men hvordan gør jeg så?
Avatar billede arne_v Ekspert
06. november 2009 - 01:13 #1
PHP understøtter det ikke.

Kan du ikke bruge default value:

    function __construct($var1, $var2 = '')
    {
      $this->var1 = $var1;
      $this->var2 = $var2; 
    }

?
Avatar billede Svane55 Nybegynder
06. november 2009 - 01:23 #2
Jo det kan jeg vel :)
Er det "måden" at håndterer det på i php?
Avatar billede arne_v Ekspert
06. november 2009 - 01:50 #3
Alternativet må være at lege med func_num_args() og func_get_args() !
Avatar billede Svane55 Nybegynder
06. november 2009 - 02:01 #4
ok, tak
Avatar billede arne_v Ekspert
06. november 2009 - 02:17 #5
Alterbativet kunne se ud som:

    function __construct()
    {
        switch(func_num_args()) {
            case 0:
                $this->var1 = '';
                $this->var2 = ''; 
                break;
            case 1:
                $this->var1 = func_get_arg(0);
                $this->var2 = ''; 
                break;
            case 2:
                $this->var1 = func_get_arg(0);
                $this->var2 = func_get_arg(1); 
                break;
        }
    }
Avatar billede arne_v Ekspert
06. november 2009 - 02:17 #6
og et svar
Avatar billede Svane55 Nybegynder
06. november 2009 - 02:28 #7
ah ja :_)
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