06. marts 2012 - 22:10 Der er 18 kommentarer og
1 løsning

Programmet læser tilsyneladende udkommenteret kode

Jeg har udkommenteret denne funktion:

/*function store()
{   
  $row =& $this->getTable();
  $data = JRequest::get( 'post' );
  return true;
}*/

(Den udkommenterede kode er væsenligt længere, men resten er irrelevant for dette spørgmål.)

Når jeg kalder den fil som (blandt andet) rummer den udkommenterede funktion får jeg fejlmelding:

Parse error: syntax error, unexpected T_STRING in C:\xampp\..... on line 111

Line 111 er $data = JRequest::get( 'post' );.  Jeg bruger Notepad++, og der vises den udkommenterede kode med grå farve undtagen at ordet post vises med sort, så det er vel 'post' der er skyld i fejlmeldingen.  Det kunne se ud til, at ' ' så at sige afbryder kommentaren.  Kender nogen en forklaring derpå?  Jeg bruger koden på en Joomla (1.5) platform, men det skulle vel ikke gøre nogen forskel?
Avatar billede olsensweb.dk Ekspert
06. marts 2012 - 22:29 #1
kunne det være manglende mellemrum efter og før * ??
/* function store()

  $row =& $this->getTable();
  $data = JRequest::get( 'post' );
  return true;
} */
Avatar billede olebole Juniormester
06. marts 2012 - 22:30 #2
<ole>

Joomla må være det eneste sted, du skal lede. Den udkommenterede kode kan ikke læses, så Joomla må ophæve udkommenteringen - somehow  =)

/mvh
</bole>
Avatar billede olebole Juniormester
06. marts 2012 - 22:44 #3
"Den udkommenterede kode er væsenligt længere, men resten er irrelevant for dette spørgmål" >> Den kommentar så jeg ikke i første omgang - og den kræver jo nok, at du selv har helt styr på, hvad der er årsag til det grundlæggende spørgsmål  =)

Er der i den reelle kode evt. andre kommentarer indenfor den kode, du viser? Står den kode, du viser, indenfor en anden kommentarblok?
07. marts 2012 - 09:44 #4
#1, nej, mellemrummene gjorde ingen forskel.

#2 og #3,  den udkommenterede kode sad ikke i en anden kommentar, det checkede jeg forfra og bagfra, fordi jeg før er kommet i problemer med netop det.  Men du bekræfter (hvad jeg troede) at php ikke skal kunne læse udkommenteret kode, heller ikke det der sidder mellem apostroffer.  (Jeg har set programmer, jeg har glemt hvilke, der betragter en kodelinie der starter med apostrof som kommentar.)  Jeg har 'løst' problemet og kommet videre ved at slette den udkommenterede kode, men jeg ville gerne have fundet årsagen.

For god ordens skyld beder jeg om svar for points.  Hvis du, som jeg har set før, ikke ønsker dette, så accepterer jeg mit eget svar.
Avatar billede olebole Juniormester
07. marts 2012 - 10:16 #5
Visse sprog - herunder VB - bruger apostrof som singleline kommentar, andre bruger hashmark (#). I PHP skal du kunne bruge // som singleline og C-style (/* kommentar */) multiline kommentarer, så problemet må skyldes Joomla.

Og du har ret - jeg samler ikke point  =)
07. marts 2012 - 10:31 #6
Så havde jeg forstået kommentarer i php korrekt.  Hvis jeg støder på det igen og stadig ikke kan finde årsagen, så kommer der nok et nyt spørgsmål fra mig.
07. marts 2012 - 20:42 #7
Jamen så fandt jeg ud af det - fejlen lå der hvor det var mest sandsynligt, ikke ved php og ikke ved Joomla, men ved christian_belgien!

Jeg fik igen en fejlmelding om 'unexpected T-STRING, denne gang i linie 54 i denne kode:

