Cookie class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ervaren PHP Software Developer

Functieomschrijving Voor een toffe opdrachtgever in regio Breda zijn wij op zoek naar een medior PHP Developer met affiniteit met Laravel. Je komt te werken bij een uitdagende opdrachtgever met supergave klanten in een specifieke branche. Als PHP ontwikkelaar ben je samen met een vooruitstrevende team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het vernieuwen van informatiesystemen voor een specifieke branche. Je ondersteunt complexe uitdagingen van klanten. Vervolgens breng je hun wensen in kaart en vertaalt deze door naar maatwerk software. Affiniteit met Laravel is een pré. Om de klanten zo goed mogelijk te ondersteunen en snel in

Bekijk vacature »

C# .NET Software Ontwikkelaar

Functie omschrijving Gezocht: Software Developer C# .NET voor een dynamische organisatie! Ben je onlangs afgestudeerd of ben je toe aan de volgende stap in je professionele carrière? Lees dan verder! We zijn momenteel op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die onze eindklant in de regio Arnhem kan versterken. In deze functie werk je aan verschillende projecten en bezoek je vaak klanten. Je kunt een rol verwachten met veel uitdaging, diversiteit en verantwoordelijkheid. Bedrijfsprofiel Binnen welke organisatie ga je aan de slag? Je gaat werken bij een organisatie die zich specialiseert in het

Bekijk vacature »

Starter/junior PHP developer

Functie Momenteel zijn ze op zoek naar een junior PHP developer om het team te versterken. Als back-end developer bouw je de enterprise software die hun bedrijf helpt bij haar primaire processen. Afhankelijk van de omvang van het project werk je in een klein team aan een project. Ze hebben dagelijkse stand-ups en elke twee weken een scrumsessie, begeleid door de Scrum Master, waar je je ideeën kunt presenteren en samen met de Product Owner kunt werken aan het beste product. Ze vertrouwen enorm op hun eigen bedrijfssoftware. Dit geeft hun een groot voordeel ten opzichte van hun concurrentie. Zo

Bekijk vacature »

Senior Fullstack developer wanted! (C#, Java, Angu

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een softwarebedrijf gespecialiseerd in het ontwikkelen van logistieke software in omgeving Tilburg zijn wij op zoek naar een ervaren SQL database developer. Je gaat werken aan uitdagende, complexe projecten. Iedere klant/project betekent maatwerk in de database. Jouw werkzaamheden zullen er als volgt uit zien: Je bent verantwoordelijk voor de gehele ontwikkelstraat. Van architectuur tot ontwikkeling Je gaat je bezig houden met het ontwerpen en ontwikkelen van MS SQL server databases. Je gebruikt hiervoor T-SQL als programmeer laag. Je begeleidt als lead developer de projecten bij klanten van A – Z. Je sluit aan bij meetings met klanten,

Bekijk vacature »

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 »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

C# .NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »

PHP Developer - Draag bij aan de maatschappij!

Bedrijfsomschrijving Wil jij als applicatieontwikkelaar deel uitmaken van een gedreven ontwikkelteam en werken aan innovatieve producten? Dan hebben wij dé uitdaging voor jou! Wij zijn op zoek naar een enthousiaste collega die samen met ons de technische ondergrond van onze producten verder wil ontwikkelen met behulp van PHP. Met jouw expertise geef je de finishing touch aan onze producten om jezelf steeds opnieuw weer te verrassen. Functieomschrijving Bij ons staan innovatie en creativiteit centraal. Wij zijn op zoek naar een enthousiaste PHP ontwikkelaar die nieuwe ideeën en inzichten kan inbrengen en daarmee zichzelf en het team verder kan laten groeien.

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

PHP developer (Laravel/Vue.js)

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer start jij in een development team met twee ervaren software ontwikkelaars. Jouw persoonlijke ontwikkeling is voor ons erg belangrijk en jij gaat dan ook meelopen met onze Senior .NET ontwikkelaar die jou met zijn kennis en ervaring een goede begeleiding kan aanbieden. Als team zijn jullie verantwoordelijk voor het schrijven van software voor onze toonaangevende Automatiseringssystemen. Jij gaat aan de slag met de onderhoud van de kernsoftware, ondersteund de software van derden door het gebruik van onze webservices en als team zijn jullie verantwoordelijk voor het ontwikkelen van onze backend oplossingen. Wij maken op dit

Bekijk vacature »

Back-end developer

Dit ga je doen Development d.m.v. XQuery, JSON/XML en REST API's; Ontwikkelen aan een tof en complex zorgplatform; Koppelingen maken met de NoSQL database; Testen en documenteren van de ontwikkelde functionaliteiten; Samenwerking met andere front- en back-end ontwikkelaars. Hier ga je werken Voor een vooruitstrevende organisatie binnen de zorg in Den Haag zijn wij opzoek naar een Back-end Developer die ervaring heeft met o.a.XQuery en Vue.JS of daarin graag zou willen ontwikkelen. Je zal ontwikkelen aan een tof en complex zorgplatform en koppelingen maken met de NoSQL database. Ook het testen en documenteren van de ontwikkelde functionaliteiten behoort tot jouw

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

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

25/01/2025 15:08:24
 
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.