Cookie class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Front-end Developer

Wordt jij de nieuwe Front end specialist / developer? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel binnen als

Bekijk vacature »

C# Ontwikkelaar

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn ze op zoek naar een Technische front end developer. Momenteel hun front end back end team gescheiden aan het werk. Hier willen ze verandering in krijgen. Omdat ook veel interne applicaties ontwikkeld worden zoeken ze iemand die hen kan helpen om de interne applicaties te voorzien van de juiste Vue.js componenten. Zodoende willen ze de interactie tussen front end en back end versoepelen en de volgende stap binnen het platform gaan zetten. Deze componenten die jij ontwikkeld zullen in elk project gebruikt worden. Het back end team bestaat momenteel uit 8 ontwikkelaars

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een uitdagende werkgever in omgeving Waalwijk zijn wij op zoek naar een enthousiaste softwareontwikkelaar met kennis of ervaring met C# en SQL. In een uitdagende rol als C#.NET Developer werk je samen met een enthousiast en informeel team aan het bouwen van maatwerk software voor variërende klanten. Verder ziet jouw takenpakket er als volgt uit: Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je houdt je bezig met het ontwikkelen

Bekijk vacature »

C# Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Wil jij graag aan de slag als C# ontwikkelaar en jouw skills verder ontwikkelen? Zoek niet verder! Als C# ontwikkelaar ga je aan de slag met de volgende taken: (verdere) ontwikkeling van de software voor de interne processen binnen een .net omgeving; optimaliseren van de dataprocessing; ontwerpen en implementeren van zowel desktop- als web-programmatuur; ontwikkeling van tools ten behoeve van consultants en klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Den Bosch. Zij ontwikkelen business intelligence software voor een specifieke branche. Dit houdt in dat zij dashboards ontwikkelen

Bekijk vacature »

PHP Developer

As a PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible. How do I become a PHP Developer at Coolblue? As a PHP Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the job suits you. You enjoy doing this Writing vanilla PHP code. Working with

Bekijk vacature »

Front-end Developer

Dit ga je doen Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Mede-verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en API ontwerp; Participeren in diverse projecten t.b.v. optimalisatie van diverse applicaties; Het opzetten van API koppelingen met externe applicaties. Hier ga je werken Betreffende organisatie is gevestigd in de regio van Swifterbant en is al ruim 20 jaar lang bedreven in het ontwikkelen en aanbieden van

Bekijk vacature »

Medior/senior Front-end developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12946 Introductie We are looking for a Java Developer! Our client is one of the most innovation companies located within the Netherlands. We provide high quality software in a high-tech and challenging market. Functieomschrijving The department is specialized in creating and developing high quality software for manufacturing automation in a high tech environment. We strive to provide our clients with high quality software and deliver state of the art solutions in a variety of ways. Creating software infrastructure using Java SE / EE Create applications to fine tune manufacturing processes

Bekijk vacature »

.NET Developer

Functie omschrijving Ervaren .NET Developer gezocht! Wij zoeken een ervaren .NET developer die aan de slag gaat voor een softwarebedrijf in de regio Rhenen. In deze rol ben jij zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Daarnaast houdt jij je bezig met de nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en product specialisten om mooie producten te creëren. Bedrijfsprofiel Waar kom je te werken? Je komt te werken voor snelgroeiende softwareleverancier en allround dienstverlener. Klanten van deze

Bekijk vacature »

Software Developer (Junior functie)

Functieomschrijving Wij zijn op zoek naar een Software Developer! Sta jij in de startblokken om je carrière te beginnen en kan je niet wachten om toffe software te gaan ontwikkelen? Kortom, ben je onlangs afgestudeerd of sta je op het punt om je papiertje te behalen? Voor een IT dienstverlener dat gespecialiseerd is in Microsoft technologie zijn wij op zoek naar C#.NET Developers. Het bedrijf heeft meerdere klanten in regio Utrecht waar je permanent kan komen te werken. Kom je liever te werken bij een klein softwarebedrijf of bij een groot consultancy bureau? Dat is helemaal aan jou de keuze!

