CruellaDeVille Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 hvordan kan jeg sjekke om en klasse har en variabel med navn $property når property_exists ikke finnes i php4.x? Lenke til kommentar
Gjest Slettet+142 Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 (endret) er det noe spesielt jeg ikke har fått med meg ang. $proberty-variabelen? ellers er det vel bare if(isset($klasse->property)) høh? edit: ellsers ble man jo linket til denne når man browsa manualen for property_exists på php.net... Endret 19. mars 2007 av Slettet+142 Lenke til kommentar
AlecTBM Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 (endret) if($proporty == true) ?? edit; Hmm litt sen der. tengte foresten ikke på isset og classe tingan Endret 19. mars 2007 av AlecTBM Lenke til kommentar
CruellaDeVille Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 Nah, jeg har laget en metode som tar et variabelnavn og en verdi som parameter, type slik: PHP function set($property, $value){ // hvis $property er en variabel i klassen x $this->$property = $value; } så dermed kan jeg ikke bruke isset, for den bare forteller om property y har en verdi, ikke om property y eksisterer i klassen..... Sukk og sukk Lenke til kommentar
-morten Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 Hvis den har en verdi, så eksisterer den jo. Ser ikke helt problemet jeg heller. property_exists($this, $property) og isset($this->$property) returnerer vel det samme? Det spesielle med property_exists ser ut til å være at den kan ta en klasse, og ikke et objekt av klassen, og si om klassen har den variabelen. Men du snakker jo om $this? Ellers er vel det åpenbare svaret at skal man bedrive ordentlig OOP i PHP, så oppgraderer man til PHP5... Lenke til kommentar
CruellaDeVille Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 De gjør ikke det. En klasse, eks ting har property $tull, selv om $tull ikke har verdi vil property_exists returnere true selv om $tull = null, mens isset vil returnere false. Apropos php5-oppgradering - har sagt det til mywebhost, men de vil ikke høre på meg. Lenke til kommentar
Ueland Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 Fra php manualen: if(array_key_exists('propertyName',get_object_vars($myObj))) { // ..the property has been defined } Lenke til kommentar
CruellaDeVille Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 Nydelig! Den fungerer flotters Lenke til kommentar
CruellaDeVille Skrevet 19. mars 2007 Forfatter Del Skrevet 19. mars 2007 Et spørsmål til: Jeg har fem klasser, som alle implementerer den samme metoden (set($property, $value)). Finnes det noen enklere måte å implementere den på enn å skrive den i fem klasser? Så vidt jeg vet støtter ikke php multipel arv, og å ha en set-metode i en error_handler er kanskje ikke helt greitt det heller? Alle klasser utvider error_handler, så det er i så fall eneste alternativ så vidt jeg ser, eller er det en annen løsning? Lenke til kommentar
Gjest Slettet+142 Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 går ikke dette sånn noe lunde an? class klasse1{ var $hei; } class klasse2 extends klasse1{ } class klasse3 extends klasse2{ } class klasse4 extends klasse3{ } class klasse extends klasse4{ function set_hei($streng){ $this->hei = $streng; } } $klasse = new klasse(); $this->set_hei("Hei til deg!"); echo $this->hei; knotete og dårlig måte, men jeg har iallefall klart å bygge en klasse slik Lenke til kommentar
Runar0 Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 (endret) Et spørsmål til:Jeg har fem klasser, som alle implementerer den samme metoden (set($property, $value)). Finnes det noen enklere måte å implementere den på enn å skrive den i fem klasser? Så vidt jeg vet støtter ikke php multipel arv, og å ha en set-metode i en error_handler er kanskje ikke helt greitt det heller? Alle klasser utvider error_handler, så det er i så fall eneste alternativ så vidt jeg ser, eller er det en annen løsning? 8192468[/snapback] Eventuelt ha funksjonen på utsiden av klassesn slik: PHP <?phpfunction set($klasse, $property, $value) {} ?> Endret 20. mars 2007 av Shadows0 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå