Problemlösningstekniker och avancemang inom php

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
kaffesump



Medlem i: 4537 dagar
Från: Göteborg
Status: Offline



#472791
Inlägg Skrivet: 2007-03-25 23:36      Ämne: Problemlösningstekniker och avancemang inom php Citera

Dels så tänkte ja att många av dem som svarar på problem gärna hade varit glada och slippa många av de problem där upphovsmakaren inte har lagt ner någon tid själv utan bara skriver i forumet för att låta någon annan göra jobbet mha en enkel guide för att lokalisera fel i kod. Dessutom kan det hjälpa många nybörjare att lättare lokalisera och själva hitta fel.

Sedan undrar jag även ifall det finns något ställe där man kan få utlopp för lite mer avancerad programmering och problem som uppstår. Tips på forum och communitys välkomnas Smile

Sidor som nämnts
- www.sitepoint.com

Tidningar som nämnts
- PHP|Architect (Kombinerad pdf och tidnings -prenumeration för ca 250SEK/år)

Certifieringar som nämnts
- Zend PHP 5 Certifications (De erbjuder dels en "Zend Framework Certification" och dels en "PHP 5 Certification")

Några heta tips på saker som kan va bra att tänka på när man stöter på problem är:


Förebyggande tips (för att underlätta att hitta fel och överblicka vad man åstadkommit):
- Använd en bra editor med färgkodning anpassad efter dig för att lättare få överblick och se vad som gör vad (och många hjälper även till med "rättstavning" vilket kan vara till stor hjälp). En liten editor-guide finns längre ner.
- Hittills har två bra sätt kommit fram hur man kan strukturera sin kod och lättare hantera den, både under uppbyggnad, körning, felletande såväl som uppdatering m.m. Jag personligen föredrar nog klassvarianten men båda sätten verkar tämligen lättöverblickbara och det handlar nog mer om smak än vilken som är bättre än den andre. Generellt sett så handlar det om att inte ha för långa kodslingor i samma "del". Praktiskt innebär det följande två olika varianter:
-- Dela upp koden i flera små filer med beskrivande namn, addContact.php, editContact.php, deleteContact.php etc etc
-- Håll alltid ALL kod som har med EN sak att göra i EN fil. Tex. med klasser har man en klass som innehåller allt som har med en sak att göra, exempelvis en klass "Contact" som innehåller metoderna "Save", "Delete" osv.
- Använda sig av indrag
- Använda sig utav kommentarer på rätt ställen, exempelvis om man använder sig av en objektorienterad programmeringsstil kan varje funktion ha en kommentar ovan som beskriver vad funktionen gör och hur den fungerar (utan att beskriva hur den gör det den gör, precis som referenslistan på php.net). Det är generellt sätt bättre att använda för mycket kommentarer än för lite (de flesta använder det inte alls vilket kan ge oerhörda problem att läsa sin egen kod) men att bara skriva kommentarer för kommentarernas skull är inte bra, då blir det istället lätt överflödigt och oläsligt.

Övergripande tips:
- Ge problemet ordentligt med tid, har du inte suttit några timmar och klurat själv och testat lite så är det bara av ren lathet och dumhet som man låter andra folk lösa saker åt än (man lär sig oerhört genom felsökning)
- Kolla manualen (www.php.net, sök på funktioner) och försök förstå, dokumentationen vet alltid mest och bäst (i 99% av fallen iaf Wink, den är din bibel)
- Sök på google, google är din vän
- Sök på forum efter folk som haft samma eller liknande problem tidigare
- För MySQL-satser finns det mycket matnyttigt i dokumentationen, precis som php-dokumentationen så är den din MySQL-bibel.


Exekeveringsfel:
- Har jag fått detta felet förut och vad var felet då?
- Vilken rad ligger felet på, vilken koppling finns det mellan php's error-kod och det som står på raden?
- Väldigt ofta finns felet inte på den rad som PHP rapporterar felet på. Leta efter syntaxfel på närmaste raderna ovanför om du får meddelande som "missing ; at line 91" eller "expecting ) at line 205". Får du felmeddelande om "missing } at line x" så kan felet finnas mycket högre upp i koden än på närmaste raderna ovanför. (Men har man gjort ordentliga och korrekta indrag så ska det inte vara svårt att hitta felet då heller).
- Förenkla programmet och kommentera bort rader med de fel som uppstår.


