使用全域函式(Using global functions)

雖然乍看之下不是個好主意,但是在 PHP 宣告一些全域函式其實是好事。程式碼會變短,而且如果函式命名的好,會更簡潔易懂。

1. 作法

首先,建立儲存函式的檔案。假設是在根資料夾的functions.php。我們必須要將這個檔案被require。 最適合的地方是在index.php

// ...
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

$app = new yii\web\Application($config);
require(__DIR__ . '/../functions.php');
$app->run();

注意我們這裡是在 config 檔以及應用建立之後才宣告require 這允許我們在函式裡面使用config以及Yii裡面的函式。

另外,你也可以加在composer.json

"autoload": {
    "files": [
        "functions.php"
    ]
},

增加這段之後,記得要執行composer update,程式才會生效。

2. 函式的點子

以下是一些函式的點子,如果有需要可以自己增加:

use yii\helpers\Url;
use yii\helpers\Html;
use yii\helpers\HtmlPurifier;
use yii\helpers\ArrayHelper;

function url($url = '', $scheme = false)
{
    return Url::to($url, $scheme);
}

function h($text)
{
    return Html::encode($text);
}

function ph($text)
{
    return HtmlPurifier::process($text);
}

function t($message, $params = [], $category = 'app', $language = null)
{
    return Yii::t($category, $message, $params, $language);
}

function param($name, $default = null)
{
    return ArrayHelper::getValue(Yii::$app->params, $name, $default);
}

results matching ""

    No results matching ""