当前位置: 首页 > 知识库问答 >
问题:

使用laravel 4.2调用控制器外部的php函数

伍心水
2023-03-14

所以我有这个函数,它获取Laravel项目所在的剩余内存。问题是有两个控制器需要检查剩余的内存。

这是它看起来像它就在我的控制器

private function convGB($bytes, $unit = "", $decimals = 2)
{
     $units = array('B' => 0, 'KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4, 
     'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8);

     $value = 0;
     if ($bytes > 0) 
     {
         if (!array_key_exists($unit, $units)) 
         {
             $pow = floor(log($bytes)/log(1024));
             $unit = array_search($pow, $units);
         }

         $value = ($bytes/pow(1024,floor($units[$unit])));
     }

     if (!is_numeric($decimals) || $decimals < 0) {
     $decimals = 2;
     }

     return sprintf('%.' . $decimals . 'f '.$unit, $value);
}

private function getMem()
{
    $ds  = disk_total_space(substr(base_path(), 0, 2));
    $fs  = disk_free_space(substr(base_path(), 0, 2));
    $ffs = disk_free_space(substr(base_path(), 0, 2));

    if ($ds >= 1073741824)
    {
        $ds = number_format($ds / 1073741824, 2) . ' GB';
    }
    elseif ($ds >= 1048576)
    {
        $ds = number_format($ds / 1048576, 2) . ' MB';
    }
    elseif ($ds >= 1024)
    {
        $ds = number_format($ds / 1024, 2) . ' KB';
    }
    elseif ($ds > 1)
    {
        $ds = $ds . ' B';
    }
    elseif ($ds == 1)
    {
        $ds = $ds . ' B';
    }
    else
    {
        $ds = '0 size';
    }

    if ($fs >= 1073741824)
    {
        $fs = number_format($fs / 1073741824, 2) . ' GB';
    }
    elseif ($fs >= 1048576)
    {
        $fs = number_format($fs / 1048576, 2) . ' MB';
    }
    elseif ($fs >= 1024)
    {
        $fs = number_format($fs / 1024, 2) . ' KB';
    }
    elseif ($fs > 1)
    {
        $fs = $fs . ' B';
    }
    elseif ($fs == 1)
    {
        $fs = $fs . ' B';
    }
    else
    {
        $fs = '0 size';
    }

    $converted = $this->convGB($ffs);

    return array( $ds , $fs , $converted);
}

所以我想把这个函数放在一个外部PHP中,以便在需要时调用它。有什么办法吗?非常感谢!

共有1个答案

黄查猛
2023-03-14

在你的应用程序/助手目录中创建一个新文件,命名为AnythingHelper.php我的助手的一个例子是:

<?php
function getDomesticCities()
{
$result = \App\Package::where('type', '=', 'domestic')
    ->groupBy('from_city')
    ->get(['from_city']);

return $result;
}

通过以下命令为您的助手生成服务提供程序

php artisan make:provider HelperServiceProvider

在新生成的HelperServiceP的寄存器函数中rovider.php添加以下代码

require base_path().'/app/Helpers/AnythingHelper.php';

现在在您的配置/应用程序中。php加载这个服务提供者,您就完成了

'App\Providers\HelperServiceProvider',

代码取自此处:如何在laravel 5中创建全局助手函数?

 类似资料:
  • 问题内容: 如何从网页的任何位置(控制器组件外部)调用控制器下定义的函数? 当我按下“获取”按钮时,它可以完美运行。但是我需要从div控制器外部调用它。逻辑是:默认情况下,我的div是隐藏的。在导航菜单中的某个位置,我按了一个按钮,它应该显示()我的div并执行“获取”功能。我该如何实现? 我的网页是: 我的js: 问题答案: 这是从外部调用控制器功能的一种方法: 您的控制器的功能在哪里。 你可以

  • 假设我有一个名为的扩展,my_extension一个名为的插件。 然后,我的控制器中有一个名为的函数。 如何通过通常的http GET请求从外部调用此?

  • 问题内容: 我单击时有一个下面的按钮,显示一个小的弹出窗口,如通知 我的意图是每隔几秒钟显示一次此弹出窗口,而不用单击按钮,而是从AngularJS控制器显示。 尝试以下解决方案 还包括脚本 使用这样的指令 我看到一个错误“对象没有方法弹出窗口” 问题答案: 伪指令用于DOM操作: 和指令

  • 问题内容: function parts($part) { $structure = ‘http://’ . $site_url . ‘content/’; echo($tructure . $part . ‘.php’); } 该函数使用在页面顶部定义的变量,但是此变量未传递到该函数中。 我们如何使它返回到函数中? 问题答案: 添加第二个参数 您需要将其他参数传递给函数: 如果关闭 如果您希望使

  • 问题内容: 尝试在指令的链接函数中使用与号&来调用传递给指令的函数时遇到问题。 似乎在控制器上调用了该函数,但在调用中未传递任何参数。我们看到的所有示例都涉及通过在模板中创建调用来进行传递。有没有一种方法可以从其模板的指令中调用指令中的函数,然后在指令中执行某些操作,以调用传递给它的控制器函数? 问题答案: 您是否在s中传递了参数?例如,在指令的链接函数中,您将希望像这样调用方法: jsfiddl

  • 问题内容: 我有一个不错的页面,可以满足我的所有需求。但是,其中一个元素(部分页面)花费的时间比我要加载的时间长几秒钟。因此,我想做的是先显示该页面,而不显示部分内容,而在其位置显示“正在加载” gif。然后在我的jQuery中… 我想调用我的控制器操作,该操作返回PartialView并更新div内容。它基本上在加载时异步调用部分加载。我可以使用ActionLink做到这一点,直到达到我希望在加