Utdatafel:
- Hur går programmet i koden, rad för rad, vad händer egentligen och är det verkligen det som ska hända? Utdata-orsak, fundera på vad som egentligen gör vad (speciellt bra för nybörjare som inte riktigt vet vad som händer)
- Skriv ut saker lite här och där för att testa hur långt i skriptet du kommer, hur utskrifterna förhåller sig till varandra, en while-sats kanske körs några gånger mer eller mindre än vad du hade beräknat att den skulle?
- Skriv även gärna ut variabler bara för att se att dom verkligen har blivit satta, eller för att se värdet på dom. Genom att se detta kan man utesluta och ändra mycket.


Jag är medveten om att detta är mycket lathet av mig att inte orka sitta och rätta andras kod och det finns säkerligen dom som finner nöje med detta men dels så som jag skrivit innan, man lär sig oerhört mycket av felsökning och genom att lokalisera ett problem så kan man skriva mer precisa frågor i forumet och får då bättre och enklare svar.

Alla tips och trix är väldigt välkomna, alla har vi våra egna varianter på hur vi gör när vi stöter på problem, skriv så skriver jag in i allt eftersom i orginalmeddelandet!


Editor-guide
PHP Designer - En editor jag själv rekomenderar, har många bra/enkla/vettiga funktioner med en väldigt stark inriktning på PHP-utveckling. Den jag personligen rekomenderar för relativt strikta PHP-utvecklare. Finns både som free trial och som betalvariant.
SciTe En mer allmän editor som inte alls har sitt fokus mot PHP, inte så mycket funktioner och således inget krångel. För personer som söker något som fungerar i alla väder och aldrig krånglar till det hela utan fokuserar endast på din kod så är detta den editorn jag personligen rekomenderar. Bygger på Scintilla och är deras egna (exempel på) texteditor. Helt gratis.
Notepad++ - En väldigt vanlig editor i PHP-kretsar som är byggd på Scintilla. Helt gratis.

Senast ändrad av kaffesump den 2008-10-13 20:52, ändrad totalt 12 gånger
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Mangelimang



Medlem i: 4889 dagar
Från: Karlstad
Status: Offline



#472951
Inlägg Skrivet: 2007-03-26 18:28      Ämne: Citera

Skriv gärna ut variabler bara för att se att dom verkligen har blivit satta, eller för att se värdet på dom. Genom att se detta kan man utesluta och ändra mycket.

EDIT: När jag hade postat var den redan klistrad Razz
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Infamy
Inaktiverad



Medlem i: 4488 dagar

Status: Offline



#473380
Inlägg Skrivet: 2007-03-28 02:32      Ämne: Citera

sitepoint.com är det enda forumet där det finns en php-del som höjer sig över "HUR GÖR MAN EN COMMUNITY?!=?!?!?!"-folket. tyvärr ;(
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
gurgel



Medlem i: 6000 dagar

Status: Offline



#473388
Inlägg Skrivet: 2007-03-28 07:34      Ämne: Citera

kaffesump: tack för ett bra inlägg!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida ICQ-nummer
kaffesump



Medlem i: 4537 dagar
Från: Göteborg
Status: Offline



#473466
Inlägg Skrivet: 2007-03-28 14:39      Ämne: Citera

Tack för alla svar och för kritiken! Smile
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
fredd



Medlem i: 4865 dagar

Status: Offline



#477757
Inlägg Skrivet: 2007-04-10 21:23      Ämne: Citera

Inte ha för långa kod slingor..
(Dela hellre upp koden i flera små filer..med beskrivande namn.. addContact.php, editContact.php, deleteContact.php etc etc)
Använda sig av indrag..
Använda sig utav en massa kommentarer..

Ojsan detta blev kanske lite mer allmänt än vad jag tänkte mig från början men om man håller sig till dessa grundregler så kommer man långt..
Bra tråd Kaffesump..
 

_________________
BIOS: Keyboard error or no keyboard present: press F1 to continue
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Soundman



Medlem i: 5667 dagar
Från: :)
Status: Offline



#480253
Inlägg Skrivet: 2007-04-19 00:32      Ämne: Citera

Mycket bra inlägg.

Finns annat att ta upp som föregående talare skrev.

Men tack för att den här tråden blev klistrad.


edit: dålig svenska :D
 

