tebazil / yii2-vodka-behavior
Yii2 恶搞扩展,拦截应用响应并替换为笑话消息
Requires
- yiisoft/yii2: ^2.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-14 18:15:00 UTC
README
Vodka 是一个笑话 "醉酒" 应用行为,以一定的概率(默认为 0.75)拦截响应,并用默认或自定义生成器中的某些 "名言" 替换。适用于 Web 和控制台应用。
以下是输出示例
VODKA BEHAVIOR says:
Obna obbbaaoo n bnbnb oabb bnn
a bn a anba baaooaobboboaabna n nboo oan b a oa nbonbao ona b
obnob b nob bb nnnb boaban b n o anon oaoannan oaaooaaababobo
anonob a anooaao nb aa ooo bb n bnnabab abbbbno bnb nnoboo noano
ooanabaaoonn anaao ab n an ona n o anaaa nbobbann anoo boa ob
banaooa noanaonbbno o oono a .
安装
安装此扩展的最佳方式是通过 composer。
运行以下命令之一:
$ composer require tebazil/yii2-vodka-behavior
或者将以下内容添加到您的 composer.json
文件的 require
部分:
"tebazil/yii2-vodka-behavior": "*"
基本用法
VodkaBehavior 是一个典型的 yii2 行为,可以附加到应用上。最简单的方式是在应用的配置部分附加行为
return [ 'id' => 'basic-console', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log', 'gii'], ... 'as vodka'=> [ 'class'=>'tebazil\yii2\behaviors\vodka\VodkaBehavior', ], ... 'components'=>[ ... ], ...
现在,当你调用应用(即使是非存在的路由)时,会在浏览器/控制台以一定的概率显示 "名言"。
高级用法
您还可以从一些额外的配置中受益。您可以配置 generators
、probability
和 phrase
以进一步自定义醉酒行为。
phrase
(字符串)- 是生成器输出的前缀短语。默认值是 VODKA BEHAVIOR says:
probability
(浮点数)- 是输出被拦截的概率,范围从 0 到 1。0 表示行为永远不会触发。1 表示始终触发。默认值是 0.75
。 generators
是生成输出的匿名函数数组。当你定义此参数时,默认生成器会被你指定的替换掉。匿名函数不接受任何参数并返回输出。为了通用使用,请确保从生成器返回字符串。默认的 generators
是包含两个捆绑生成器的数组。
以下是完整配置的示例
return [ 'id' => 'basic-console', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log', 'gii'], ... 'as vodka'=> [ 'class'=>'tebazil\yii2\behaviors\vodka\VodkaBehavior', 'probability'=>0.95, 'phrase'=> 'Hi, I am your application ... Intrigued, huh? Here is what I have to say:', 'generators'=>[ function() { return 'I think everything is possible. You just have to listen to your heart and work hard.'; }, function() { $coreDevs = ['Qiang','Cebe','Samdark','Will Smith']; $endingPhrases = [ 'The resemblance is unique.', 'Sometimes they drink tea together.', 'But only in the dark.', ]; $randMember = function($arr) { return $arr[array_rand($arr)]; }; return $randMember($coreDevs).' looks like '. $randMember($coreDevs).'. '. $randMember($endingPhrases); } ] ], ... 'components'=>[ ... ], ...
工作原理
当发生 Application::EVENT_BEFORE_REQUEST
时,计算概率。如果按照概率不是运行时间,则不发生任何操作。如果是运行时间
- 在
WebApplication
的情况下,设置响应的data
属性,然后发送响应。 - 在
ConsoleApplication
的情况下,输出将被回显,然后应用执行结束。
高级生成器使用
您可以在生成器中返回对象和数组。在 ConsoleApplication
的情况下,它们将通过 print_r
显示。在 WebApplication
的情况下,结果将取决于您尝试以何种格式输出生成器的结果。例如,在 html
格式的情况下,您可能会在没有实现 __toString() 的数组和对象中收到错误。