[OOP] Cache

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

E-Identity Developer met Projectleider Kwaliteiten

Functieomschrijving Voor de kamer van koophandel zijn we op zoek naar een E-Identity developer met projectleider kwaliteiten. Voor deze opdracht zoekt KVK een Informatieanalist met Technisch Projectleider en ICT developer kwaliteiten, met kennis van E-identity. We zoeken in de breedte en niet specifiek in de diepte qua skillset. Een Junior Projectmanager, een Junior Informatieanalist, een Junior Developer (full stack), een Junior Designer en een Junior ICT architect ineen, met een sterk gevoel van stakeholder management en planning vaardigheden. Door de internationale setting, én de realisatie van ontsluiting van en naar basisregisters toe zijn wij op zoek naar enige ervaring binnen

Bekijk vacature »

Software developer

Functie Momenteel zijn ze op zoek naar een Software developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP),

Bekijk vacature »

.NET Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

.NET developer

Functie Als .NET developer werk jij samen in een multidisciplinair ontwikkel team met 1-2 Senior .NET developers, twee front-end developers, Data Scientists en één UX designer. Als team werken jullie aan het ontwikkelen van een Cloud based applicatie en aan het stabieler maken van deze applicatie. Ook unit testing gaat erg belangrijk worden in jouw nieuwe functie. Samen met de Senior .NET ontwikkelaar wordt jij verantwoordelijk voor het ontwikkelen van de API. Jullie werken met veel data en incidenteel komen er ook data vraagstukken en zullen er wat queries gedraaid moeten worden. Dit betekend dat jij veel gaat werken met

Bekijk vacature »

C# .NET Developer

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Bennekom gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

