Kom ihåg mig?
Home Menu

Menu


PHP Functions

Ämnesverktyg Visningsalternativ
Oläst 2008-02-07, 19:31 #1
SumoSilent SumoSilent är inte uppkopplad
Medlem
 
Reg.datum: Jul 2007
Inlägg: 60
SumoSilent SumoSilent är inte uppkopplad
Medlem
 
Reg.datum: Jul 2007
Inlägg: 60
Hejsan hoppas ni kan hjälpa mig med detta problem.

Kod:
class testing
 {

 function getdata($testar)
 {
  if($testar == "hej")
  return $testar = "tja";
 }

 function test($testar)
 {

 $testar = getdata($testar);
 echo $testar;
 }

 }

$testing = new testing();
$testing->test("hej");
Jag får felmeddelandet att jag inte kan annropa "i detta fallet" getdata för att den inte finns men när jag tar och lägger
getdata i funktionen test så fungerar det.

Nu till den rediga frågan går det att få tag på denna function på ett annat sätt? eller ska jag göra på något annat sätt?

(Skriptet är alltså inte det äkta)
SumoSilent är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 19:49 #2
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
Kod:
class testing
{

 function getdata($testar)
 {
 if($testar == "hej")
 return $testar = "tja";
 }

 function test($testar)
 {

 $testar = $this->getdata($testar);
 echo $testar;
 }

}

$testing = new testing();
$testing->test("hej");
Observera hur jag använder $this i metoden test för att referera till klassmetoden getdata.
HenSod är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 19:55 #3
SumoSilent SumoSilent är inte uppkopplad
Medlem
 
Reg.datum: Jul 2007
Inlägg: 60
SumoSilent SumoSilent är inte uppkopplad
Medlem
 
Reg.datum: Jul 2007
Inlägg: 60
Tack så hemst mycket men nu är det så att jag har en class till innanför testing. Hur ska jag skriva annropet för att komma åt den?
SumoSilent är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 20:12 #4
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
Du får skapa en instans av klassen sedan använder du objekt->metod().
HenSod är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 20:16 #5
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
Citat:
Originally posted by SumoSilent@Feb 7 2008, 20:55
Tack så hemst mycket men nu är det så att jag har en class till innanför testing. Hur ska jag skriva annropet för att komma åt den?
Du får skapa en instans till den andra klassen och anropa funktionen i denna på samma sätt, dvs med $this->funktionen().

Ex

Kod:
class cl1
{
 function konstigfunktion()
 {
 return "Tjohoo";
 }
}


class cl2
{
 function annanfunktion()
 {
 $dummy = new cl1();
 return $dummy->konstigfunktion();
 }
}

$testing = new cl2();
echo $testing->annanfunktion();
Ger "Tjohoo".
oddholst är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 20:21 #6
SumoSilent SumoSilent är inte uppkopplad
Medlem
 
Reg.datum: Jul 2007
Inlägg: 60
SumoSilent SumoSilent är inte uppkopplad
Medlem
 
Reg.datum: Jul 2007
Inlägg: 60
Tanken är ju då att jag har det så här:

Class 1
{

Class 2
{
Function test($testar)
{
echo $testar;
}
}

}
SumoSilent är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 20:44 #7
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
Tveksam
Du kan inte skapa en klass i en annan klass.
HenSod är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 21:02 #8
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
En parantes:
Kan man, i mitt exempel ovan, istället använda dubbelkolon (::) för att komma åt en annan klass innehåll?

Kod:
class cl1
{
function konstigfunktion()
{
 return "Tjohoo";
}
}


class cl2
{
function annanfunktion()
{
 // Kan man göra så här?
 return cl1::konstigfunktion();
}
}

$testing = new cl2();
echo $testing->annanfunktion();
F ö så tror jag inte att man kan skapa en klass i en annan klass. I såfall får du nog utöka en befintlig klass istället (class EnKlass extends AnnanKlass).

Kan du ge exempel på varför du vill göra som du frågade om?
oddholst är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-07, 21:36 #9
Hjalle Hjalle är inte uppkopplad
Medlem
 
Reg.datum: Dec 2006
Inlägg: 181
Hjalle Hjalle är inte uppkopplad
Medlem
 
Reg.datum: Dec 2006
Inlägg: 181
Det går att använda dubbelkolon för att anropa en annan klass om det var det som var din fråga
Hjalle är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-15, 15:55 #10
fredrikf fredrikf är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2008
Inlägg: 5
fredrikf fredrikf är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2008
Inlägg: 5
Syntaxen Klassnamn::metod() används för att anropa en klasmetod statiskt, dvs utan att först instansiera ett objekt av klassen.

I övrigt så är det som HenSod säger, lokala klassdefinitioner finns inte i PHP.
Känns spontant inte som något man behöver varje dag om man strukturerar sin kod hyggligt.
fredrikf är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 20:27.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017