Download the PHP package omegamvc/serializable-closure without Composer
On this page you can find all versions of the php package omegamvc/serializable-closure. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download omegamvc/serializable-closure
More information about omegamvc/serializable-closure
Files in omegamvc/serializable-closure
Package serializable-closure
Short Description Serializable Closure is a PHP package that allows closures to be serialized and stored, enabling their safe use in persistent storage or across requests.
License GPL-3.0
Homepage https://omegamvc.github.io
Informations about the package serializable-closure
Serializable Closure Package
Documentation | Changelog | Contributing | Code Of Conduct | License
The Serializable Closure package provides a convenient and secure way to serialize closures in PHP. It allows you to serialize and unserialize closures, preserving their state and functionality even across different PHP processes. This can be particularly useful in scenarios where closures need to be stored and retrieved, such as in caching mechanisms or queue systems.
How it Works
The package introduces two main classes: SerializableClosure
and UnsignedSerializableClosure
.
-
SerializableClosure
: This class is designed for closures that require additional security measures. It supports signed serialization, which means the closure is associated with a secret key for added security. The signer used is configurable through thesetSecretKey
method. UnsignedSerializableClosure
: This class is suitable for closures that don't require a secret key for signing. It provides a straightforward way to serialize closures without additional security measures.
⚠️ Experimental Feature: Serialization of Anonymous Functions
Caution: This feature is experimental! We've added support for the serialization of anonymous functions, but it comes with a warning. This feature is considered experimental, and we recommend using it only if you fully understand its implications.
Anonymous function serialization involves intricacies and potential risks, and its usage should be approached with caution. If you're unsure about the consequences or don't specifically need this functionality, it's advisable to stick to serializing named functions or closures.
Before incorporating this feature into your code, ensure you are aware of the implications and are comfortable handling any potential issues that might arise. Proceed with caution!
Requirements
- PHP 8.2 or later
Installation via Composer
To install the package, add the following to your composer.json
file:
Alternatively, you can simply run the following from the command line:
If you want to include the test sources, use
Then run:
Getting Started
Example 1: Using SerializableClosure
with Signing
.
Example 2: Using UnsignedSerializableClosure
.
Example 3: Using SerializableClosure
with Signing
and anonymous functions
.
Example 4: Using UnsignedSerializableClosure
and anonymous functions
.
Analysis
Static Code Analysis with PHPStan
To run static analysis with PHPStan
, use the command:
Static Code Analysis with Code Sniffer
To check the code with Code Sniffer
, run the command:
Generating API Documentation with phpDocumentor
To generate the documentation, run the command.
Make sure you have the
phpDocumentor.phar 3.5+
executable installed in thevendor/bin
directory.
Testing
Running Unit Tests with PHPUnit
To run the tests with PHPUnit
, type the command:
Note that the command above will run tests for the classes contained in the
app
andvendor/omegamvc
directories.
Generating Code Coverage Reports
Omega supports code coverage with, requiring xdebug
to be installed and configured on your system.
Here’s a basic working xdebug
configuration for Ubuntu 24.04
:
In accordance with the phpunit
documentation, you should also ensure that the error_reporting
and memory_limit
variables are set as follows in the /etc/php/your_php_version/cli/php.ini
file:
For more information, you can refer to the official documentation of phpunit
Troubleshooting and Known Issues
PHPCS (Code Sniffer)
The phpcs.xml.dist
file is preconfigured to save the cache in the cache/phpcs
directory at the root of the project. If this directory does not exist, Code Sniffer cannot create it automatically, and you will need to create it manually.
To disable the cache, you can simply comment out or remove this line from the phpcs.xml.dist
file.
If you prefer to choose a custom path that better suits your habits, you can simply modify it.
Errors When Running Commands from the Console
All commands defined in the composer.json
file are prefixed with the variable XDEBUG_MODE=off
. This prevents xdebug
from producing an excessive amount of output if the configuration is set to xdebug.mode=debug
or xdebug.mode=debug,develop
. If you run commands that are not defined in the composer.json
file, you can suppress these messages as follows:
Official Documentation
The official documentation for Omega is available here
Contributing
If you'd like to contribute to the OmegaMVC Serializable Closure package, please follow our contribution guidelines.
License
This project is open-source software licensed under the GNU General Public License v3.0.