Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/c9s/universal
The general purpose standard library for PHP.
https://github.com/c9s/universal
classloader event session
Last synced: 1 day ago
JSON representation
The general purpose standard library for PHP.
- Host: GitHub
- URL: https://github.com/c9s/universal
- Owner: c9s
- License: other
- Created: 2017-06-01T17:22:14.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-08-13T21:45:06.000Z (about 2 years ago)
- Last Synced: 2024-05-21T16:31:09.653Z (4 months ago)
- Topics: classloader, event, session
- Language: PHP
- Homepage:
- Size: 252 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Universal
=========Universal is a general proprose PHP library.
[![Build Status](https://travis-ci.org/c9s/universal.svg?branch=master)](https://travis-ci.org/c9s/universal)
[![Coverage Status](https://coveralls.io/repos/github/c9s/universal/badge.svg?branch=master)](https://coveralls.io/github/c9s/universal?branch=master)# Install
```sh
composer require universal/universal 2.0.x-dev
```# Components
- ClassLoaders
- Container
- HTTPRequest## Classloader
### BasePathClassLoader
```php
$loader = new BasePathClassLoader( array(
'vendor/pear', 'external_vendor/src'
) );
$loader->useEnvPhpLib();
$loader->register();
```### Include Path Manipulator
Include Path manipulator
```php
$includer = new PathIncluder(array( 'to/path', ... ));
$includer->add( 'path/to/lib' );
$includer->setup(); // write set_include_path
```## Http
### StreamResponse
MXHR support
```php
$response = new Universal\Http\StreamResponse;
for( $i = 0 ; $i < 30000 ; $i++ ) {
$response->write(json_encode(array('i' => $i)), array(
'Content-Type' => 'application/json',
));
usleep(200000);
}
$response->finish();
```### HttpRequest
For multiple files:
```php
files as $f ) {
$extname = $f->getExtension();
$filename = $f->getPathname();
}$req->param( 'username' ); // get $_REQUEST['username'];
$req->get->username; // get $_GET['username'];
$req->post->username; // get $_POST['username'];
$req->server->path_info; // get $_SERVER['path_info'];
```To get FILE:
$req = new HttpRequest;
Get $_FILES['uploaded'] hash:
$req->files->uploaded;
Get file size:
$req->files->uploaded->size;
Get file mime type:
$req->files->uploaded->type; // plain/text
Get upload error:
$req->files->uploaded->error;
Foreach file:
foreach( $req->files->uploaded as $f ) {
$f->size;
}## ObjectContainer
Construct a $container object or inherit from it:
$container = new Universal\Container\ObjectContainer;
Register a object builder for lazy building.
$container->mailer = function() {
return new YourMailer;
};To get singleton object via `__get` magic method:
$mailer = $container->mailer;
Or get singleton object from `instance` method:
$mailer = $container->instance('mailer');
To build a new object:
$mailer = $container->build('mailer');
To build a new object with arguments:
$mailer = $container->build('mailer', array( ... ));
## Session
Supported Session Storage backend:
- Memcache
- Redis
- Nativeuse ObjectContainer to pass options:
$container = new Universal\Container\ObjectContainer;
$container->state = function() {
return new Universal\Session\State\NativeState;
};
$container->storage = function() {
return new Universal\Session\Storage\NativeStorage;
};Native Session:
$session = new Universal\Session\Session(array(
'state' => new Universal\Session\State\NativeState,
'storage' => new Universal\Session\Storage\NativeStorage,
));
$counter = $session->get( 'counter' );
$session->set( 'counter' , ++$counter );
echo $session->get( 'counter' );Session with memcache backend:
$session = new Universal\Session\Session(array(
'state' => new Universal\Session\State\CookieState,
'storage' => new Universal\Session\Storage\MemcacheStorage,
));
$counter = $session->get( 'counter' );
$session->set( 'counter' , ++$counter );
echo $session->get( 'counter' );## Event
use Universal\Event\EventDispatcher;
$e = Event::getInstance();
// register your handler
$e->register('test', function($a, $b, $c) {
// do what you want
});// trigger event handlers
$e->trigger('test', 1,2,3);