Avatar billede dank Nybegynder
27. februar 2004 - 13:17 Der er 11 kommentarer og
1 løsning

behandling af objecter

Hvordan behandler jeg egentligt objecter?

jeg har f.eks.

stdClass Object
(
    [AId] => 3928
    [MName] => 234234
}

Som jeg har fået ved en mssql_fetch_object og print_r

Men hvad hvis jeg skal bruger nogle af de variabler der står i disse "objecter", hvordan trækkes de ud?
Avatar billede jakoba Nybegynder
27. februar 2004 - 13:24 #1
du benytter operatoren  '->'  til au udpege variable eller funktioner i dit objekt:

  echo $objektvariabel->Aid;  // should write 3928
Avatar billede dank Nybegynder
27. februar 2004 - 13:29 #2
ok... Men i dette tilfælde har jeg kun ovenstående data som fetch_object har returneret, så hvorfor kender jeg $objectvariabel?
Avatar billede jakoba Nybegynder
27. februar 2004 - 13:36 #3
du må have sagt  print_r( $noget )  for at få den udskrift.  $noget er din objektvatiabel.

Vis eventuelt den kode du brugte hvis det ikke er nok.
Avatar billede dank Nybegynder
27. februar 2004 - 13:42 #4
ja tak, det var bare $row

Det er helt nyt for mig dette, så beklager dette newbee ?

Opretter du svar? Og tak for hjælpen.

Er der i øvrigt nogen som kan fortælle hvad fordelen er i dette, fremfor f.eks. at obevare i en array?
Avatar billede dank Nybegynder
27. februar 2004 - 13:42 #5
(glemte at sige, at det virker nu)
Avatar billede jakoba Nybegynder
27. februar 2004 - 13:43 #6
ok.
Avatar billede jakoba Nybegynder
27. februar 2004 - 13:54 #7
PS:  der er ikke nogen kæmpestor fordel ved det. men et par små fordele.
  dine værdier inden i objektet får navne istedet for numre, ved at vælge gode navne kan du gøre dit program nemmere at forstå og vedligeholde.
  i nogen situationer (ikke denne) kan man lave objekter der indeholder en eller flere funktioner. så man gemmer programkoden sammen med lige præcis de informationer den programkode er skrevet til at virke på. Det er igen en måde at gøre programmeringen nemmere og mere overskuelig.

men for dig (som newbie) er der ikke rigtig nogen stor fordel ved det. tværtimod ville det nok være bedre hvis du ikke sådan blev overlæsset med nue begreber før de har fået de gamle ind på rygraden. Så jeg ville sige:
    $row = mssql_fetch_array( $resultatset );  // den giver de samme data i et array
og så adressere værdierne med
    echo $row['Aid'];
det virker præsis ligesådan.

http://dk.php.net/manual/en/function.mssql-fetch-array.php

mvh JakobA
Avatar billede dank Nybegynder
27. februar 2004 - 14:06 #8
Ja det kan jeg godt se.. takker for input :)
Avatar billede dank Nybegynder
27. februar 2004 - 14:21 #9
Vil det sige at hvis jeg f.eks. har $row->Email som indeholder f.eks.

abc@dom.dk og jeg skal lave en funktion som returnerer domænet (dom.dk), så ville jeg kunne gøre noget i denne retning:

$row->Email->GetDomainExtension;

Er det helt i skoven?
Avatar billede jakoba Nybegynder
27. februar 2004 - 14:38 #10
Det er desværre helt i skoven :-)
emailadressen er lagret som en streng (sekvens af bogstaver) så du kan ikke bruge den somom den var et opjekt. Men du kunne god lave et objekt til at indeholde din emailadresse, og så ville dit forslag virke
class email_objekt {
    var preAt;
    var domainExtension:
    function email_object(  ) {
        $temp = explode( "@", $email_string );
        $this->preAt = $temp[0];
        $this->domainExtension = $temp[1];
    }
}
// nu kunne du sige
$row->Email = new email_object( $row->Email );  // laver din email string om til et objekt.
// og så endelig:
echo $row->email->domainExtension;          // skriver 'dom.dk'

mvh JakobA
Avatar billede jakoba Nybegynder
27. februar 2004 - 14:42 #11
Ups jeg glemte at skrive et navn itil parametere i objektets constructor funktion:
    function email_object( $email_string ) {
Avatar billede dank Nybegynder
28. februar 2004 - 15:10 #12
ok tak... jeg indrømmer det ser lidt "anderledes" ud... Det er jo åbenbart en hel ny måde at tænke på i forhold til alm. nybegynder kode med linie for linie som jeg er vant til :)

Prøver mig lidt frem og tak for hjælpen.
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