Just nu i M3-nätverket
Gå till innehåll

/randis

Medlem
  • Antal inlägg

    267
  • Gick med

  • Senaste besök

  1. Jag behöver nog en stund att reflektera och förstå hur du menar. Varför är det inte bra att ge tillgång till samma instans för flera klasser. Om Class1 gör något med Class2 så kan ju det vara ganska avgörande för vad Class3 får för resultat när den hanterar Class2. Detta är ju ett av syftena med peer-objekt som jag förstår det. Iaf i den Java vi fått lära hittills oss på Universitet och även så jag gjort i PHP tidigare, även om det kanske inte varit med kunskapen om att det är ett peer-objekt och mer specifikt hur de ska hanteras. Ett scenario som jag målar upp lite enkelt i pseudokod kan väl vara så enkelt som detta: Class1 { [indent]int instansVariabel Konstruktor() { instansVariabel = 1 } setInstansVariabel(arg) { instansvariabel = arg [/indent] } setInstansVariabel() { return instansVariabel [/indent] } Scenario 1 - alla får tillgång till samma instans - En instans skapas av Class1 -> Class1.instansVariabel == 1 - Class2 laddar in redan skapad instans och anropar Class1.setInstansVariabel(20) -> Class1.instansVariabel == 20 - Class3 laddar in redan skapad instans och anropar Class1.getInstansVariabel -> returnerar 20 Det jag kallar för "laddar in" skulle väl då kunna ske genom min tänkta "hubb", men jag hoppas exemplet är tydligt nog för att visa problematiken Scenario 2 - Instansen skapas vid behov -En instans av Class2 skapas -Class2 skapar en instans av Class1 -> Class1.instansVariabel == 1 -Class2 anropar Class1.setInstansVariabel(20) -> Class1.instansVariabel == 20 -En instans av Class3 skapas -Class3 skapar en instans av Class1 -> Class1.instansVariabel == 1 Med andra ord har inte Class3 kännedom om vad Class2 redan har gjort med Class1. Tja... Det är ju inte ens samma Class1. Och det är det stora problemet.
  2. Hej och tack för svaret. Singleton eller statiska metoder kommer inte att fungera som jag kan se det eftersom det mycket väl kan finnas flera instanser av denna "samling" av objekt. "Instansiera klassen och via instansen anropa metoder/egenskaper" - Tänker du då att jag instansierar dem inne i objektet genom get-metoder eller liknande? Problemet jag kan se då är väl isf att vi har följande scenario Någon typ av pseudokod class2 = class1.instansieraClass2(); class3 = class1.instansieraClass3(); class3.instansieraClass2(); Då har ju inte klass 1 och 3 samma instans av klass 2. Det går ju att lösa med ytterligare metoder som gör att de kan hämta instanser från varandra, men då vill ju jag tro att det här tänkta navet gör det betydligt enklare och mer lättförståeligt? hub = new Hub() class1 = hub.load("class1"); class2 = hub.load("class2"); class3 = hub.load("class3"); alla klasserna har en instansvariabel som håller hubben och metoderna i samtliga klasser kan då enkelt använda. class1 = hub.get("class1"); //om den redan finns laddad eller för den delen class1 = hub.load("class1"); //om den inte laddats tidigare alla klassernas konstruktor behöver ju kunna ta huben som ett peerobjekt men kanske inte obligatorskt. Är jag helt ute och cyklar?
  3. Hej! Jag sitter med ett "stort" antal klasser som har relationer till varandra. Inget ovanligt i sig. Men några saker som är viktiga: 1. Ingen av klasserna är beroende av någon av de andra klasserna för att fungera 2. I de flesta fall har de dock behov av att känna till andra klasser i den här samlingen för att kunna presentera vettig information för användaren. Låt säga att vi har klass1, klass2, klass3, klass4, klass5 Ibland behöver kanske klass1 och klass3 känna till varandra. Ibland kanske alla klasser behöver känna till varandra. Ibland kanske klass1 klarar sig själv. Detta gör att peerobjekt inte är särskilt användbart. Lösningen just nu är dock att den klass (Låt säga att det är klass1) som används oftast fungerar som ett "nav" och har möjlighet att ladda in övriga klasser och skickar sig själv som peer till de övriga klasserna. Det funkar ju, men klass1 är klart den största och tar mest plats. Finns det något designmönster som hanterar detta? Jag skulle kunna tänka mig ett nav/hub isf som kan heta classHub eller nått sådant. Ungefär som ett holder-object. Denna klass får helt enkelt vara en peer till alla de klasser som ingår i detta "nätverk" och har en metod för att ladda in klasser. Kanske inte hubben behövs alls utan det finns en annan lösning? Har letat lite efter ett befintligt mönster som beskriver detta. Inte hittat något. Är det så att jag får göra ett eget? Alltid trevligare med befintliga så andra kan förstå vad som händer. Tilläggas bör att just denna applikation är i PHP, men jag valde att presentera problemet här för jag gissar på att det är mer kvalificerat kunnande här och problemet borde kunna vara applicerbart i de flesta språk.
  4. Jag vet inte om det skulle ligga under webbserver egentligen men isf är ni välkomna att flytta den. Jag funderar på om det går att upptäcka par i en URL och få följande beteende: www.domain.com/page/useradmin/user/321 -> www.domain.com/index.php?page=useradmin.php&user=321 Det är ju inte så konstigt. Men säg att det ska med en parameter till www.domain.com/page/useradmin/user/321/extraparam/40 -> www.domain.com/index.php?page=useradmin.php&user=321&extraparam=40 Går det att lösa med en enda regel eller måste det göras en för varje? Är det isf bättre att slakta URI:n i PHP och extrahera nyckel/värde paren?
  5. Svar: Ja. Det verkar dock som många använder en array istället för att lättare kategorisera. Tänk själv: $index[description] = 'någon typ av beskrivning av något'; $error[description] = 'Beskrivning av ett fel'; Dessa skulle krocka annars. Det går ju så klart att ha $error_description vs $index_description. Antar att man får göra som man vill. Vettigt är väl att lägga till ett prefix dessutom för att minimera variabelkrockar $lng_index[] $lng_error[] Code Igniter använder den här metoden. Den är även vanlig i tutorial. Ett sätt är konstanter, men det ska vara långsammare. Ingen egen undersökning på det så jag låter det vara osagt.
  6. Hej! Jag håller på att bygga en flerspråkig sida och efter att ha läst runt på nätet verkar det bästa sättet vara att ha en språkfil för varje språk och del av sidan som inkluderas. Någon form av templates verkar också kunna vara en lösning, men jag är personligen inget fan av det än så länge. Någon åsikt i den frågan innan vi kommer till den riktiga? (Jag använder PHP) Hursomhelst skulle jag vilja ha webbadressen: www.sajt.se/en/ Istället för www.sajt.se/?lang=en Jag är HELT rudis på .htaccess och Apache i allmänhet så ni behöver lägga det på en väldigt låg nivå Hoppas någon kan hjälpa
  7. /randis

    Sessions

    Hej! Vad anser ni angående hantering av sessioner. Ska man ha ett alternativ till cookies? Mao i URL:en? Vilka tillåter inte cookies för att lagra sessionsid? Någon som har en bra idé för hur upplägget skulle se ut för att täcka upp båda om det nu finns anledning till det. Enligt PHP så fungerar bara querystring på relativa URI. Hur behandlar man då location forwarding i header? För den verkar ha svårt med relativa URL:er. Jag vill helst ha kunniga svar och inte "Jag tror att du kan göra såhär". Hoppas någon kan styra mig rätt. Jag behöver inte en komplett kodsnutt utan länk till lämplig artikel, pseudokod eller liknande
  8. Ja men det där ser väl inte så tokigt ut... Nej jag kör varken för Nordea eller Twitter Gillar bara att vara onödig och göra "rätt". Att det skulle bli en krock är nog näst intill obefintligt. Hur fungerar det med nästlade transactions? Är det möjligt? Och vad händer isf vid en rollback?
  9. Hej Försöker luska lite i hur det ska gå till att flytta en nod i ett MPTT-träd. 1. Göra plats för noden som ska flyttas. 2. Flytta noden. 3. Fylla igen tomrummet efter noden. Hur gör man för att eliminera risken för att någon håller på med samma sak och det blir pankaka av alltihopa när flera användare försöker ändra på trädet samtidigt? Har tittat lite på transactions och SELECT FOR UPDATE mm. Vilket fyller mitt syfte bäst? Jag gillar inte tanken på att tabellen ska vara låst för de som bara läser den. Idéer?
  10. Ja det är väl en fråga om tolkning. Man skulle ju kunna ha bara klassen site också. En statisk DbEngine skulle ju isf begränsa oss till högst en pågående itteration? Såvida de inte läggs i någon array eller så då. Eller har jag fel? Du har ju fortfarande hakat upp dig på hur du tycker att min orderklass ska se ut och inte svarat på min fråga som behandlar en metod för itteration över ett databassvar i en klass.
  11. mjo... Allt beror väl på hur objektorienterat man vill ha det antar jag. Men låt säga att jag listar betalmetoderna ett antal gånger på olika sätt på olika ställen så är inte en statisk klass som skriver drop downs särskilt bra. Jag kanske vill manipulera min betalmetodsklass till och med? Givetvis hade det kunnat gå att lösa så, men om tanken är att vara minnessnål så skulle jag inte ha en OOP approach på något över huvudtaget. Men vi kan väl ta ett annat exempel så det blir tydligare. Vi har ordern med dess varor. Där vill man kunna manipulera varorna. Ta bort, lägga till fler, ändra antal och priser osv. Så funktionen skulle bli "ListItems". Att jag kör in alla värden som en array beror på att jag inte vill använda en databasfråga för varje item. Låt säga att jag i ListItem hade en query som såg ut såhär: "SELECT id FROM orderItem WHERE orderId = 1202" och sedan anropar jag objektet med $OI = new orderItem($id) varpå konstruktorn i orderItem får göra en ny query för att hämta alla data. Men eftersom inget av de exempel jag listat är speciellt verkliga utan frågan gällde hur man löser problemet som jag listat i första posten så betackar jag mig för hur mina metoder och koden kan göras resurssnålare.
  12. Hej! Jag har länge funderat över hur man ska göra en objektorienterad lösning för alla de där metoderna som får namnet List****. Till exempel ListPaymentMethods i klassen Order. Så jag vill kunna göra något i stil med: $O = new order; while($PM = $O->ListPaymentMethods()) { echo $PM->GetName(); } Problemet är att hur jag än gör så kommer orderklassen behöva en hållare för databasresultatet. Något i stil med: class Order { private $holder = false; public function ListPaymentMethods() { if(!$this->holder) { $this->holder = mysql_query('SELECT whatever FROM whoever'); } if($row = mysql_fetch_array($this->holder)) { //Låt oss låtsas att konstruktorn för PaymentMethod accepterar en rad från databasen som argument. return new PaymentMethod($row); } return false; } } Det funkar ju helt okej. Men jag gillar inte att den kräver en property som stökar i min klass. En del objekt har ett större antal "List"-funktioner. Finns det bättre sätt att göra det på? Tittade lite på PBL och alla itterationer där, men hittade inget som hjälpte mig. Hur jag än vänder på det blir jag inte av med hållaren. Det skulle ju vara att stoppa den i någon statisk iterationsklass, men då är den ju inte inkapslad längre. [inlägget ändrat 2008-09-07 22:30:54 av /randis]
  13. är du i rätt katalog på ftp-servern?
  14. Det går att göra, men är en del arbete. Du behöver läsa på lite om hur ett mail konstrueras. I det här fallet blir det ju ett Multipart med olika mimetyper för olika delar av mailet. Som jag ser lösningen så lär du läsa in filen rätt kodad till en av delarna i mailet. Om det görs rätt kommer den att visas som en bifogad fil. Bilden finns alltså i mailet och är inte länkad in från din server. Jag har börjat skriva en mailklient i PHP tidigare. Jag har bara kommit till biten som tar hem och läser mail än, men jag vet ju iom det hur det i teorin måste ske för att skicka mail också. [inlägget ändrat 2008-03-28 11:27:46 av /randis]
  15. du har mellanslag efter name i dina formulärfält. använd print_r($_POST) för att se vad som finns i vektorn. Är den tom så har du ju iaf isolerat problemet till en mindre yta. När du ändå är nybörjare tycker jag att du ska lära in dig med XHTML istället. gemener för taggar, alltid avslutade taggar osv Om du använder dubbelfnuttar behöver du inte dela upp strängen echo "Välkommen $_POST['fnamn'] $_POST['enamn']!"; funkar lika bra. Jag använder dock alltid enkelfnuttar och delar upp strängen som i exemplet. Då behöver inte PHP tolka om det är ren text eller en variabel
×
×
  • Skapa nytt...