TypeScript developer (tot € 6.000, - bruto pe

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een ervaren Typecript developer die niet alleen zichzelf verder ontwikkelt, maar het ook leuk vinden om op termijn meer junior collega’s op pad te helpen. Je zult aan de slag gaan met het migreren van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde aan User Experience en kiezen ze duidelijk voor kwaliteit i.p.v. snelheid. Je krijgt dus de ruimte om vanuit gedegen onderzoek te werk te gaan en het borgen van kwaliteit staat hoog in het vaandel.

Bekijk vacature »

Gezocht: .Net ontwikkelaars met een maatschappelij

Bedrijfsomschrijving Zoek jij als medior .Net ontwikkelaar een inspirerende werkplek bij een bedrijf met maatschappelijk verantwoordelijkheidsgevoel? Dan is deze vacature je op het lijf geschreven. De organisatie bestaat ruim 20 jaar en ze ontwikkelen in house applicaties waarmee de zorgsector enorm mee gebaat is. Jouw applicaties worden gebruikt door duizenden gebruikers waardoor je echt een waardevolle bijdrage kan leveren aan de maatschappij. Het bedrijf is zeer innovatief en vindt een goede werk/privé balans belangrijk. Je krijgt alle mogelijkheden om jezelf verder te ontwikkelen, je werktijden in te delen en daarnaast is het ook mogelijk om deels thuis te werken. Het

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een development team met één Senior .NET developer en één junior .NET developer. 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 moment veel gebruik van .NET met ASP.NET. Komend kwartaal gaan wij wel gedeeltelijk overstappen naar .NET Core. Verder werken wij ook met SOAP, REST, JSON, HTML5, CSS3

Bekijk vacature »

Ontwikkelaar Centrale Monitoring

Ontwikkelaar centrale Monitoring Functieomschrijving Wil jij een bijdrage leveren aan het onderhoud, opzetten en ontwikkelingen van technologieën van SSC-ICT, een van de grootste ICT-dienstverleners van en voor de Rijksoverheid? Je komt als monitorspecialist te werken bij team Operations Management Services. Dit team werkt aan het stabiliseren en waarborgen van een betrouwbare monitoromgeving voor 7 ministeries. Jij begeleidt het implementatieproces van de te monitoren technologieën, onder andere via management packs, connectoren en API's. Je hebt hiervoor veel contact met interne en externe klanten, die hun wensen op het gebied van monitoring aan jou doorgeven. Je beoordeelt deze wensen en komt met

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 »

Freelance JAVA / C# Developer

Functieomschrijving Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

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 »

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

Functie omschrijving Veel begeleiding en de kans om je verder te ontwikkelen als software developer. Dat kunnen wij jou bieden bij deelname aan deze leuke traineeship. Je krijgt een mentor toegewezen die jou alle kneepjes van het vak leert. Heb jij al wat ervaring als software developer? Daar worden wij heel blij van! Lees snel verder! Bedrijfsprofiel Als software developer neem je deel aan een trainings programma in de omgeving van Haarlem waar je persoonlijk wordt begeleidt, zodat je alle kneepjes van het vak leert. Aan de hand van jouw kennis en ervaring krijg je een persoonlijk opleidingstraject. Je gaat

Bekijk vacature »

JAVA Programmeur

Bedrijfsomschrijving Functieomschrijving We zoeken per direct enthousiaste software engineers die ons team komen versterken.We werken in DevOps teams met een sterk gevoel voor verantwoordelijkheid. Er wordt nauw samengewerkt met ons Business analyse team (BAT), met onze uitvoerende medewerkers en met de DevOps teams onderling binnen het domein. Het liefst hebben we veel en vaak interactie met onze interne en externe eindgebruikers om zo de juiste dingen te maken. We werken multidisciplinair in een dynamische omgeving. Achtergrond opdracht De Businesseenheid Examens is verantwoordelijk voor de logistiek van de staatsexamens Voortgezet (speciaal) onderwijs, Nederlands als 2e taal en schoolexamens. In het kader

Bekijk vacature »
Joakim Broden

Joakim Broden

23/04/2013 13:16:57
Quote Anchor link
Ik ben bezig met een Cache Class en ben tot dit gekomen (wil graag gebruik maken van drivers/adapters zodat ik bv kan cachen aan de hand van een bestand of database etc). Kan ik feedback krijgen op mijn onderstaande script zodat ik kan het kan verbeteren etc?

Index.php
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
<?php
    $cache
= new Cache\Cache(array(
        'driver'    => 'FileCache',
        'options'    => array(
            'file_hash'        => 'md5',
            'file_permissions'    => 0660,
            'file_extension'    => '',
            'file_indentifier'    => 'Oetzie_Cache_',
            'path'            => 'tmp/',
            'path_permissions'    => 0770,
            'expiration'        => 3600
        )
    ));

?>

Cache\Cache.php:
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
<?php
    namespace Oetzie\Framework\Cache;
    
    use Oetzie\Framework\ServiceManager\AbstractDriverManager as AbstractDriverManager;

    class Cache {
        /**
         * @acces protected.
         * @var string.
         */

        protected $driver;
        
        /**
         * @acces protected.
         * @var array.
         */

        protected $driverOptions = array();
        
        /**
         * @acces protected.
         * @var object.
         */

        protected $driverManager;
        
        /**
         * @acces public.
         * @param array $options.
         * @throws InvalidArgumentException.
         */

        public function __construct($options = array()) {
            if (!is_array($options)) {
                throw new Exception\InvalidArgumentException(sprintf('Failed to initialize %s (%s), options is not an array; recieved "%s".', __CLASS__, __FUNCTION__, gettype($options)));
            }
else {
                $options = array_merge(array(
                    'driver'    => $this->getDriver(),
                    'options'    => $this->getDriverOptions()
                ),
$options);
                
                $this->setDriver($options['driver'])
                     ->
setDriverOptions($options['options']);
            }
        }

        
        /**
         * @acces public.
         * @param string $driver.
         * @return self.
         */

        public function setDriver($driver) {
            $this->driver = $driver;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @return string.
         */

        public function getDriver() {
            return $this->driver;
        }

        
        /**
         * @acces public.
         * @param array $options.
         * @return self.
         */

        public function setDriverOptions($options) {
            $this->driverOptions = $options;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @return array.
         */

        public function getDriverOptions() {
            return $this->driverOptions;
        }

        
        /**
         * @acces public.
         * @param object $driverManager.
         * @return self.
         */

        public function setDriverManager($driverManager) {
            $this->driverManager = $driverManager;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @return object.
         */

        public function getDriverManager() {
            if (!$this->driverManager instanceof AbstractDriverManager) {
                $this->setDriverManager(new DriverManager());
            }

            
            return $this->driverManager;
        }

        
        /**
         * @acces public.
         * @param string $method.
         * @param array $event.
         * @throws BadFunctionCallException.
         * @return mixed.
         */

        public function __call($method, $event = array()) {
            $driver = $this->getDriverManager()->getDriver($this->getDriver(), $this->getDriverOptions());
    
            if (!method_exists($driver, $method)) {
                throw new Exception\BadFunctionCallException(sprintf('Failed to initialize %s (%s), method "%s" does not exists in the driver object "%s".', __CLASS__, __FUNCTION__, $method, $driver->toString()));
            }
else {
                return call_user_func_array(array($driver, $method), $event);
            }

            
            return $this;
        }
    }

?>

Cache\Driver\DriverAbstract.php:
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
<?php
    namespace Oetzie\Framework\Cache\Driver;
    
    use Oetzie\Framework\Cache\Exception as Exception;

    abstract class DriverAbstract implements DriverInterface {
        /**
         * @acces protected.
         * @var integer.
         */

        protected $expiration = 604800;
        
        /**
         * @acces public.
         * @param integer $expiration.
         * @return self.
         */

        public function setExpiration($expiration) {
            $this->expiration = $expiration;
            
            return $this;
        }


        /**
         * @acces public.
         * @retun integer.
         */

        public function getExpiration() {
            return $this->expiration;
        }
    }

?>

Cache\Driver\DriverInterface.php:
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
<?php
    namespace Oetzie\Framework\Cache\Driver;
    
    use Oetzie\Framework\Cache\Exception as Exception;

    interface DriverInterface {
        /**
         * @acces public.
         * @param array $options.
         * @throws InvalidArgumentException.
         */

        public function __construct($options = array());
        
        /**
         * @acces public.
         */

        public function __destruct();
        
        /**
         * @acces public.
         * @param string $id.
         * @param mixed $data.
         * @param null|integer $expiration.
         * @returns self.
         */

        public function add($id, $data, $expiration = null);
        
        /**
         * @acces public.
         * @param string $id.
         * @param null|string $return.
         * @return mixed.
         */

        public function get($id, $return = 'data');

        /**
         * @acces public.
         * @param string $id.
         * @return self.
         */

        public function remove($id);
        
        /**
         * @acces public.
         * @param mixed $id.
         * @return self.
         */

        public function clear($id = null);
        
        /**
         * @acces public.
         * @return string.
         */

        public function toString();
    }

?>

Cache\Driver\FileCache.php:
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
<?php
    namespace Oetzie\Framework\Cache\Driver;
    
    use Oetzie\Framework\Cache\Exception as Exception;

    class FileCache extends DriverAbstract {        
        /**
         * @acces protected.
         * @var string.
         */

        protected $fileHash = 'md5';
        
        /**
         * @acces protected.
         * @var integer.
         */

        protected $filePermissions = 0660;
        
        /**
         * @acces protected.
         * @var string.
         */

        protected $fileExtension = '';
        
        /**
         * @acces protected.
         * @var string.
         */

        protected $fileIdentifier = 'cache_';

        /**
         * @acces protected.
         * @var integer.
         */

        protected $pathPermissions = 0770;
        
        /**
         * @acces protected.
         * @var string.
         */

        protected $path = '';
        
        /**
         * @acces public.
         * @param array $options.
         * @throws InvalidArgumentException.
         */

        public function __construct($options = array()) {
            if (!is_array($options)) {
                throw new Exception\InvalidArgumentException(sprintf('Failed to initialize %s (%s), options is not an array; recieved "%s".', __CLASS__, __FUNCTION__, gettype($options)));
            }
else {
                $options = array_merge(array(
                    'file_hash'            => $this->getFileHash(),
                    'file_permissions'    => $this->getFilePermissions(),
                    'file_extension'    => $this->getFileExtension(),
                    'file_identifier'    => $this->getFileIdentifier(),
                    'path_permissions'    => $this->getPathPermissions(),
                    'path'                => $this->getPath(),
                    'expiration'        => $this->getExpiration()
                ),
$options);
                
                $this->setFileHash($options['file_hash'])
                     ->
setFilePermissions($options['file_permissions'])
                     ->
setFileExtension($options['file_extension'])
                     ->
setFileIdentifier($options['file_indentifier'])
                     ->
setPathPermissions($options['path_permissions'])                
                     ->
setPath($options['path'])
                     ->
setExpiration($options['expiration']);
            }
        }

        
        /**
         * @acces public.
         */

        public function __destruct() {
        
        }

        
        /**
         * @acces public.
         * @param integer $permissions.
         * @return self.
         */

        public function setFilePermissions($permissions) {
            $this->filePermissions = $permissions;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @return integer.
         */

        public function getFilePermissions() {
            return $this->filePermissions;
        }

        
        /**
         * @acces public.
         * @param string $function.
         * @throws RuntimeException.
         * @return self.
         */

        public function setFileHash($hash) {
            if (!function_exists($hash)) {
                throw new Exception\RuntimeException(sprintf('Failed to initialize %s (%s), key hash function %s does not exists.', __CLASS__, __FUNCTION__, $hash));
            }

                
            $this->fileHash = $hash;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @return string.
         */

        public function getFileHash() {
            return $this->fileHash;
        }

        
        /**
         * @acces public.
         * @param string $identifier.
         * @return self.
         */

        public function setFileIdentifier($identifier) {
            $this->fileIdentifier = $identifier;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @retun string.
         */

        public function getFileIdentifier() {
            return $this->fileIdentifier;
        }

        
        /**
         * @acces public.
         * @param string $extension.
         * @retun self.
         */

        public function setFileExtension($extension) {
            $this->fileExtension = $extension;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @retun string.
         */

        public function getFileExtension() {
            return $this->fileExtension;
        }


        /**
         * @acces public.
         * @param integer $permissions.
         * @return self.
         */

        public function setPathPermissions($permissions) {
            $this->pathPermissions = $permissions;
            
            return $this;
        }

        
        /**
         * @acces public.
         * @return integer.
         */

        public function getPathPermissions() {
            return $this->pathPermissions;
        }

        
        /**
         * @acces public.
         * @param string $path.
         * @throws RuntimeException|InvalidArgumentException.
         * @return self.
         */

        public function setPath($path) {
            $path = rtrim($path, '\\/').DIRECTORY_SEPARATOR;
            
            if (!is_dir($path)) {
                if (!mkdir($path, $this->getPathPermissions(), true)) {
                    throw new Exception\RuntimeException(sprintf('Failed to initialize %s (%s), could not create cache path "%s" with permissions %s.', __CLASS__, __FUNCTION__, $path, $this->getPathPermissions()));
                }
            }

            
            if (!is_dir($path)) {
                throw new Exception\InvalidArgumentException(sprintf('Failed to initialize %s (%s), cache path "%s" does not exists.', __CLASS__, __FUNCTION__, $path));
            }
else if (!is_writeable($path)) {
                throw new Exception\InvalidArgumentException(sprintf('Failed to initialize %s (%s), cache path "%s" is not writeable.', __CLASS__, __FUNCTION__, $path));
            }
else {
                $this->path = $path;
            }

            
            return $this;
        }

        
        /**
         * @acces public.
         * @return string.
         */

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

        
        /**
         * @acces protected.
         * @param string $id.
         * @return string.
         */

        protected function makePath($id = null) {
            if (null === $id) {
                return $this->getPath().$this->getFileIdentifier().'*'.$this->getFileExtension();
            }
else {
                return $this->getPath().$this->getFileIdentifier().hash($this->getFileHash(), strtolower($id)).$this->getFileExtension();
            }
        }

        
        /**
         * @acces public.
         * @param string $id.
         * @param mixed $data.
         * @param null|integer $expiration.
         * @throws RuntimeException.
         * @returns self.
         */

        public function add($id, $data, $expiration = null) {
            $path = $this->makePath($id);
            
            $data = serialize(array(
                'created'        => date('d-m-Y H:i:s'),
                'expiration'    => time() + (null === $expiration ? $this->getExpiration() : $expiration),
                'data'            => $data
            ));
            
            if (!file_put_contents($path, $data, LOCK_EX)) {
                throw new Exception\RuntimeException(sprintf('Failed to initialize %s (%s), id "%s" could not be writen to cache.', __CLASS__, __FUNCTION__, $id));
            }
else if (!chmod($path, $this->getFilePermissions())) {
                throw new Exception\RuntimeException(sprintf('Failed to initialize %s (%s), id "%s" could not be writed to cache with permission "%s".', __CLASS__, __FUNCTION__, $id, $this->getFilePermissions()));
            }

            
            return $this;
        }

        
        /**
         * @acces public.
         * @param string $id.
         * @param null|string $return.
         * @throws RuntimeException.
         * @return mixed.
         */

        public function get($id, $return = 'data') {
            $path = $this->makePath($id);
            
            if (is_file($path)) {
                if (!$data = file_get_contents($path)) {
                    throw new Exception\RuntimeException(sprintf('Failed to initialize %s (%s), id "%s" could not be read from cache.', __CLASS__, __FUNCTION__, $id));
                }
else {
                    $data = unserialize($data);
                    
                    if (time() > $data['expiration']) {
                        $this->remove($id);
                    }

                    
                    if (isset($data[$return])) {
                        return $data[$return];
                    }
else {
                        return $data;
                    }
                }
            }

            
            return false;
        }

        
        
        /**
         * @acces public.
         * @param string $id.
         * @return self.
         */

        public function remove($id) {
            $path = $this->makePath($id);
            
            if (is_file($path)) {
                unlink($path);
            }

            
            return $this;
        }

        
        /**
         * @acces public.
         * @param mixed $id.
         * @return self.
         */

        public function clear($id = null) {
            if (null === $id) {
                $path = $this->makePath();
                
                foreach (glob($path) as $key) {
                    unlink($key);
                }
            }
else if (1 < func_num_args()) {
                foreach (func_get_args() as $key) {
                    $this->clear($key);
                }
            }
else if (is_string($id)) {
                $this->remove($id)
            }
else if (is_array($id)) {
                foreach ($id as $key) {
                    $this->remove($key);
                }
            )

            
            return $this;
        }

        
        /**
         * @acces public.
         * @return string.
         */

        public function toString() {
            return 'FileCache';
        }
    }

?>
Gewijzigd op 23/04/2013 13:17:20 door Joakim Broden
 
Er zijn nog geen reacties op dit bericht.



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.