通用 / 通用
PHP通用库
dev-master / 2.0.x-dev
2017-09-10 22:35 UTC
Requires
- php: >=5.3.0
Replaces
This package is auto-updated.
Last update: 2024-08-29 03:15:58 UTC
README
Universal是一个通用的PHP库。
安装
composer require universal/universal 2.0.x-dev
组件
- 类加载器
- 容器
- HTTP请求
类加载器
基本路径类加载器
$loader = new BasePathClassLoader( array( 'vendor/pear', 'external_vendor/src' ) ); $loader->useEnvPhpLib(); $loader->register();
包含路径操作器
包含路径操作器
$includer = new PathIncluder(array( 'to/path', ... )); $includer->add( 'path/to/lib' ); $includer->setup(); // write set_include_path
HTTP
StreamResponse
MXHR支持
$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
针对多个文件
<?php $req = new HttpRequest; foreach( $req->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'];
获取FILE
$req = new HttpRequest;
获取$_FILES['uploaded']哈希值
$req->files->uploaded;
获取文件大小
$req->files->uploaded->size;
获取文件MIME类型
$req->files->uploaded->type; // plain/text
获取上传错误
$req->files->uploaded->error;
遍历文件
foreach( $req->files->uploaded as $f ) {
$f->size;
}
对象容器
构建$container对象或继承自它
$container = new Universal\Container\ObjectContainer;
注册对象构建器以进行懒构建。
$container->mailer = function() {
return new YourMailer;
};
通过__get
魔术方法获取单例对象
$mailer = $container->mailer;
或从instance
方法获取单例对象
$mailer = $container->instance('mailer');
构建新对象
$mailer = $container->build('mailer');
使用参数构建新对象
$mailer = $container->build('mailer', array( ... ));
会话
支持的会话存储后端
- Memcache
- Redis
- 本地
使用对象容器传递选项
$container = new Universal\Container\ObjectContainer;
$container->state = function() {
return new Universal\Session\State\NativeState;
};
$container->storage = function() {
return new Universal\Session\Storage\NativeStorage;
};
本地会话
$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' );
带有Memcache后端的会话
$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' );
事件
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);