Gå til innhold

[Løst] Objekter/instanser holder seg ikke fra side til side? (OOP)


Anbefalte innlegg

I loginsiden min (login.php) oppretter jeg et objekt/instans med variabler som inneholder info om brukeren (firstname,lastname osv..) hentet fra DB-en. Og etter login redirecter jeg til en ny php side. Her ser jeg altså at jeg mister infoen i objektet. Er det sånn at man mister objektene når man bytter side?? Er eneste løsningen da å lagre det i SESSION(/cookies)?

Er ikke så vandt til å programmere for web...

Lenke til kommentar
Videoannonse
Annonse

overgangen vanlig -> web er litt spesielt med det samme.

 

Viktig å huske en ting. Hver side som vises er mer eller mindre som om man startet programmet, det genererer output, programmet avsluttes, og output blir sendt til klienten. For å skille på hvem som er hvem, så pleier man å sette en cookie i browseren, og lagre en session array lokalt som blir knyttet til en ID plassert i tidligere nevnt cookie.

 

Uansett, det som er viktig å huske på er at programmet på serveren ikke ligger og kjører (i de fleste tilfeller), men blir startet for hver visning.

Lenke til kommentar

Ah ok! Min SESSION nå er trøkka full av forskjellige variabler. Bør vel egentlig organisere det litt med arrays.. Da er det vel bare å bruke $_SESSION['arraynavn','variable'] for å få tilgang til en array i en array? (siden SESSION selv er en array..)

 

Litt nysgjerrig på hva man gjorde før i php når man ikke hadde SESSION da :hmm: Lagra alt i cookies liksom?

Lenke til kommentar

Tja, tror PHP alltid har hatt en slags session. Før det så gjorde man ganske mye rart, egentlig :)

 

Og cookies har ikke alltid vært standard. Ene løsningen var en session id variabel man hengte på i GET format på hver URL man lagde..

 

Og når det gjelder session, så er det veldig god ide å ha en struktur på den, ja :D

Lenke til kommentar

Det er bedre for ytelsen å hente ut informasjon av db enn å lagre drøssevis av ting i sessions. Pleier vanligvis bare å ha brukerid, passord-hash og en unik sessionid lagret i sessions/cookies. Alt annet er totalt unødvendig og fører til mer herk enn fordeler.

  • Liker 2
Lenke til kommentar

Ja er jo egentlig enig i det. Og man er sikker på å få det nyeste oppdaterte om det skulle vært gjort noen endringer i databasen. Men synes det er så mye enklere og bare assigne midlertidig ting til en variabel isteden for å måtte drive med queries, eller og måtte lage en funksjon for å håndtere det.

 

Fikk nettopp et problem nå med iframes. Viser seg at iframen har sin egen session! Noen måter å la den bruke "parent" sida sin session..?

Lenke til kommentar

Ja er jo egentlig enig i det. Og man er sikker på å få det nyeste oppdaterte om det skulle vært gjort noen endringer i databasen. Men synes det er så mye enklere og bare assigne midlertidig ting til en variabel isteden for å måtte drive med queries, eller og måtte lage en funksjon for å håndtere det.

 

Fikk nettopp et problem nå med iframes. Viser seg at iframen har sin egen session! Noen måter å la den bruke "parent" sida sin session..?

 

Ikke bruk iframe Oo Hvis det er en lokal fil: http://www.w3schools.com/PHP/php_includes.asp

Lenke til kommentar

Er det fy fy? :p Brukte det fordi jeg ville ha scrolling. Men tror jeg heller lager alt i en side (med php include) og bruker overflow:scroll i CSS istedet. Er bare litt synd og måtte gjøre om alt..(skal være klart til mandag)

Lenke til kommentar

Det er bedre for ytelsen å hente ut informasjon av db enn å lagre drøssevis av ting i sessions. Pleier vanligvis bare å ha brukerid, passord-hash og en unik sessionid lagret i sessions/cookies. Alt annet er totalt unødvendig og fører til mer herk enn fordeler.

 

Hah. Hah hah hah! Haheheheah! Muahahahahahhahahahahahha! Bwahahaheeehhehehehehohohoharrr!

 

Right.. Database queries er det du forsøker å gjøre så lite som mulig av. Spesielt queries som spres over flere tabeller.

 

Men, vel.. session implentasjonen i PHP er jo en smule hjernedød, så... Hvis man faktisk tenker på ytelse, er det ting a la memcache som gjelder.

 

Edit : PHP Session + memcache

Endret av Terrasque
Lenke til kommentar
  • 4 uker senere...

Ja er jo egentlig enig i det. Og man er sikker på å få det nyeste oppdaterte om det skulle vært gjort noen endringer i databasen. Men synes det er så mye enklere og bare assigne midlertidig ting til en variabel isteden for å måtte drive med queries, eller og måtte lage en funksjon for å håndtere det.

Derfor du burde bruke classes og/eller functions og legge det i separate-filer. Da kan du f. eks lage noe slik noe:

<?php
public function getUserInfo($id)
{
   	// connect to db etc.
   	// return an array
}
?>

Endret av Occi
Lenke til kommentar

Greit nok å ha static i et slikt tilfelle ja. Definisjonen på når man bør/skal bruke static kan defineres som:

Enhver metode som ikke bruker eller oppdaterer klassens instansvariabler, men får all den informasjonen den trenger gjennom parameterverdier, kan og skal settes opp (deklareres) som statisk.

 

Objekter (av klasser) er nyttige (og bør alltid brukes) for å holde struktur når det er snakk om større prosjekter med mye kode. Når man f. eks har en nettside med innlogging, nyhetssystem, galleri, adminlogin etc. så blir det kaos om man ikke legger alt inn i klasser som definerer "kategorien" til hva funksjonene gjøre i stedet for å stappe alt inn i en functions.php. Og kanskje minst like viktig har det også noe med sikkerhet (skille kode) samt det er mange muligheter med variable som kan være felles for funksjoner etc.

 

Om du har tenkt å lage store sider med mye PHP-kode så må du før eller siden lære deg hvordan klasser fungerer, og da vil du også forstå hvorfor det er så kjekt. Det finnes ingen gode argumenter mot bruk av klasser (såkalt Objekt Orientert Programmering (OOP)).

Lenke til kommentar

Hæ...? En klasse er jo en mal for et objekt du oppretter av klassen.

<?php
public class Foo
{
   	public function bar()
   	{
       	// do something
   	}
}

$foo = new Foo() // her er $foo et objekt av klassen Foo
$foo->bar(); // kaller på funksjonen bar() i klassen Foo
?>

Lenke til kommentar

Hæ...? En klasse er jo en mal for et objekt du oppretter av klassen.

I noen språk skiller man mellom klasser og moduler. Da bruker man klasser som blueprints for objekter, og moduler for å samle sammen funksjoner o.l. I PHP antar jeg man ikke har slike moduler, og da bruker man statiske klasser med statiske metoder til dette formålet.

Lenke til kommentar

Har ikke vært borti et språk med moduler (ikke at jeg har vært borti veldig mange språk i det hele tatt), men lurer på om ikke det kanskje er en del av MVC? Kan ikke noe særlig om dette temaet. Så ja, man bruker klasser for å holde styr på funksjoner, f. eks kan man ha en klasse kalt Admin som ikke egentlig trenger å være et objekt, men som inneholder en rekke funksjoner som kan kategoriseres som admin-funksjoner (f. eks ban bruker etc.).

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...