我忍不住想用它! 我将介绍只有我知道的FuelPHP有用的功能。
你好。
我是Mandai,负责Wild 开发团队。
在开发某些东西时,您倾向于创建类似实用程序类之类的东西,它是您自己创建的有用函数的集合,而无需查看文档,但是框架通常具有一定数量的有用函数。
有各种各样的事情,比如文档是英文的,功能太多,所以我想总结一下FuelPHP的一些我认为有用的类和功能。
到达::采摘()
我将从头开始跳过,这非常有用。
当我看到它时,我不知道它是什么,因为我不熟悉英语单词(这与我的词汇量有关),但我想 array_keys 函数的扩展版本是有意义的。
顾名思义,array_keys 是一个从数组中提取键并返回一个以键作为值的新数组的函数,但 Arr::pluck() 也适用于对象的属性,例如配对模型,这是一个有用的项目。我想会派上用场的。
类项目 { 公共 $name; 公共 $color_id; 公共函数 __construct($name, $value, $color_id) { $this->name = $name; >color_id = $color_id; } } $items = []; $items[] = new Item('香味橡皮擦(红色)', 150, 1); $items[] = new Items('香味橡皮擦(蓝色)) ', 150, 2); $items[] = new Item('香味橡皮擦(黄色)', 150, 3); $color_ids = Arr::pluck($items, 'color_id'); // 结果是 // 数组 ( // 0 => 1, // 1 => 2, // 2 => 3, // )
这可能是一个很难理解的例子,但是一旦你使用它,你就会明白。
由于处理是通过内部类型检查分开的,因此它可以用于纯数组,没有任何问题,但即使在数组的情况下,它也不会传递给 array_keys,所以如果你知道它是一个数组,你可以简单地使用使用 array_keys 会更快
赛事类
FuelPHP 允许您在每个进程启动之前或之后插入进程。
具体来说,我们将在 config 目录下创建 event.php,但与其他配置一样,我们将其指定为数组。
return [ 'fuelphp' => [ 'app_created' => function(){}, 'request_created' => function(){}, 'request_started' => function(){}, 'controller_started' => function(){ }, 'controller_finished' => function(){}, 'response_created' => function(){}, 'request_finished' => function(){}, 'shutdown' => function(){}, ], ];
这将使用匿名函数向数组添加处理。
另外,如果想在返回之前写一个流程,但又不想写到全局,还有以下方法。
return call_user_func(funtion(){ // 在这里编写所有事件的通用处理 $a = 'hogehoge'; // 例如... return [ 'shutdown' => function() use ($a){ Log::debug ($a); }, });
事件针对任何访问模式执行,因此请注意不要过于复杂,否则可能会出现奇怪的错误。
日期::月内天数()
顾名思义,该函数返回指定月份的天数。
$year = 2016; $days = Date::days_in_month($month, $year); // 结果是 // 30
当对某个月份中包含的天数执行循环处理时,它可能很有用。
最后,它与以下内容同义,但不想记住人来说,这是一个有用的函数
$year = 2016; $days = date('j', mktime(0, 0, 0, $month + 1, 0, $year)); // 结果是 // ‘30’
但是,本例中的返回值严格来说是一个字符串,因此存在一些差异。
字符串::增量()
这也是一个很难使用的函数,但它会增加字符串中后缀对应的数字。
当你在Excel中填写“test1”和“test2”时,会自动创建“test3”和“test4”,这正是它的工作原理。
还可以指定分隔符,如果指定空字符,也可以使用非分隔字符串。
它甚至会自动为没有数字作为后缀的字符串添加后缀,但我不确定这是否是一个好主意。
$test1 = 'test'; $test2 = 'test_3'; $test4 = 'test4'; $test6 = 'test_'; ); echo Str::increment($test2); echo Str::increment($test3); echo Str::increment($test4, 1, ''); echo Str::increment($test5); :increment($test6); // 结果是 // 'test_1' // 'test_2' // 'test_4' // 'test5' // 'test_1_6' // 'test__1'
顺便说一句,如果您查看里面的源代码,您会看到 PHP 代码突然向字符串添加了一个数字。
字符串::截断()
之前是increment,现在是truncate,是SQL吗?就是这种感觉,但又完全不一样。
Str::truncate() 的工作原理是,如果给定字符串的字符数超过指定的字符数,则在指定的字符数之后截断字符串,并返回默认附加“...”的字符串。
我不知道框架中可以容纳多少根绳子,但我认为对于不想断线或增加宽度有一定的需求。
在这种情况下,可以使用此功能来快速缩短它。
$test = "下雨了,刮风了,下雪了,夏天了,热了,强了,强了,强了,强了,不强了,气多了,米多了,四杯一天。" nMiso 和一点蔬菜 wotabe\nArayurukotowo\nJibunwo Kanjouni Rezuni\nYokumiki Kishiwakari\nSoshitewasurezu"; // Aozora Bunko (http://www.aozora.gr.jp/cards/000081/files/45630_23908.html) echo Str::truncate($test, 10); // 结果是 // 'Ame Nemo Makezu // Kaze Nemo...'
看来换行码也算一个字符了。
FuelPHP 的 Str 类在设计时考虑了多字节字符,因此您可以放心使用它。
尽管 FuelPHP 被认为是轻量级的,但它确实有一些像这样有用的功能。
另外,当我有足够的材料时,我想发布它。
就是这样。