Bekijk vacature »

Pagina: 1 2 volgende »

Reshad F

Reshad F

08/07/2012 20:38:11
Quote Anchor link
Zoals in mijn andere topic te lezen. ben ik bezig met combinatie van sessie ( of hash ) en een user id een cookie te setten bij de gebruiker. hiervoor heb ik een cookie class gemaakt maar ik weet niet of deze zo goed is. iemand van jullie opmerkingen/tips?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
class Cookie
{
    /*
     * cookie $id
     */

    private $id = false;
    
    /*
     * cookie life $time
     */

    private $time = false;
    
    /*
     * cookie $domain
     */

    private $domain = false;    
    
    /*
     * cookie $path
     */

    private $path = false;
    
    /*
     * cookie $secure
     */

    private $secure = false;
    
      
    public function __construct($id, $time = 3600, $path = false, $domain = false, $secure = false)
    {

        $this->id = $id;
        $this->time = $time;                  
        $this->path = $path;
        $this->domain = $domain;      
        $this->secure = $secure;
    }

    
    public function store()
    {

        foreach ($this->parameters as $parameter => $validator)
        {

            setcookie($this->id . "[" . $parameter . "]", $validator->getValue(), time() + $this->time, $this->path, $this->domain, $this->secure, true);        
        }            
    }
    
    
    public function restore()
    {

        if (isset($_COOKIE[$this->id]))
        {

            foreach ($_COOKIE[$this->id] as $parameter => $value)
            {

                $this->{$parameter} = $value;
            }
        }  
    }
          
    
    public function destroy()
    {

        $this->time =  -1;
    }  
}
Gewijzigd op 08/07/2012 20:38:34 door Reshad F
 
PHP hulp

PHP hulp

28/11/2024 20:57:26
 
Eddy E

Eddy E

08/07/2012 21:17:38
Quote Anchor link
Ik zou $path en $domain omdraaien in volgorde aangezien het dan overeen komt met setcookie().

Ik vind regel 32-36 raar.
Je gooit in regel 7 tm 27 allerlei dingen op.
Dan ga je op regel 30 nogmaals wat waarde toekennen (false, maar dat waren ze al...)
En op 32 tm 36 kopieer je het nodeloos in $this.
Functie? Kan dus veel korter aangezien dit hetzelfde doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->id = $this->time =$this->path = $this->path = $this->domain = false;
?>

Wellicht niet volgens een OOP-opmaak, maar doet precies hetzelfde.

Daarnaast geef je wel hardcoded aan dat het http-only-cookies zijn. Waarom dat dan wel?

restore() is dus gewoon $_COOKIE uitlezen?
En waarom alles in $_COOKIE[123][...] (als $id=123) zetten? En dus niet gewoon direct in $_COOKIE? Er is toch maar 1 user-id met die cookie, als goed is.

Tevens kan je destroy-functie beter. Ik had laatst ook zoiets dat de sessie/cookie niet echt vernietigd werd.
Daar had ik dit voor nodig:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
    session_start();
    include("functions/saltmaker.php");
    include("functions/connect.php");
    include("functions/mres.php");
    include("functions/sql.php");
    
    if (ini_get("session.use_cookies"))
        {

        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
        }

    setcookie("loginhash", '', time()-10*365*60*60);
    session_destroy();
?>
 
Jeroen VD

Jeroen VD

08/07/2012 21:20:43
Quote Anchor link
Datamappers zijn classes die de verbinding tussen een applicatie en de buitewereld beheren.

Waarom gebruik je het hier niet als datamapper? Een cookie is tenslotte buitenwereld. Flexabiliteit wordt dan veel groter.
 
Reshad F

Reshad F

08/07/2012 21:34:34
Quote Anchor link
@Jeroen daar heb je gelijk in. de class die ik nu heb is ook niet heel breed in te zetten. maar omdat ik nog niet zo lang OOP gebruik ( ben nog aan het oefenen ) is het een beetje moeilijk inschatten hoe de classes eruit moeten komen te zien. :)

