Cache class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SQL database developer

Functie omschrijving Voor een software bedrijf in omgeving Breda zijn wij op zoek naar een SQL database ontwikkelaar. Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het huidige team developers zijn wij op zoek naar een SQL database ontwikkelaar. De klanten van dit groeiende bedrijf zitten door heel Europa en jouw werkzaamheden zullen er als volgt uitzien: Het samenstellen van de software op basis van de input vanuit de klant (T-SQL & C#.NET). Het bezoeken van klanten om de processen en mogelijkheden in kaart te brengen. Het ontwerpen van databases met T-SQL als programmeer laag.

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 »

.NET Developer Azure

Dit ga je doen Het ontwerpen en bouwen van diverse applicaties (C#, ASP.NET, MVC); Het ontwikkelen van Webservices (WCF); Het meewerken aan de transitie naar Azure; Het samenwerken met collega's binnen een Scrumteam en meedenken over de User Stories; Het bouwen van unittesten; Meedenken over nieuwe tooling, ontwikkelingen en technologieën in de markt. Hier ga je werken Je komt te werken bij een organisatie die verantwoordelijk is voor de ontwikkeling van verschillende portalen. Deze portalen worden gebruikt door diverse partijen en jouw taak is om ervoor te zorgen dat deze optimaal functioneren. Je wordt onderdeel van een Scrumteam en werkt

Bekijk vacature »

Fullstack developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Belastingdienst - Freelance Applicatieontwikkelaar

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Hybride. Kantoordagen in Utrecht, incidenteel in Apeldoorn Functieomschrijving: De afdeling IV – Generieke Voorzieningen – Interactie Online is onderdeel van de keten Interactie. De missie van de keten is: “het faciliteren van de interactie met alle burgers, bedrijven en hun vertegenwoordigers om hen in staat te stellen aan hun fiscale verplichtingen te voldoen en aanspraak te maken op hun rechten.” De afdeling Interactie Online heeft een belangrijke bijdrage binnen deze keten. Dit door het ontwikkelen

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 »

Junior full stack developer

Functie Als full stack developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Roosendaal, ontwikkel je als PHP Developer niet alleen webapplicaties, maar ben je verder ook gefocust op het continu inspelen op nieuwe trends en ontwikkelingen m.b.t software development. Naast het bouwen van webapplicaties, ontwikkelen zij ook webshops en websites voor gave opdrachtgevers! Wat ga je doen? Het schrijven van schone en efficiënte codes volgens het Symfony framework; Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het Symfony framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP / Laravel developer zal je in een klein team terecht komen. Wij zijn op zoek naar een echte specialist, iemand die de balans weet te vinden tussen techniek en perfectie. In de aankomende jaren wilt dit bedrijf flink groeien en daarom zijn ze op zoek naar jou! Wat ga je doen? Je draagt bij aan het ontwikkelen en onderhouden van bestaande webapplicaties die boordevol functionaliteit zitten. Deze applicaties worden gebruikt door de organisatie zelf en ook door de klanten. Inmiddels wordt er gewerkt met Laravel 8 en zijn er diverse koppelingen naar externe leveranciers. Verder zal

Bekijk vacature »

C# .NET Developer

Functie omschrijving Wij zijn op zoek naar een C# .NET Developer voor een leuke opdrachtgever in de omgeving van Hilversum! Voor een leuk bedrijf in de omgeving van Hilversum zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. Ben jij iemand die graag aan verschillende projecten werkt en het ook leuk vindt om bij klanten op bezoek te gaan? Dan ben jij de perfecte kandidaat! Deze functie is erg divers, je moet dus goed kunnen schakelen. Je komt te werken in een klein team van developers. Binnen het bedrijf hangt er een gemoedelijke informele

Bekijk vacature »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

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 »

.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. 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. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

High level C++ QT Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13486 Introductie Would you like to be involved in every aspect of software development for our exceptional products, from specification and design to testing and integration? If you're passionate about software development and eager to apply your programming skills to create customer-focused deliverables, then this is the perfect chance for you to expand your expertise. You can become a member of our Machine Control department's data-driven development team, where you'll design and build software solutions that optimize machine productivity. As a senior software design engineer, you'll participate in all phases

Bekijk vacature »
Joakim Broden

Joakim Broden

26/07/2012 14:53:45
Quote Anchor link
Ik heb de volgende class gemaakt, graag zou ik er feedback willen krijgen. Ben aan het oefenen met OOP en hoop dat de goede kant op ga.

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
<?php

    class Libary_Cache {
        /**
         * @acces Protected.
         * @var $_location String.
         */

        protected $_location    = null;
        
        /**
         * @acces Protected.
         * @var $_lifetime Integer.
         */

        protected $_lifetime     = 3600;

        /**
         * @acces Public.
         * @param $directory String.
         * @param $lifetime Integer.
         */

        public function __construct($directory, $lifetime = null) {
            $this->setLocation($directory);
            
            if (null !== $lifetime) {
                $this->setLifetime($lifetime);
            }
        }

        
        /**
         * @acces Protected.
         * @param $directory String.
         */

        protected function setLocation($directory) {
            if (!is_dir($directory)) {
                throw new Libary_Cache_Exception(sprintf('Failed to initialize %s class, directory \'%s\' does not exists.', __CLASS__, $directory));
            }

            
            $this->_location = (string) trim($directory, '\\').'\\';
        }

        
        /**
         * @acces Protected.
         * @param $lifetime Integer.
         */

        protected function setLifetime($lifetime) {
            $this->_lifetime = (integer) $lifetime;
        }

        
        /**
         * @acces Protected.
         * @param $key String.
         * @return String.
         */

        protected function getFile($key) {
            return $this->_location.'cache_'.md5($key);
        }

        
        /**
         * @acces Public.
         * @param $key String.
         * @param $data Mixed.
         * @param $lifetime Integer.
         */

        public function set($key, $data, $lifetime = null) {
            if (!$handler = fopen($this->getFile($key), 'w')) {
                throw new Libary_Cache_Exception(sprintf('Failed to initialize %s class, could not write \'%s\' to cache.', __CLASS__, $key));
            }

            
            $cacheData = serialize(array(
                'lifetime' => (time() + ((null === $lifetime) ? $this->_lifetime : (integer) $lifetime)),
                'data'      => $data
            ));
            
            fwrite($handler, $cacheData);
            fclose($handler);
            
            return $this;
        }

        
        /**
         * @acces Public.
         * @param $key String.
         * @return Mixed.
         */

        public function __get($key) {
            return $this->get($key);
        }

        
        /**
         * @acces Public.
         * @param $key String.
         * @return Mixed.
         */

        public function get($key) {
            if (!$this->exists($key)) {
                throw new Libary_Cache_Exception(sprintf('Failed to initialize %s class, could not read \'%s\' from cache.', __CLASS__, $key));
            }

            
            $cacheData = unserialize(file_get_contents($this->getFile($key)));
            
            if (($cacheData['lifetime'] - time()) < 0) {
                unlink($this->getFile($key));
            }


            return $cacheData['data'];
        }

        
        /**
         * @acces Public.
         * @param $keys String/Array.
         */

        public function remove($keys) {
            if (func_num_args() > 1) {
                $keys = func_get_args();
            }
else if (is_string($keys)) {
                $keys = array($keys);
            }

            
            foreach ($keys as $key) {
                if ($this->exists($key)) {
                    unlink($this->getFile($key));
                }
            }

            
            return $this;
        }


        /**
         * @acces Public.
         */

        public function clear() {
            foreach (glob($this->_location.'cache_*') as $cacheFile) {
                unlink($cacheFile);
            }

            
            return $this;
        }

        
        /**
         * @acces Public.
         * @param $key String.
         * @return Boolean.
         */

        public function exists($key) {
            return (file_exists($this->getFile($key))) ? true : false;
        }
    }

    
?>
Gewijzigd op 27/07/2012 10:20:00 door Joakim Broden
 
PHP hulp

PHP hulp

25/01/2025 15:05:42
 
- Raoul -

- Raoul -

26/07/2012 16:51:37
Quote Anchor link
Ik vind 'm zeer mooi gemaakt. Zou ik hem mogen gebruiken? ;-)
Gewijzigd op 26/07/2012 16:52:43 door - Raoul -
 
Joakim Broden

Joakim Broden

26/07/2012 16:57:15
Quote Anchor link
Natuurlijk mag je hem gebruiken (anders zette ik hem niet online), mits je weet wat hij doet. Want aan gewoon kopieer en plak heb je niks en leer je ook niks van. En ik ben geen expert in OOP dus ik wacht nog wel op feedback van gevorderde mensen hier op het forum ;-)
Gewijzigd op 26/07/2012 16:57:32 door Joakim Broden
 
Kris Peeters

Kris Peeters

26/07/2012 17:47:39
Quote Anchor link
Hertog Jan op 26/07/2012 16:57:15:
... mits je weet wat hij doet. Want aan gewoon kopieer en plak heb je niks ...


Wel ja, eventueel kan je daar nog aan werken.
Extra documentatie met uitleg over de bedoeling van de class en van de methodes.
En ook zeker @return in je documentatie opnemen.

Maar ik begrijp dat je toch eerst een ander soort commentaar wil horen.

---

EDIT: oh, sorry, ik zie dat je enkel de return niet documenteert als je $this terggeeft.
Dit is om aan chained linking te doen, veronderstel ik.
Gewijzigd op 26/07/2012 17:50:05 door Kris Peeters
 
Joakim Broden

Joakim Broden

26/07/2012 18:06:32
Quote Anchor link
Alle commentaar is welkom, hoe meer feedback hoe beter.

En inderdaad als ik $this return documenteer ik dat niet en dat is inderdaad voor chained linking. Zodat ik bv dit kan doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$cache->removeCache('key1')->removeCache('key2');

ipv
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$cache->removeCache('key1');
$cache->removeCache('key2');


Misschien is het handig om dit ook met een array te maken? Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$cache->removeCache(array('key1', 'key2'));
Gewijzigd op 26/07/2012 18:07:27 door Joakim Broden
 
Wouter J

Wouter J

26/07/2012 18:12:24
Quote Anchor link
Dat laatste is zeker makkelijker.
Gewijzigd op 26/07/2012 18:12:51 door Wouter J
 
Kris Peeters

Kris Peeters

26/07/2012 18:17:18
Quote Anchor link
Wel ja, dit laatste is een goede vraag.

Ik zie een aantal mogelijkheden.
- removeCache standaard een array geven
- Een extra methode removeCaches aanmaken, die intern removeCache aanroept.
- removeCache slim genoeg maken zodat je zowel 1 key als string kan geven als een array

Dit zou zeker alle drie werken, maar wat is principieel gezien meer de OOP way?
(Ik ben ook niet echt de beste referentie wat OOP betreft)
 
Joakim Broden

Joakim Broden

26/07/2012 18:24:41
Quote Anchor link
Ik heb er een extra functie bij gemaakt die removeCaches heet die je een array mee geeft en die functie roept mbv een foreach removeCache aan. Ik heb voor deze methode gekozen ivm de naamgeving. met removeCaches weet je dat je meerdere caches verwijderd en met removeCache weet je dat je maar 1 verwijderd. Wel heb ik voor de zekerheid een check op removeCaches gezet om te kijken of er wel een array is mee gegeven als argument.

En Wouter heb jij eventueel nog feedback wat betreft OOP? :-D
 
Wouter J

Wouter J

26/07/2012 19:11:35
Quote Anchor link
Hmm, ik vind denk ik de laatste method een mooiere: Kijk of er een array of string meegegeven is of misschien wel meerdere argumenten. Een beetje zoals dit:
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
<?php
function foo($caches) {
    if (1 < $args = func_num_args()) {
        // meerdere argumenten
        $caches = func_get_args();
    }
elseif (is_array($caches)) {
        // array
        $caches = $caches;
    }
else {
        // string
        $caches = array($caches);
    }


    foreach ($caches as $cache) {
        // do something
    }
}


// mogelijkheden
foo('Hello');
foo(array('hello', 'world');
foo('hello', 'world');
?>
 
- Raoul -

- Raoul -

26/07/2012 23:27:36
Quote Anchor link
Hertog Jan op 26/07/2012 16:57:15:
Natuurlijk mag je hem gebruiken (anders zette ik hem niet online), mits je weet wat hij doet. Want aan gewoon kopieer en plak heb je niks en leer je ook niks van. En ik ben geen expert in OOP dus ik wacht nog wel op feedback van gevorderde mensen hier op het forum ;-)


Bedankt! Ik weet wel hoe caching werkt, maar ik heb simpelweg geen tijd om zo'n klasse zelf te schrijven :-)
 
Joakim Broden

Joakim Broden

27/07/2012 10:19:39
Quote Anchor link
oke Wouter ik heb dat er van gemaakt ;-) en heb de namen van setCache, getCache etc veranderd naar set, get etc.

Zie beginpost voor volledige code.
 
Reshad F

Reshad F

27/07/2012 10:43:20
Quote Anchor link
ik zou ook Library_cache doen ipv Libary_cache :)
 
Joakim Broden

Joakim Broden

27/07/2012 10:44:32
Quote Anchor link
;-) Typefoutje, danke
 



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.