我有一个接收字符串的函数,并将其转换为Mac地址格式。
function mac_adress($str){
$end = substr($str, -12);
$chunks = str_split($end, 2);
$result = implode(':', $chunks);
return $result;
}
我希望传递函数到我的视图中,所以我可以像这样调用它
$str = 836997595163;
{!!mac_adress($str)!!} //83:69:97:59:51:63
我有多个需要此功能的视图,我试图避免将它们放在我的每个刀片文件中。
我该怎么做?
甚至可能吗?
答案 0 :(得分:4)
这可能是helper
的合适人选,具体取决于您在整个网站中确实需要多少功能。
创建一个helpers.php文件
<?php
function mac_adress($str){
$end = substr($str, -12);
$chunks = str_split($end, 2);
$result = implode(':', $chunks);
return $result;
}
然后在composer.json
{
"autoload": {
"files": [
"app/helpers.php"
]
}
}
然后在您的终端中运行composer dump-autoload
,您的帮助程序方法将在整个应用程序中可用。这样做,您可以根据需要向helpers.php
添加更多辅助函数。
答案 1 :(得分:1)
您可以将其设置为会话变量,并多次调用它并且需要许多地方
$_SESSION['mac-address'] = mac_address($str);
此处提供更多信息$_SESSION
您也可以使用laravels会话库Laravel Session
答案 2 :(得分:1)
将其导出到服务类,您可以从中轻松地从每个视图调用
<?php $formatedMacAddress = \App\Services\MacAddressHelper::formatMacAdress($macAddress);?>
<div>{{ $formatedMacAddress }}</div>
namespace \App\Services;
class MacAddressHelper
{
public static function formatMacAdress(string $macAddress)
{
...
}
}
答案 3 :(得分:1)
另一种干净的方法是通过扩展刀片(利用@ dtj&#39;答案):
创建一个helpers.php文件:
// app/helpers.php
function macAddress($str) {
$end = substr($str, -12);
$chunks = str_split($end, 2);
$result = implode(':', $chunks);
return $result;
}
编辑您的composer.json文件:
{
"autoload": {
"files": [
"app/helpers.php"
]
}
}
运行composer dump-autoload
在AppServiceProvider中:
// app/Providers/AppServiceProvider.php
public function boot()
{
Blade::directive('mac', function($expression) {
return "<?php echo macAddress{$expression}; ?>";
});
}
然后在你的观点中:
@mac('836997595163')
通过这种方式,您可以随时修改辅助函数并对其进行单一引用。