ytubes / facades
为 Yii 2 应用组件提供类似 Laravel 的 Facades 支持
0.0.3
2017-07-04 16:22 UTC
Requires
- yiisoft/yii2: ~2.0.9
This package is not auto-updated.
Last update: 2024-09-29 02:34:12 UTC
README
为 Yii 2 应用组件提供类似 Laravel 的 Facades 支持。正是你所需要的:简单、全面,并且通过 PHPDoc 提供了 IDE 自动完成支持,所以你不会失望。
目录
安装
安装此扩展的首选方式是通过 composer。
运行
composer require "ytubes/facades:>=0.0.1"
或添加
"ytubes/facades": ">=0.0.1"
到你的 composer.json 文件的 require 部分。
用法
基本上,你安装此扩展,然后像使用所有正常的 Yii 2 应用组件一样开始使用它,但语法更短更简单,让我们看看(如果你想知道,所有默认的 Facades,包括抽象基类 Facade,都位于 sergeymakinen\facades 命名空间下)
生成随机字符串
之前
$random = Yii::$app->security->generateRandomString(128);
之后
$random = Security::generateRandomString(128);
获取所有用户(仅为例!)
之前
$users = Yii::$app->db->createCommand('SELECT * FROM users;')->queryAll();
之后
$users = Db::createCommand('SELECT * FROM users;')->queryAll();
格式化货币
之前
$price = Yii::$app->formatter->asCurrency(123456.78, 'USD');
之后
$price = Formatter::asCurrency(123456.78, 'USD');
访问属性
任何类的公共属性 $foo 都可以通过访问器来获取
$value = YourFacadeName::getFoo()
并设置
YourFacadeName::setFoo($value)
可用的 Facades
辅助函数
一些 Facades 还包含有用的辅助函数,使开发更加快速和优雅。
缓存
cache
public static function cache($key, $default, $duration = 0, $dependency = null)
使用提供的键或指定的默认值检索值(如果值不在缓存中)。如果值不在缓存中,它将被缓存。默认值也可以是闭包
$users = Cache::cache('users', function () { return app\models\Users::findAll(); }, 3600);
get
public static function get($key, $default = false)
使用提供的键检索值并返回它或指定的默认值(也可以是闭包)
$options = Cache::get('options', function () { return [ 'option1' => false, 'option2' => true ]; });
响应
bare
public static function bare($statusCode = 204, array $headers = [])
返回一个包含可选头部的空响应
public function actionCreate() { // ... return Response::bare(201); }
html
public static function html($data, array $headers = [])
返回一个包含可选头部的 HTML 响应
public function actionIndex() { // ... return Response::html($this->render('index'), [ 'Cache-Control' => 'no-cache' ]); }
json
public static function json($data, array $headers = [])
返回一个包含可选头部的 JSON 响应
public function actionList() { // ... return Response::json(Db::createCommand('SELECT * FROM users')->all()); }
jsonp
public static function jsonp($data, $callback = 'callback', array $headers = [])
返回一个包含可选头部的 JSONP 响应
public function actionApi($callback) { // ... return Response::jsonp([ 'success' => true, 'response' => $data ], $callback); }
raw
public static function raw($data, array $headers = [])
返回一个包含数据“原样”和可选头部的响应
public function actionCreate() { // ... return Response::raw($binary, [ 'Content-Type' => 'application/octet-stream' ]); }
xml
public static function xml($data, array $headers = [])
返回一个包含可选头部的 XML 响应
public function actionCreate() { // ... return Response::xml([ 'success' => true, 'response' => $data ]); }
扩展
如果你想添加一个新的 Facade,快速且简单,假设你想添加一个 YourFacadeName Facade
class YourFacadeName extends Facade { /** * @inheritdoc */ public static function getFacadeComponentId() { return 'yourFacadeComponentName'; // Yii::$app->yourFacadeComponentName } }
然后每次你调用
YourFacadeName::hello('world');
它将被执行为
Yii::$app->get('yourFacadeComponentName')->hello('world');