0

0

详解怎么在Laravel中创建自己的PHP帮助函数

藏色散人

藏色散人

发布时间:2021-04-27 16:50:03

|

2319人浏览过

|

来源于segmentfault

转载

下面由laravel教程栏目给大家介绍在laravel中创建自己的php帮助函数,希望对需要的朋友有所帮助!

在Laravel中创建自己的PHP帮助函数

Laravel 为我们提供了许多内置的帮助函数,你可以在应用程序中的任何位置调用它。它们使你可以方便地处理数组和对象,路径,字符串,URL和其他类型的工作流。

尽管在 Laravel 核心中定义了许多帮助函数,但你可以在 Laravel 中定义自己的帮助函数以避免重复相同的代码。它确保你的应用程序有更好的可维护性。

我们来看看如何创建自己的定制 Laravel 帮助函数

立即学习PHP免费学习笔记(深入)”;

Laravel 中的帮助函数

Laravel 中有许多内置的帮助程序可供你的应用程序使用。它们根据它们提供的功能类型进行分组。这是一个完整的内置 Laravel 帮助文件。

数组和对象

在这个组中,助手提供了处理数组和对象的能力。 该组包含用于添加两个数组的辅助函数,将多维数组折叠成单个数组,返回数组的第一个元素,检查数组中是否存在给定的项目或项目,并执行许多其他类型的操作。

路径

这组helper返回Laravel应用程序中不同目录的绝对路径,例如 app,config,public,resource,storage和你的应用程序的基本路径。

字符串

该组中的助手使用字符串操作。 你可以将字符串转换为骆驼大小写,找到该类的基本名称,运行 htmlspecialchars,将文本转换为kebab大小写,将文本转换为大小写,并执行许多其他类型的字符串操作。

URL

助手的URLs组与生成URL一起工作。你可以为控制器操作生成URL,命名为route,以及指定路径的完全限定URL。

杂项

这类帮助程序包含处理页面状态,服务容器,认证,缓存等功能。

在Laravel中创建帮助文件

在本节中,我们将通过创建Laravel帮助程序文件,该文件可以在Laravel应用程序中全局使用。 你可以组织你的帮助程序文件的位置,但是,我更愿意将我的Laravel项目帮助程序文件保存在 app/Helpers/Helper.php 中。 在本教程中,我们将在我想要的位置创建一个帮助文件。

创建一个帮助文件

你可以将你的帮助程序文件放在你的Laravel应用程序的任何位置,将它放在你的应用程序目录下是标准的。
让我们在app下创建一个 Helpers 目录并创建一个 Helper.php 文件。这些是该文件的以下内容。

<?php

if (!function_exists('human_file_size')) {
    /**
     * Returns a human readable file size
     *
     * @param integer $bytes
     * Bytes contains the size of the bytes to convert
     *
     * @param integer $decimals
     * Number of decimal places to be returned
     *
     * @return string a string in human readable format
     *
     * */
    function human_file_size($bytes, $decimals = 2)
    {
        $sz = 'BKMGTPE';
        $factor = (int)floor((strlen($bytes) - 1) / 3);
        return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . $sz[$factor];

    }
}

if (!function_exists('in_arrayi')) {

    /**
     * Checks if a value exists in an array in a case-insensitive manner
     *
     * @param mixed $needle
     * The searched value
     *
     * @param $haystack
     * The array
     *
     * @param bool $strict [optional]
     * If set to true type of needle will also be matched
     *
     * @return bool true if needle is found in the array,
     * false otherwise
     */
    function in_arrayi($needle, $haystack, $strict = false)
    {
        return in_array(strtolower($needle), array_map('strtolower', $haystack), $strict);
    }
}

如果你正在使用一个类并且它的方法是你的助手,你可以用命名空间声明来启动这个文件。

namespace AppHelpers;

如果你不使用命名空间声明,则这些函数将变为全局可用,你甚至可以在不指定名称空间的情况下使用它们。 所有Laravel内置的帮助函数都是在没有命名空间的情况下定义的。 此外,助手类也将在全局范围内提供。 因此,如果你想在不指定命名空间的情况下使用助手,只需删除这一行。

定义这些函数时有一些注意事项。所有的Laravel助手文件函数都会被检查以避免函数定义冲突。

if (!function_exists('human_file_size')) {
    function human_file_size($bytes, $decimals = 2)
    {
        // ...
    }
}

如果跳过此检查,则每次重新定义具有相同定义的函数时都会发生冲突。你可以使用这个检查,或者你也可以用你的函数名称作为前缀来避免冲突。

使用帮助文件

现在,就我们的帮助文件而言,就是这样。让我们看看如何在Laravel应用程序中使用助手文件。

小微助手
小微助手

微信推出的一款专注于提升桌面效率的助手型AI工具

下载
  • 你可以使用 composer 自动加载助手文件。然后,你可以在应用程序的任何位置使用这些功能。
  • 你也可以使用Laravel服务提供者注册此文件。 Laravel会将其与其他依赖关系一起加载。
  • 你也可以使用一个包含所有这些功能的软件包。

让我们看看如何使用所有这些方法。

通过Composer自动加载

第一个非常简单直接。 只需转到位于Laravel项目中的 composer.json 文件,你将看到自动加载 key。 Composer 有一个key files(你想自动加载的文件路径数组),你可以在自动 `autoload 中使用它。 如:

"autoload": {
    "files": [
        "app/Helpers/Helper.php"
    ],
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\": "app/"
    }
},

更改composer.json文件并向文件数组添加新路径后,需要重新生成自动加载文件。只需从Laravel项目目录中的终端运行此命令即可。

composer dump-autoload

现在,你的帮助程序文件将自动加载到你的Laravel项目中。

通过服务提供者加载

让我们来看看如何使用服务提供者来自动加载助手文件。转至应用程序根目录中的命令行并运行以下命令以创建新的服务提供者。

php artisan make:provider HelperServiceProvider

将会提示运行结果

Provider created successfully.

一旦服务提供者成功创建,打开该文件。在注册方法中添加你的助手文件。

public function register()
{
    $file = app_path('Helpers/Helper.php');
    if (file_exists($file)) {
        require_once($file);
    }
}

在注册方法中,我们包含了我们的依赖关系。 在大型项目中,你可能在目录中有多个帮助程序文件,并且你想要全部这些文件。 你可以更改注册方法,如下所示,你的服务提供商将加载Helpers目录中的所有文件。

public function register()
{
    foreach (glob(app_path() . '/Helpers/*.php') as $file) {
        require_once($file);
    }
}

它将需要 app/Helpers 目录中的所有文件。
现在我们的服务提供者已经完成,我们需要注册我们的服务提供者,所以,Laravel会在引导期间加载它。 为此,请转至 config/app.php 并在结尾处的 providers 数组中添加以下行。

AppProvidersHelperServiceProvider::class,

如果你的帮助文件涉及到一个拥有这些帮助方法的类,并且你已经指定了命名空间,那么你可以通过定义一个别名来毫不费力地使用它们。 您可以通过在 config/app.php 文件中的别名数组末尾添加以下内容轻松完成此操作。

'Helper' => AppHelpersHelper::class,

通过将这添加到别名数组中,你将能够使用Helper关键字调用助手。这就是为服务提供者创建你的帮手。

使用第三方包加载

你也可以使用第三方package: Laravel helpers package(https://github.com/browner12/helpers/)。你可以通过在控制台中从你的应用程序的根目录运行此命令来通过编写器安装它。

composer require browner12/helpers

config/app.php 中的 providers 数组中添加以下行

browner12helpersHelperServiceProvider::class,

如果你正在使用Laravel的自动包发现功能,则可以跳过此步骤。 完成必要的步骤之后,你可以使用此命令创建助手文件。

php artisan make:helper Helper

它将在 AppHelpers 中创建一个 Helper.php 文件,你可以轻松添加所有帮助程序功能。

Helper 的具体使用

现在我们的函数在Helper文件中定义,没有定义名称空间,我们可以很容易地使用它们。 只需在 routes/web.php 中找到你的路由文件,并将此功能用于首页。 例如,这是完整的 routes/web.php 文件:

<?php

Route::get('/', function () {
    return human_file_size(1024*1024);
});

它将简单地返回作为参数传递的字节数的可读大小。你可以从任何地方控制器或视图调用这些函数。

相关推荐:最新的五个Laravel视频教程

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

89

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

276

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

59

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

99

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

105

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

230

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

619

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

173

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.6万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号