Cookie class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

Account Developer

Voor Bol.com zijn wij per direct op zoek naar een Account Developer voor 32-40 uur per week op het kantoor in Utrecht. Wil jij een directe bijdrage leveren door partners van de juiste data-inzichten te voorzien en via campagnes op nieuwe platformkansen en features te wijzen? Ben jij analytisch sterk en kun jij dit vertalen naar plannen en inspirerende gesprekken? Lees dan snel verder! wat bieden wij jou Salaris van €2400 - €2600 obv 40 uur Minimaal 6 maanden Werklocatie is Utrecht Werken bij bol.com wie ben jij Jij bent commercieel gedreven en weet altijd aan de juiste knoppen te

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Lasrobotprogrammeur/operator

Heb je interesse in trekkers en beschik je overvlijmscherpse precisie? Solliciteer dan op deze vacature! Als Lasoperator ben je vooral bezig met het maken van nieuwe lasrobotprogramma’s en het optimaliseren van bestaande programma’s, zowel online als offline (incl. het bedienen van de Lasrobots). Daarnaast draag je bij aan een optimaal rendement van de las robots. Verder heb je de volgende werkzaamheden: Het meewerken als operator c.q. Robotlassen niveau 2 (van complexe samenstellingen/halffabricaten), het om- en instellen van de diverse stations van lasmallen (productdragers), het afwerken van laswerk (verwijderen lasspetters en oxiden), het bewaken van de machineplanning (op bewerkingen) incl. de

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

Medior/senior front end developer React Sportsoftw

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van onze stack; Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor

Bekijk vacature »

.NET developer

Functie As a .NET developer you work together in a multidisciplinary development team with 1-2 Senior .NET developers, two front-end developers, Data Scientists and one UX designer. As a team you work on developing a Cloud based application and making this application more stable. Unit testing will also become very important in your new position. Together with the Senior .NET developer you will be responsible for developing the API. You work with a lot of data and occasionally there will also be data issues and some queries will have to be run. This means that you will work a lot

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Lead C++ Developer

De rol van Lead C++ Developer Als Lead C++ developer bij KUBUS word je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de desktop applicaties van BIMcollab, ons platform voor 3D model-validatie en issue-management bedoeld om de kwaliteit van 3D design-modellen voor gebouwen te verbeteren. Betere 3D modellen leiden tot betere gebouwen, dus zo draag je bij aan verduurzaming van de gebouwde omgeving met slimmer gebruik van materialen, minder verspilling en energie-efficiënte gebouwen. Een goede gebruikerservaring staat bij ons hoog in het vaandel; we gaan in onze ontwikkeling voor innovatie en kwaliteit. In je rol als

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Boskoop dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat technische klussen uitvoeren op locatie bij klanten.Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat software en webapplicaties ontwikkelen met behulp van de talen

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij een team met 12 programmeurs. Jullie zijn verantwoordelijk voor het huidige platform van deze organisatie. Als team werken jullie in tweewekelijkse sprints en starten jullie iedere dag met een stand-up. Jij werkt samen met jouw team aan het uitbreiden van het huidige platform door middel van nieuwe features. Daarnaast zorg jij er samen met jouw team voor dat het platform veilig is en gebruiken jullie de nieuwste technieken om deze veiligheid te waarborgen. Zo maken jullie gebruik van C# .NET, .NET Core, React, Azure, Kubernetes, ASP.NET, MVC. Jij gaat aan het werk in

Bekijk vacature »

SAP HANA Cloud Application Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12662 Introductie HANA Cloud Application Developer at a High Tech company. The company is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. This role is situated in the Big Data Analytics (BDA) Domain. The teams have mixture of young talent and senior specialists and have a

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 18:49:09
 
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.