_________________
"Ja grafik är ju också bra att kunna"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
kaffesump



Medlem i: 4537 dagar
Från: Göteborg
Status: Offline



#480465
Inlägg Skrivet: 2007-04-19 21:01      Ämne: Citera

Med rädsla för att vara lite tjatig så än en gång, tack för all positiv kritik och återigen, all feedback (negativ såväl som positiv) och alla bidrag är så hjärtligt välkomna! Smile
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
bitcomplex



Medlem i: 4457 dagar
Från: Skåne
Status: Offline



#485055
Inlägg Skrivet: 2007-05-04 10:07      Ämne: Citera

Citat:
- Inte ha för långa kodslingor (Dela hellre upp koden i flera små filer med beskrivande namn, addContact.php, editContact.php, deleteContact.php etc etc)


Just det exempel du tar upp håller jag inte alls med om. För många korta filer blir betydligt mer oöverskådligt än filer med mycket kod i - så länge koden är strukturerad. I ditt exempel så är det ju givet att det ska vara en fil:

PHP:
1:
 
2:
class Contact {
3:
    private name;
4:
    ...
5:
    public function save() //istället för add
6:
    // för att ändra propertyn $name. lägg till ett kall till save()-metoden för att uppdatera
7:
    public function setName($name) [ $this->name $name; }
8:
    public function delete()
9:
    ....
10:
}
11:
 

Håll alltid ALL kod som har med EN sak att göra i EN fil.



Citat:
- Använda sig utav en massa kommentarer..

Använd dig av BRA kommentarer - inte många. Har du tänkt på hur oläslig kod blir när det tycks in kommentarer överallt. Sätt en (javadoc)kommentar innan en funktion/klass/metod där du beskriver allt vad som görs i funktionen/klassen/metoden. Skriv sedan koden på ett självförklarande sätt. Och måste du göra något underligt (som inte är självklart) för att få din kod att fungera som tänkt så slänger du in en liten kommentar vid underligeheten. I övrigt, undvik kommentarer. Det finns ingen vits till något som det här:
PHP:
1:
 
