{"id":15694008,"url":"https://github.com/nilportugues/repository-cache","last_synced_at":"2025-07-18T00:06:02.092Z","repository":{"id":57027241,"uuid":"50461400","full_name":"nilportugues/repository-cache","owner":"nilportugues","description":"[PHP 7] Repository with Cache layer using PSR-6","archived":false,"fork":false,"pushed_at":"2016-08-08T23:32:42.000Z","size":22,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T05:58:27.744Z","etag":null,"topics":["apcu","cache","clean-architecture","clean-code","ddd","domain-driven-design","ephemeral","filesystem","hexagonal-architecture","inmemory","memcache","memcached","performance","php","php7","psr-6","redis","repository","sqlite","stashphp"],"latest_commit_sha":null,"homepage":"http://nilportugues.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nilportugues.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-26T21:43:43.000Z","updated_at":"2023-04-03T17:37:13.000Z","dependencies_parsed_at":"2022-08-23T15:00:23.880Z","dependency_job_id":null,"html_url":"https://github.com/nilportugues/repository-cache","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Frepository-cache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Frepository-cache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Frepository-cache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilportugues%2Frepository-cache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nilportugues","download_url":"https://codeload.github.com/nilportugues/repository-cache/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253009892,"owners_count":21839714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apcu","cache","clean-architecture","clean-code","ddd","domain-driven-design","ephemeral","filesystem","hexagonal-architecture","inmemory","memcache","memcached","performance","php","php7","psr-6","redis","repository","sqlite","stashphp"],"created_at":"2024-10-03T18:51:00.954Z","updated_at":"2025-05-08T05:58:33.520Z","avatar_url":"https://github.com/nilportugues.png","language":"PHP","funding_links":["https://paypal.me/nilportugues"],"categories":[],"sub_categories":[],"readme":"# Repository Cache\n![PHP7 Tested](http://php-eye.com/badge/nilportugues/repository-cache/php70.svg)\n[![Build Status](https://travis-ci.org/PHPRepository/repository-cache.svg)](https://travis-ci.org/PHPRepository/repository-cache) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nilportugues/php-repository-cache/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nilportugues/php-repository-cache/?branch=master) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/2941364f-c744-4680-ac53-a77f5328a46d/mini.png)](https://insight.sensiolabs.com/projects/2941364f-c744-4680-ac53-a77f5328a46d) [![Latest Stable Version](https://poser.pugx.org/nilportugues/repository-cache/v/stable)](https://packagist.org/packages/nilportugues/repository-cache) [![Total Downloads](https://poser.pugx.org/nilportugues/repository-cache/downloads)](https://packagist.org/packages/nilportugues/repository-cache) [![License](https://poser.pugx.org/nilportugues/repository-cache/license)](https://packagist.org/packages/nilportugues/repository-cache)\n[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://paypal.me/nilportugues)\n\nRepository to be used with *[nilportugues/repository](https://github.com/nilportugues/php-repository)* implementing a PSR-6 cache layer using [StashPHP](http://www.stashphp.com/).\n\n## Installation\n\nUse [Composer](https://getcomposer.org) to install the package:\n\n```json\n$ composer require nilportugues/repository-cache\n```\n\n## Cache Drivers\n\nRepository Cache supports all of Stash's drivers:\n\n- **System**\n    - FileSystem\n    - Sqlite (requires php-pdo-sqlite extension)\n    - APC (requires php-apcu extension)\n- **Server**\n    - Memcached (requires php-memcache or php-memcached extensions)\n    - Redis (requires php-redis extension)\n- **Specialized**\n    - Ephemeral (in memory cache)\n    - Composite\n\nFor more information please check out [Stash's documentation](http://www.stashphp.com/Drivers.html).\n\n## Usage\n\n```php\nuse NilPortugues\\Foundation\\Infrastructure\\Model\\Repository\\Cache\\RepositoryCache;\nuse Stash\\Driver\\Ephemeral;\nuse Stash\\Driver\\Memcache;\nuse Stash\\Pool;\n\n//---------------------------------------------------------------------------\n// Definition of cache drivers\n//---------------------------------------------------------------------------\n$memcached = new Memcache();\n$memcached-\u003esetOptions(array('servers' =\u003e array('127.0.0.1', '11211')));\n\n$cachePool = new Pool();\n$cachePool-\u003esetDriver(new Ephemeral()); //hit in memory first as always will be faster\n$cachePool-\u003esetDriver($memcached); //hit memcached second.\n\n$ttl = 3600; //time in second for cache to expire.\n$cacheNamespace = Color::class;\n\n//---------------------------------------------------------------------------\n// Adding cache to an existing repository\n//---------------------------------------------------------------------------\n$sqlRepository = new MySQLColorRepository();\n$repository = new RepositoryCache($cachePool, $repository, $cacheNamespace, $ttl);\n\n//---------------------------------------------------------------------------\n// Now use as normal... \n//---------------------------------------------------------------------------\n$color = new Color('#@@@@@@', 'New color');\n$repository-\u003eadd($color);\n$repository-\u003efind(ColorId('#@@@@@@')); //should hit cache and return an instance of Color.\n```\n\n## Quality\n\nTo run the PHPUnit tests at the command line, go to the tests directory and issue phpunit.\n\nThis library attempts to comply with [PSR-1](http://www.php-fig.org/psr/psr-1/), [PSR-2](http://www.php-fig.org/psr/psr-2/), [PSR-4](http://www.php-fig.org/psr/psr-4/).\n\nIf you notice compliance oversights, please send a patch via [Pull Request](https://github.com/nilportugues/php-repository-cache/pulls).\n\n\n## Contribute\n\nContributions to the package are always welcome!\n\n* Report any bugs or issues you find on the [issue tracker](https://github.com/nilportugues/php-repository-cache/issues/new).\n* You can grab the source code at the package's [Git repository](https://github.com/nilportugues/php-repository-cache).\n\n\n## Support\n\nGet in touch with me using one of the following means:\n\n - Emailing me at \u003ccontact@nilportugues.com\u003e\n - Opening an [Issue](https://github.com/nilportugues/php-repository-cache/issues/new)\n\n\n## Authors\n\n* [Nil Portugués Calderó](http://nilportugues.com)\n* [The Community Contributors](https://github.com/nilportugues/php-repository-cache/graphs/contributors)\n\n\n## License\nThe code base is licensed under the [MIT license](LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilportugues%2Frepository-cache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnilportugues%2Frepository-cache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilportugues%2Frepository-cache/lists"}