52    function getData()
53    {
54        // Lets load the data if it doesn't already exist
55        if (empty( $this->_data ))

og jeg så at det der fulgte efter apostroffen, altså "t already exists" havde en anden farve end det foregående, og at farveskiftet forsvandt, hvis jeg slettede apostroffen.

Denne gang fik jeg den lyse ide at kikke på den forudgående kode, og jeg opdagede, at jeg umiddelbart forud for funktion getData() havde en tekststreng der startede med ' men som jeg havde glemt at afslutte med '.  Så koden opfattede det efterfølgende - inklusiv //  - som del af tekststrengen, som så afsluttedes ved ' i "doesn't".

Altså /* og // bliver IKKE af php opfattet som start på en kommentar, hvis php har anledning til at opfatte disse tegn som del af en tekststreng.
Avatar billede olebole Juniormester
07. marts 2012 - 22:17 #8
Ja, så er det jo logisk nok. Derfor første afsnit i #3, som er en klassiker på Eksperten  *o)
07. marts 2012 - 22:34 #9
Ja, kodeafsnittet stod ikke indenfor en anden kommentarblok.  Det er en klassisker på Eksperten, og også en personlig klassisker, så den checkede jeg for.  Jeg skal nu have føjet en ny en til mine klassiske fejl, det om kommentar starten står inden for hvad koden opfatter som en tekststreng.

Jeg trøster mig med et citat jeg engang læste:  "Når man er virksom begår man fejl.  Når man er meget virksom begår man flere fejl.  Der er nogen der ikke begår fejl."
Avatar billede olebole Juniormester
07. marts 2012 - 23:30 #10
- og visse er voldsomt hyperaktive  *D
08. marts 2012 - 19:33 #11
...hvilket giver anledning til endnu flere fejl som skal findes og rettes.  Den positive kant deraf er, at det også giver anledning til mer indlæring, således at forholdet mellem fejl og aktivitet over tiden skulle forbedres.  Det er vi vel enige om (i hvert fald så vidt som enigheden er så stor som en nordsvensk skovhuggers afhuggede lillefingernejl - det var vist sådan du definerede det for nogen tid siden.  Det er da i hvert fald noget.  Så kan det måske udvikle sig så det fylder så meget som en afhugget storefingernejl.
Avatar billede olebole Juniormester
08. marts 2012 - 19:46 #12
Mange af mine elever har i tidens løb måbet svært, når jeg har forklaret dem, hvorfor jeg normalt er få sekunder/minutter om af finde deres fejl. Jeg har en enorm øvelse i disciplinen, fordi jeg selv har lavet tusinder af fejl og gør det hver dag  *o)

Professionelle udviklere laver ligeså mange fejl som alle andre. Vi finder dem bare meget hurtigere, fordi vi har lavet så mange. Ofte behøver vi ikke engang se koden, men kan gætte, hvor den ligger, når vi ser den i browseren  =)
10. marts 2012 - 00:11 #13
....jamen hvad angår at lave mange fejl, så opfylder jeg den betingelse for at blive professionel udvikler.  Det med at finde fejlene hurtigt, der mangler jeg stadig meget.  Det med at finde kommentarer indeni kommentarer har jeg nogenlunde styr på.  I fremtiden vil jeg nok også være hurtigere til at spotte tilfælde hvor programmet opfatter starten på en kommentar som hørende til en tekststrebng.  Men det drejer sig om at være aktiv, hvad enten det er hyper aktiv eller super duper aktiv.  Jeg er optimist.

(Med hensyn til optimister og pessimister - jeg var (indtil min pensionering) ansvarlig for budgettet i NATO's Europakommando.  Noget af det der virkelig gør en forskel er hurtigt at spotte områder hvor aktuelle omkostninger tenderer til at gå under budgettet og så få dem flyttet.  Så da jeg engang skulle sige nogle bevingede ord til en konference sagde jeg, at forskellen på en optimist og en pessimist og en budget officer er, at optimisten siger at glasset er halvt fuldt, pessimisten siger, at glasset er halvt tomt, og budget officeren siger, at glasset er dobbelt så stort som det behøver at være.)
Avatar billede olebole Juniormester
10. marts 2012 - 14:14 #14
Hehe ... personligt ville jeg være glad for, at situationen gav mig en undskyldning for at være halvfuld. Sådan er mennesker heldigvis så forskellige  *o)
11. marts 2012 - 18:09 #15
Nej nej, det er glassene der er halvfulde, ikke optimisterne eller budget officererne.  Begge typer giver den hele armen.

Men optimist må man være, når fremskridtene går med millimeter skridt.  I øjeblikket er jeg i gang med at udvikle en komponent til Joomla.  Det vidste jeg ikke noget om da jeg startede, men i mellemtiden har jeg fordoblet min viden. Joomla benytter objektorienteret php.  Joomla framework'et består af et stort antal klasser for standard funktions såsom at bevare data i database tabeller og behandle formularer, og det foregør efter Model View Controller 'pattern.'  Da jeg lærte java, og senere da jeg arbejdede (lidt) med C#, havde jeg en IDE hvor jeg kunne udføre programmet skridt for skridt, eller indsætte breaks, og holde øje med hvad der er i de forskellige variabler.  Det har jeg ikke kunnet finde for hvad jeg nu gør, så når noget ikke virker (det hænder af og til) må jeg manuelt i de forskellige klasser indsætte echoer og var_dumps.  Og det tager sin tid.  Men foreløbigt går jeg tre-fire skridt fremad for hver to-tre skridt tilbage, så jeg er stadig optimist.
Avatar billede olebole Juniormester
11. marts 2012 - 20:59 #16
Jeg fik helt fat i metaforen, og forsøgte bare at elaborere videre over den ... noget med at være tifreds med, at glasset er tomt - og jeg dermed halvfuld. Men lad det nu ligge  *o)

Hvad fejlfinding angår, kan det være, du skulle kikke på Eclipse, hvor du bl.m.a. har mulighed for at sætte break points. Jeg bruger den ikke selv, men ved at mange er meget glad for den.

Så vidt jeg ved, anvender brugeren arne_v Eclipse, og jeg har indtryk af, at også han er vældig glad for den. Jeg har stor respekt for hans viden/kompetencer, så hans begejstring taler i min verden for programmets værdi  =)

Helt generelt skal man være påpasselig med at udskrive fejlmeddelelser. I den forbindele vil jeg anbefale dig at læse denne guide. Selvom den på overfladen omhandler MySQL-fejl, bygger den i virkeligheden på mere generelle betragtninger.
12. marts 2012 - 21:56 #17
Så faldt tiøren - det er bedre at være pessimist, for hvis glasset er halvt tomt kan man selv være halvfuld.

Eclipse - jeg har hørt om den, og nu skal kikke ordenligt på den så snart som muligt.  I øjeblikket prøver jeg, omtrent på fuldtid, at få noget færdigt, så jeg har for travlt med at finde fejl til at kikke på 'tools' som eclipse.  (Jeg ved godt, at det er ligesom de der har for travlt med at save brænde til at stoppe og skærpe saven.)

Tak for guiden.  (Det er ikke fejlmeldinger jeg skriver ud, men 'breakpoints'.  Hvis jeg for eksempel vil checke om klassen Installments kalder klassen Installmentdetails og med den rette ID værdi skriver jeg måske i Installmentdetails:

echo "INSTALLMENTDETAILS, ID = ";var_dump($id);

Med hensyn til udtrykket 'nu faldt tiøren,' så var det noget man sagde, da engang i et tidligere århundrede (eller var det et tidligere årtusind?) boede i Danmark.  Nu siger man vel 'så faldt tikronen.')
Avatar billede olebole Juniormester
12. marts 2012 - 22:15 #18
Jeg er selv en vintage model fra ganske kort efter, Chevrolet var begyndt at lave Corvetten - og den var værd at se på (Læs: 1955). Så jeg er også fra tiden med en-, to-, fem- og tiøren - for ikke at tale om 'guld' daleren og femkrone sedlen  *o)

Må jeg i lyset af de senste kommentarer anbefale Four Yorkshiremen fra Hollywood Bowl - og en anden skøn, gammel version med bl.a. Cleese og Marty Feldman. Stort ...!  *D
13. marts 2012 - 22:11 #19
Yorkshiremen - ja.  Og femkronesedlen, det var jo en formue.  Jeg husker, da jeg engang som dreng så en femkroneseddel liggende på fortorvet.  Jeg samlede den benovet op og spurgte de omkringstående, om det var deres.  Da ingen sagde ja, tog jeg den til mig og var helt sær ved det, troede næsten at nu kom jeg i fængsel for at have tilegnet mig en formue. 

Men da jeg i 1976 kom til Belgien havde de endnu en 20 frank seddel som svarer til godt tre kroner.
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