2:
/* Om användaren finns, ska vi köra denna koden */
3:
if ($user->exists()) {
4:
   ...
5:
 



Tillägg till exekveringsfel
- Väldigt ofta finns felet inte på den rad som PHP rapporterar felet på. Leta efter syntaxfel på närmaste raderna ovanförom du får meddelande som "missing ; at line 91" eller "expecting ) at line 205". Få du felmeddelande om "missing } at line x" så kan felet finnas mycket högre upp i koden än på närmaste raderna ovanför. (Men har man gjort ordentliga och korrekta indrag så ska det inte vara svårt att hitta felet då heller)
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Wedge
Administratör



Medlem i: 6146 dagar
Från: Järfälla
Status: Offline



#485060
Inlägg Skrivet: 2007-05-04 10:23      Ämne: Citera

Klasser är jättebra, men också i många fall ren overkill.

Det är inte heller alla som befinner sig på en sådan nivå att de ens behärskar klasser, än mindre klarar att koda den dispatcher som behövs för att skapa exempelvis kontaktobjektet med rätt argument och anropa rätt metod(er).

Ibland kan flera filer med var sin enkel uppgift, kodad rakt uppfrån och ned utan krusiduller vara bättre.

Klasser är bra, och klasser är en mindre katastrof. Det beror på situationen. Vem man är, när man är det och varför... Wink
 

_________________
I am Groot
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
bitcomplex



Medlem i: 4457 dagar
Från: Skåne
Status: Offline



#485064
Inlägg Skrivet: 2007-05-04 10:32      Ämne: Citera

Jo, håller med dig till viss del Wedge. Men man kan applicera mitt tänkande utan OOP också. Började med programmering i C. Och fick då lära mig strukturerad C-programmering. Det går fint att samla all kod om en Contact i EN fil utan att det blir oöverskådligt.
Pratar vi istället om HTML-kodning så håller jag med om att man kanske ska ha olika sidor som ett formulär (tex) skickas till beroende på vad som ska göras. Jag är INTE en förespråkare för webbsidor som bara består av en index.php och "action"-variabler för att bestämma vad som ska skrivas ut...
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Wedge
Administratör



Medlem i: 6146 dagar
Från: Järfälla
Status: Offline



#485071
Inlägg Skrivet: 2007-05-04 10:47      Ämne: Citera

Man lär ändå få koda if-else-strukturer eller göra nån form av dispatcher som anropar funktioner då, så jag tänker inte hålla med om att enfilskonceptet generellt är bättre eller en bättre metod att organisera sin kod. Bara annorlunda.
Man kan göra det snyggt och bra på båda sätten.
 

_________________
I am Groot
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
kaffesump



Medlem i: 4537 dagar
Från: Göteborg
Status: Offline



#485205
Inlägg Skrivet: 2007-05-04 17:24      Ämne: Citera

bitcomplex: Tack för den klockrena (och väldigt konstruktiva!) feedbacken, tusen tack! Jag har uppdaterat och pillat lite så att dina välgrundade åsikter nu finns med att beskåda för oss alla! Smile

Angående kommentarerna så var det nog inte så jättegenomtänkt när jag tryckte dit den punkten, mer än tanke som sitter i mitt bakhuvud att många (med dom naturligtvis jag själv) kommenterar alldeles för lite och då blir den naturliga reaktionen att tjata lite på folk att kommentera mer och det är i alla fall i min åsikt bättre att kommentera lite för mycket än för lite även ifall det tyvärr brukar bli för lite. Naturligtvis har du rätt i att man inte ska kommentera onödigt mycket, kommentarerna är ju där för att ge en förståelse av det program/kodbit man gjort främst i syfte att vem som helst med grundläggande förståelse för språket ska kunna modifiera både sin egen kod och den kod man själv skrivit för sina egna behov men även för att kunna uppdatera och hitta error.

Angående strukturbiten, många små filer med en funktion per fil kontra klassvarianten eller alla funktioner rörande en sak i en fil tycker jag att det mest vesäntliga är att man delar upp koden på ett vettigt sätt så att den inte blir oöverskådlig, svårförståelig osv. Jag skulle kunna tänka mig båda varianterna (men är förnärvarande lite mer sugen på klassvarianten då den mer lockat det senaste och känns mer objektorienterad vilket har visat sig allt viktigare för mig i mitt kodande). Dock så tycker jag inte att en fil nödvändigtvis skulle behöva innehålla en sak och dess funktioner (så som du menar med add, delete, save -funktioner) utan man skulle kunna ha alla dessa i filer i en katalog istället vilket också borde ge en väldigt bra överblick. Och är man inte, precis som Wedge påpekat, så bra på objektorienterad programmering/klassprogrammering så kanske detta är lättare och ändå ger samma strukturella "poäng".

Bra diskussion, love it! Precis detta ja var ute efter när jag startade tråden Smile

(PS. sry att d ble så långt... :D svårt o hålla sig när man vill vara kort och koncis i huvudmeddelandet)
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
bitcomplex



Medlem i: 4457 dagar
Från: Skåne
Status: Offline



#501553
Inlägg Skrivet: 2007-07-05 08:44      Ämne: Citera

Jag skulle vilja rekommendera sajten och magasinet PHP|Architect. Det jag läst i deras tidning hittills har varit riktigt matnyttigt. En pdf-årsprenumeration kostar ca 300.- . En pappersprenumeration av tidningen rekommenderar jag inte. Dels för att det är dyrare och tidningen måste skeppas från Kanada med allt vad det innebär och dels för att de inte ersätter tidningar som kommit bort i leveransen (då får man ladda hem pdf-en istället vilket kanske inte alltid är önskvärt).

Det finns ett gammalt gratisnummer, samt en del gratisartiklar att ladda hem om man är nyfiken. För gratisnummert behöver man dock registrera sig om man inte läser det här...

Edit: Det har kommit ett nytt gratisnummer. Årets maj-nummer... Två högintressanta artiklar. En om Unicode i PHP och en om input-validering (server- och clientside kombinerat riktigt snyggt)... Registrering krävs. Eller läs här
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Medda



Medlem i: 4268 dagar
Från: Sweden
Status: Offline



#527422
Inlägg Skrivet: 2007-10-24 23:20      Ämne: Citera

Ett jätte bra inlägg kaffesump!
mycket som man redan vet, men trots det är värt att läsa igen Wink
En sak som du skulle kunna lägga till är kanske en länk till Notepad++
Alla kanske inte vet vad ett bättre kodprogram än vanliga notepad som
följer med windows versionen är för något Laughing

Keep it up! Cool
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic