I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Slettet bruger
22. januar 2004 - 18:13#1
Måske kan du bruge:
$class = get_class($this); $Obj= new $class('argument1', 'argument2');
så vidt jeg kan se er der ikke instantieret et object endnu - og $this vil være null - og så kan man ikke benytte get_class() som jo skal have et objekt som parameter.
vær desuden opmærksom på get_class returnerer klassens navn i lowercase - så hvis du har en klasse med definitionen med uppercase kan du få problemer
f.eks
class Cart { ... }
$cartobj = new Cart;
- vil med get_class($cartobj) returnere "cart"
kan du ikke hente klasserne ind i et array og gøre sådan her:
$klasser = array("klasse1", "klasse2", "klasse3"); for ... $newobj = new $klasser[$i]($arg1, $arg2);
Synes godt om
Slettet bruger
22. januar 2004 - 18:50#3
smirnoff: $this peger altid på det objekt hvori $this bruges. Det gik jeg ud fra at lajer vidste, så jeg gik dermed også ud fra at meningen var at en metode i objektet skulle kunne lave et nyt objekt af samme klasse som det selv.
Ifølge brugerkommentarerne i php-maualen er det ikke et problem at get_class returnerer i lowercase. objektnavne er tilsyneladende ikke-case-sensitive.
ved godt $this peger på objeketet selv - men spørgsmålet er også lidt tricky synes jeg .. så fair nok
ang case: du har ret - var jeg faktisk ikke klar over :)
Synes godt om
Slettet bruger
22. januar 2004 - 19:05#5
Jeg fandt såmænd også først ud af det lige før klokken 18:13:57 ;-) Men det overrasker mig ikke. PHPs indbyggede funktionsnavne er også ligeglade med case. Hvis du får lyst kan du sagtens skrive MySQL_Query($streng).
Jeg tror at i måske har misforstået mit spørgsmål.
Her er et eksempel på hvad det er jeg vil:
class a { function a( $argument1, $argument2 ) { echo "Jeg er blevet kaldt af klassen b's metode MakeInstance()"; } } class b { function MakeInstance( $aObjName ) { $Obj = new $aObjName; // < Her at det går galt. } } $b = new b(); $b->MakeInstance("a");
jeg prøvede at skirve det ind med en lille ændring:
class a { function a( $argument1, $argument2 ) { echo "Jeg er blevet kaldt af klassen b's metode MakeInstance()"; } } class b { function MakeInstance( $aObjName ) { $Obj = new $aObjName(1, 2); // < Her at det går galt. print "<br>".get_class($Obj); } } $b = new b(); $b->MakeInstance("a");
og print get_class($Obj) returnerer "a"
Synes godt om
Slettet bruger
22. januar 2004 - 22:04#9
Hvis den oprindelige kode er som vist, er problemet nok, at det nylavede objekt forsvinder igen, når funktionen afslutter. Det skal gemmes et sted - enten i objektet, der laver det eller det skal returneres.
Synes godt om
Ny brugerNybegynder
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.