webForumDet fria alternativet

-> Vad gör det?

4 svar · 244 visningar · startad av JE

JEMedlem sedan juni 2000144 inlägg
#1

Har sett phpkod lite överallt som innehåller ->. Vad gör det?
T.ex

<?
$this->Name = $Name;
?>

------------------
/JE

sgtpepperMedlem sedan apr. 20007 588 inlägg
#2

Du använder -> för att anropa metoder och fält i ett objekt.

Om objektet foo har en metod bar så anropar du den med $foo->bar();

I ditt exempel så används $this. $this är en språkkonstruktion som alltid refererar till den aktuella objektinstansen. Man använder $this i klasser för att anropa metoder och fält i den aktuella objektinstansen av klassen.

PHP är i grund och botten inte ett objektorienterat språk, men det finns vissa ansatser till OO-stöd som dock är ganska skralt, det som dock finns går att läsa om här.

------------------
Peer's Law
The solution to a problem changes the problem.

[Redigerat av sgtpepper den 11 jan 2002]

SPiNMedlem sedan mars 20007 896 inlägg
#3

sgtpepper> Jag vill börja med att säga att jag håller med dig, PHP är inget objekorienterat språk - även om stödet finns där. Dock finns det personer som anser att det är det, då arv och serialisering finns inbäddat i språket.

För mig är ett objektorienterat språk ett språk där man använder sig av klasser mest hela tiden, som man gör i Java. Där kommer man inte undan, om du förstår vad jag menar. I C++ kan man ju välja att använda klasser, men om man inte använder dessa skriver man ju ren C - nästan.

Var går gränsen för att ett språk ska kallas objektorienterat? Finns det några uppsatta regler, eller är det upp till var och en?

------------------
SPiN, bjorne.w@telia.com

-- Wise men talk because they have something to say; fools, because they have to say something. --

sgtpepperMedlem sedan apr. 20007 588 inlägg
#4

Var går gränsen för att ett språk ska kallas objektorienterat? Finns det några uppsatta regler, eller är det upp till var och en?

Definititionen på ett objektorienterat språk är att det skall "tillhandahålla konstruktioner som understödjer dataabstraktion och inkapsling för att skapa klasser, en arvsmekanism så att klasser kan ärva egenskaper (data och metoder) från tidigare deklarerade klasser, samt polymorfism (via dynamisk bindning)".

Även om PHP kan sägas uppfylla dessa krav så saknas många viktiga bitar som återfinns i språk som Smalltalk, Java och andra "äkta objektorienterade" språk. Jag saknar bl.a metodöverlagring samt möjlighet att sätta åtkomstform på fält och metoder, det är irriterande att det inte finns.

Men man får ta PHP för vad det är, ett lattjo och trevligt scriptspråk för webben, inte ett fullfjädrat OO-språk för "seriösa" tillämpningar :).

------------------
Peer's Law
The solution to a problem changes the problem.

U2KMedlem sedan jan. 2000224 inlägg
#5

Jag brukar använda -> när jag ska läsa av en mySQL databas. Det blir lättare att ha koll på vilka kulomner man jobbar med om man lägger in allt i en while ($nisse=mysql_fetch_object($q)) {
echo $nisse->id;
echo $nisse->namn;

osv. osv

------------------
//Du ska inte slänga vatten över ån.
PHP vs ASP (10 - 0)

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)