ik zal even wat wijzigingen doorvoeren en kijken wat er uit gaat komen!
 
Jeroen VD

Jeroen VD

08/07/2012 21:46:19
Quote Anchor link
Ik ook niet, maar tot nu toe hou ik de vuistregel aan: buitenwereld? Een datamapper
 
Wouter J

Wouter J

09/07/2012 09:04:32
Quote Anchor link
Dit is eigenlijk al een soort datamapper. Alleen i.p.v. dat je nu van een object naar een DB zorgt zorg je nu dat je van een Waarde naar een Cookie. Die waarde komt als het goed is weer uit een object, dus je hebt een soort datamapper. Niet alles hoeft met datamappers, ik ben met dit soort storage objecten ook erg tevreden.

Reshad, ik heb een paar vragen voor je voordat ik in ga op je script:
Wat is je stappenplan hoe je tot deze code bent gekomen? Ben je meteen begonnen met het schrijven en ben je daarna weer allemaal dingen gaan herschrijven totdat het er wel goed uitzag? Of heb je eerst nagedacht en daarna pas geschreven?
 
Reshad F

Reshad F

09/07/2012 10:54:40
Quote Anchor link
Om eerlijk te zijn het eerste.. maar ik heb het nu weer herschreven naar een meer flexible class

ik heb het echt heel simpel gehouden en hij is wel langer nu maar ik denk dat ik die setters ook in de construct kan plaatsen alleen weet ik niet zeker of het goed is zo.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php

class Cookie
{
    /**
     * Cookie name - the name of the cookie.
     * @var bool
     */

    private $name = false;

    /**
     * Cookie value
     * @var string
     */

    private $value = "";

    /**
     * Cookie life time
     * @var DateTime
     */

    private $time;

    /**
     * Cookie domain
     * @var bool
     */

    private $domain = false;

    /**
     * Cookie path
     * @var bool
     */

    private $path = false;

    /**
     * Cookie secure
     * @var bool
     */

    private $secure = false;

    /**
     * Constructor
     */

    public function __construct() { }

    /**
     * Create of Update cookie.
     */

    public function create() {
        return setcookie($this->name, $this->getValue(), $this->getTime(), $this->getPath(), $this->getDomain(), $this->getSecure(), true);
    }


    /**
     * @return mixed
     */

    public function get(){
        return $_COOKIE[$this->getName()];
    }


    /**
     * @return bool
     */

    public function delete(){
        return setcookie($this->name, '', time() - 3600, $this->getPath(), $this->getDomain(), $this->getSecure(), true);
    }



    /**
     * @param $domain
     */

    public function setDomain($domain) {
        $this->domain = $domain;
    }


    /**
     * @return bool
     */

    public function getDomain() {
        return $this->domain;
    }


    /**
     * @param $id
     */

    public function setName($id) {
        $this->name = $id;
    }


    /**
     * @return bool
     */

    public function getName() {
        return $this->name;
    }


    /**
     * @param $path
     */

    public function setPath($path) {
        $this->path = $path;
    }


    /**
     * @return bool
     */

    public function getPath() {
        return $this->path;
    }


    /**
     * @param $secure
     */

    public function setSecure($secure) {
        $this->secure = $secure;
    }


    /**
     * @return bool
     */

    public function getSecure() {
        return $this->secure;
    }


    /**
     * @param $time
     */

    public function setTime($time) {
        // Create a date
        $date = new DateTime();

        $date->modify($time);

        $this->time = $date->getTimestamp();
    }


    /**
     * @return bool|int
     */

    public function getTime() {
        return $this->time;
    }


    /**
     * @param string $value
     */

    public function setValue($value) {
        $this->value = $value;
    }


    /**
     * @return string
     */

    public function getValue() {
        return $this->value;
    }
}


?>


ook heb ik met behulp van datatype de datatypes toegevoegd omdat ik zag dat grote frameworks er ook gebruik van maken.
Gewijzigd op 09/07/2012 10:55:36 door Reshad F
 
Wouter J

Wouter J

09/07/2012 11:04:41
Quote Anchor link
Je moet niet alleen datatype gebruiken, gebruik gewoon altijd PHPdoc. Dus met korte beschrijving, parameter beschrijving, exceptions beschrijving, return values, enz.

Nu zie je al meteen een paar dingen waarom je altijd eerst moet nadenken over OO en dan pas moet scripten:
- Je hebt je code overnieuw moeten schrijven omdat je er eerste toch niet goed genoeg bleek
- Je hebt niet geprogrammeerd naar een interface, waar je later problemen mee gaat krijgen
- Je hebt nu 1 object die de waarden van een cookie vast houdt en die het aanmaken en verwijderen van de cookie regelt. Dat kan natuurlijk niet, dat zijn 2 verantwoordelijkheden.
- Je hebt nu allemaal properties die nergens geset worden
- Je code is nu nog totaal niet flexibel als je straks wat anders wilt gebruiken.
 
Reshad F

Reshad F

09/07/2012 11:19:17
Quote Anchor link
- van fouten leer je :)
- moet ik dit eerst in een interface zetten altijd en vervolgens vertellen wat de klasse moet doen?
- hoe splits ik die verantwoordelijkheid van die 2?
- welke properties bedoel je?
 
Wouter J

Wouter J

09/07/2012 11:39:53
Quote Anchor link
>> van fouten leer je :)
Natuurlijk, van fouten leer je, maar de grootste fout waarvan je moet leren is dat je nu meteen bent begonnen met de code zonder enig nadenken. Dat is als een kip zonder kop zomaar wat doen en dat is nooit een succes.

>> moet ik dit eerst in een interface zetten altijd en vervolgens vertellen wat de klasse moet doen?
Je moet altijd boven alles een interface (of abstracte klasse) hebben. Zo kun je later makkelijk en snel controles uitvoeren en heb je heel veel mogelijkheden tot uitbouwen: Je kunt een Session klasse maken met het interface, een Database klasse, een TestKlasse die alleen maar waarden lokaal opslaat voor Unit testen, een File klasse, enz.

>> hoe splits ik die verantwoordelijkheid van die 2?
Nou, laten we eerst maar eens even bedenken wat de 2 verantwoordelijkheden zijn. Vervolgens welke properties en method bij de ene verantwoordelijkheid horen en welke bij de andere. Schrijf dit gewoon eens even uit als:
User
- name
- age
+ constructor(name)
+ setAge(age)
+ getName()
+ getAge()

>> welke properties bedoel je?
Alle properties van de klasse.
 
Reshad F

Reshad F

09/07/2012 12:10:54
Quote Anchor link
Oke wouter ik heb het nu zo

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

interface iCookie
{
    public function create();
    public function get();
    public function delete();
    public function setDomain();
    public function getDomain();
    public function setName();
    public function getName();
    public function setPath();
    public function getPath();
    public function setSecure();
    public function getSecure();
    public function setTime();
    public function getTime();
    public function setValue();
    public function getValue();

}


class Cookie implements iCookie
{
    // hier de inhoud van klasse Cookie
}

?>


heb ik het zo goed?

over het splits gedeelte.. moet delete() in een eigen klasse komen? ( met zijn eigen methods en properties)
 
Wouter J

Wouter J

09/07/2012 12:20:58
Quote Anchor link
Nee, niet echt. Want als je nu een Sessie object gaat maken, hoe ga je dat dan in dit ontwerp plaatsen?

Stel je voor dat je 3 verschillende opslag plaatsen hebt:
- Cookie
- Database
- Bestand

En je wilt die 3 overkoepelen met 1 interface die vastlegt welke methods ze sowieso alle 3 moeten hebben, wat ga je dan maken? Hoe gaat je interface dan heten? Welke methods komen daar dan in?
Gewijzigd op 09/07/2012 12:22:09 door Wouter J
 
Reshad F

Reshad F

09/07/2012 12:37:16
Quote Anchor link
hmm even simpel nagedacht zou mijn antwoord zijn

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
  +--------------------+
  |      Interface     |
  |--------------------|
  |    Id              |
  |    Name            |
  |                    |
  |                    |
  +--------------------+
 
Wouter J

Wouter J

09/07/2012 12:52:06
Quote Anchor link
Hmm, en dan nog wat verder nadenken. Je wilt dingen opslaan en weer dingen krijgen, welke methods horen daar dan bij? En wat zou een goede naam zijn voor het interface?
Tevens heb je nu weer een Entity object, iets wat een ding voorstelt. Probeer nu eens na te denken over een object dat echt alleen maar als doel heeft om dingen op te slaan en te krijgen en dus geen gegevens vasthoudt over wat hij opslaat, alleen maar dat simpele opslaan.
 
Reshad F

Reshad F

09/07/2012 13:01:48
Quote Anchor link
een set method en een get method.

ik zou het als iStorage benoemen i van interface en storage omdat het de interface van storage classes wordt ( cookie, database enz )
 
Wouter J

Wouter J

09/07/2012 13:26:53
Quote Anchor link
Kijk daar gaan we een heel stuk de goede kant op! Alleen de i als prefix vind ik niet mooi, aangezien een klassenaam altijd met een hoofdletter moet beginnen (volgens de algemene PSR-0 standaard). Ik zou het StorageInterface noemen, dat is de standaard voor interfaces.

Nu heb je dus een set en een get method, wat heb je nog meer met opslaan nodig dat je in alle mogelijke manieren van opslaan gebruikt?
 
Reshad F

Reshad F

09/07/2012 13:38:29
Quote Anchor link
ik zou niet weten wat hetzelfde is voor een Cookie als voor een Database

het enige wat ik nog zou kunnen bedenken is de time method en misschien een value method?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

interface StorageInterface
{
    public function id();
    public function name();
    public function set();
    public function get();

}


class Cookie implements StorageInterface
{
// hier cookie class
}
?>
 
Wouter J

Wouter J

09/07/2012 13:42:25
Quote Anchor link
Nee, want dan ga je weer verder met het Entity gedoe. Een object die dingen opslaat heeft geen tijd, naam of id.

Ik doelde meer op de CRUD methods: Create (set), Read (get), Update en Delete. Dat zijn volgens mij de methods die thuis horen in elke storage object.

Tevens raad ik je aan Cookie te hernoemen naar CookieStorage. Aangezien je die alleen hoort te zorgen voor het opslaan van de cookies, de rest van de cookies gaat in een eventuele Cookie object die dus alleen 1 cookie vasthoudt, een Entity dus.
 
Reshad F

Reshad F

09/07/2012 13:58:04
Quote Anchor link
Ahh Wouter ik snap al waar je naartoe wilt..(denk ik )

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                               +-------------------+
                               |  Storage Interface|
                               |-------------------|
                               |  Create method    |
                               |  Read method      |
                               |  Update method    |
                               |  Delete method    |
                               |                   |
           +-------------------+-------------------+-------------------+
           |  CookieStorage    | DatabaseStorage   | FileStorage       |
           |-------------------|-------------------|-------------------|
           |                   |                   |                   |
           |                   |                   |                   |
           |                   |                   |                   |
           |                   |                   |                   |
           |                   |                   |                   |
           +-------------------+-------------------+-------------------+
           |                   |                   |                   |
           |   Cookie extends  |  Database extends |  File extends     |
           |   CookieStorage   |  DatabaseStorage  |  FileStorage      |
           |                   |                   |                   |
           +-------------------+-------------------+-------------------+





Toevoeging op 09/07/2012 14:03:48:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

interface StorageInterface
{
    public function set();
    public function get();
    public function update();
    public function delete();
}


class CookieStorage implements StorageInterface
{
    
}


?>
 
Wouter J

Wouter J

09/07/2012 14:04:31
Quote Anchor link
Al heb je wel een hele geweldige manier van UML, het is denk ik wel wat ik wil inderdaad.

En deze subklassen (CookieStorage, ...) kunnen natuurlijk ook eigen functies hebben. Bij een FileStorage heb je bijv. nog methods nodig die aangeven waar het bestand staat en bij een DatabaseStorage moet je nog ergens een DB verbinding maken. Die horen er ook nog bij. Bij een SessionStorage moet je bijv. nog ergens session_start() plaatsen en ga zo maar door.
Bedenk nu dus welke extra methods de subklassen nog hebben bovenop de verplichte CRUD.

Tevens heb je nu al door hoe makkelijk het is als je eerst nadenkt? Je hebt nu een goed beeld van wat er allemaal gebeurd in je script, waar de verantwoordelijkheden liggen en straks heb je eigenlijk alles al! Je hoeft alleen nog maar de PHP code te schrijven die in de methods hoort, de rest heb je al allemaal uitgedacht!
 
Reshad F

Reshad F

09/07/2012 14:07:52
Quote Anchor link
haha het is inderdaad veel makkelijker als je er eerst over nadenkt. helaas wil ik altijd te snel waardoor ik meteen begin met scripten ipv alles uit te schrijven van HOE en WAT ik ga er even mee aan de slag en kijk wat eruit komt rollen!

Toevoeging op 09/07/2012 14:30:54:

Edit:

nog een vraagje Wouter, hoever moet ik nu in de Cookiestorage class gaan? wat moet er wel en wat moet er niet in kwa functionaliteit? zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<?php
class CookieStorage implements StorageInterface
{
    /**
     * Cookie name - the name of the cookie.
     * @var bool
     */

    private $name = false;

    /**
     * Cookie value
     * @var string
     */

    private $value = "";

    /**
     * Cookie life time
     * @var DateTime
     */

    private $time;

    /**
     * Cookie domain
     * @var bool
     */

    private $domain = false;

    /**
     * Cookie path
     * @var bool
     */

    private $path = false;

    /**
     * Cookie secure
     * @var bool
     */

    private $secure = false;

    /**
     * constructor
     */


    public function __construct() {

    }


    /**
     * Create or Update cookie.
     */

    public function set() {
        return setcookie(
                            $this->name,
                            $this->getValue(),
                            $this->getTime(),
                            $this->getPath(),
                            $this->getDomain(),
                            $this->getSecure(), true
                        );
    }


    public function get() {
        return $_COOKIE[$this->getName()];

    }


    public function update() {

    }


    public function delete() {

    }


    /**
     * @param $domain
     */

    public function setDomain($domain) {
        $this->domain = $domain;
    }


    /**
     * @return bool
     */

    public function getDomain() {
        return $this->domain;
    }


    /**
     * @param $id
     */

    public function setName($id) {
        $this->name = $id;
    }


    /**
     * @return bool
     */

    public function getName() {
        return $this->name;
    }


    /**
     * @param $path
     */

    public function setPath($path) {
        $this->path = $path;
    }


    /**
     * @return bool
     */

    public function getPath() {
        return $this->path;
    }


    /**
     * @param $secure
     */

    public function setSecure($secure) {
        $this->secure = $secure;
    }


    /**
     * @return bool
     */

    public function getSecure() {
        return $this->secure;
    }


    /**
     * @param $time
     */

    public function setTime($time) {

        $date = new DateTime();

        $date->modify($time);

        $this->time = $date->getTimestamp();
    }


    /**
     * @return bool|int
     */

    public function getTime() {
        return $this->time;
    }


    /**
     * @param string $value
     */

    public function setValue($value) {
        $this->value = $value;
    }


    /**
     * @return string
     */

    public function getValue() {
        return $this->value;
    }

    
}

?>

Gewijzigd op 09/07/2012 14:31:58 door Reshad F
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.