[OOP] Cache

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C#.NET-developer - JUNIOR

Functie omschrijving Voor een leuke opdrachtgever in omgeving Brielle zijn wij op zoek naar een junior developer. Werk jij graag met de volgende tools & technieken? C#, .NET, ASP.NET, MVC en SQL? Kijk dan snel of dit iets voor jou is! Als programmeur bij een productiebedrijf zal je voornamelijk nieuwe software schrijven maar ook bestaande software verbeteren. Verder werk je veel samen in back end projecten met leuke collega's. Bedrijfsprofiel Met een team van ruim 130 personen staan ze elke dag weer klaar om IT en Business te combineren door het ontwikkelen van producten op maat. Er zijn 3 teams,

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

Bekijk vacature »

Senior Mobile Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Senior Mobile 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. 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

Bekijk vacature »

(Junior) PHP Ontwikkelaar bij een retail bedrijf i

Bedrijfsomschrijving Ben jij een ervaren PHP ontwikkelaar met een passie voor retail en ICT? Wil jij werken in een team dat zich bezighoudt met het ontwikkelen van uitdagende applicaties voor een groot retailbedrijf in Delft? Dan zijn zij op zoek naar jou! Functieomschrijving Als PHP Ontwikkelaar werk je in een team aan de ontwikkeling van applicaties die door de gehele organisatie worden gebruikt. Je bent verantwoordelijk voor het ontwikkelen, testen en implementeren van deze applicaties. Je werkt hierbij nauw samen met andere ontwikkelaars, projectmanagers en stakeholders binnen de organisatie. Je taken bestaan onder andere uit: Ontwikkelen van nieuwe functionaliteiten en

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

PHP/Symfony developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Bergen op Zoom ben je als PHP/Symfony Developer niet alleen bezig met software ontwikkeling. Je bent buiten ontwikkeling ook continu bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Techstack: PHP, Symfony & mySQL. Jouw takenpakket ziet er als volgt uit: Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klanten; Het schrijven van een schone en efficiënte code volgens het Symfony framework; Onderhouden

Bekijk vacature »

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

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 »

C# Unity Developer

Functieomschrijving Ontwikkel jij mee door applicaties te bouwen die bijdragen aan het optimaliseren van processen? Voor een erkende werkgever in regio Tilburg zijn wij op zoek naar een Unity C# Developer die graag de uitdaging aangaat! Jouw werkzaamheden zullen er als volgt uitzien: Je bent een luisterend oor naar klanten en vertaalt hun wensen door naar bruikbare software; Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van processen; Je bent verantwoordelijk voor het uitvoeren van updates/aanpassingen aan de reeds draaiende applicaties. Bedrijfsprofiel Je komt te werken voor een internationale werkgever in regio Tilburg. Samen met een vooruitstrevend team

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

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 »

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 »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

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.