全局函数和常量

CodeIgniter 提供了一些全局定义的函数和变量,您可以在任何地方使用它们。这些不需要加载任何额外的库或辅助函数。

全局函数

服务访问器

cache([$key])
参数:
  • $key (string) – 要从缓存中检索的项目的缓存名称(可选)

返回值:

缓存对象或从缓存中检索的项目

返回类型:

混合

如果未提供 $key,将返回缓存引擎实例。如果提供了 $key,将返回当前存储在缓存中的 $key 的值,如果未找到值,则返回 null。

示例

<?php

$foo   = cache('foo');
$cache = cache();
config(string $name[, bool $getShared = true])
参数:
  • $name (string) – 配置类名。

  • $getShared (bool) – 是否返回共享实例。

返回值:

配置实例。

返回类型:

object|null

从工厂获取配置实例的更简单方法。

有关详细信息,请参阅 配置工厂

The config() 内部使用 Factories::config()。有关第一个参数 $name 的详细信息,请参阅 加载类

参数:
  • $name (string) – Cookie 名称

  • $value (string) – Cookie 值

  • $options (array) – Cookie 选项

返回类型:

Cookie

返回值:

Cookie 实例

抛出:

CookieException

创建新 Cookie 实例的更简单方法。

cookies([array $cookies = [][, bool $getGlobal = true]])
参数:
  • $cookies (array) – 如果 getGlobalfalse,则传递给 CookieStore 的构造函数。

  • $getGlobal (bool) – 如果 false,则创建一个新的 CookieStore 实例。

返回类型:

CookieStore

返回值:

当前 Response 中保存的 CookieStore 实例,或一个新的 CookieStore 实例。

获取由 Response 持有的全局 CookieStore 实例。

env($key[, $default = null])
参数:
  • $key (string) – 要检索的环境变量的名称

  • $default (mixed) – 如果未找到值,则返回的默认值。

返回值:

环境变量、默认值或 null。

返回类型:

混合

用于检索先前已设置为环境的值,或者在未找到值时返回默认值。将格式化布尔值以实际的布尔值而不是字符串表示。

特别适用于与 .env 文件结合使用,用于设置特定于环境本身的值,例如数据库设置、API 密钥等。

esc($data[, $context = 'html'[, $encoding]])
参数:
  • $data (string|array) – 要转义的信息。

  • $context (string) – 转义上下文。默认值为 'html'。

  • $encoding (string) – 字符串的字符编码。

返回值:

转义后的数据。

返回类型:

混合

转义数据以包含在网页中,以帮助防止 XSS 攻击。这使用 Laminas Escaper 库来处理数据的实际过滤。

如果 $data 是字符串,则它只转义并返回它。如果 $data 是数组,则它循环遍历它,转义键值对的每个 'value'。

有效的上下文值:htmljscssurlattrraw

helper($filename)
参数:
  • $filename (string|array) – 要加载的辅助文件名称,或名称数组。

加载辅助文件。

有关详细信息,请参阅 辅助函数 页面。

lang($line[, $args[, $locale]])
参数:
  • $line (string) – 要检索的文本行

  • $args (array) – 用于替换占位符的数据数组。

  • $locale (string) – 指定要使用的不同区域设置,而不是默认区域设置。

根据别名字符串检索特定于区域设置的文件。

有关更多信息,请参阅 本地化 页面。

model($name[, $getShared = true[, &$conn = null]])
参数:
  • $name (string) – 模型类名。

  • $getShared (boolean) – 是否返回共享实例。

  • $conn (ConnectionInterface|null) – 数据库连接。

返回值:

模型实例

返回类型:

对象

获取模型实例的更简单方法。

model() 在内部使用 Factories::models()。有关第一个参数 $name 的详细信息,请参阅 加载类

另请参阅 使用 CodeIgniter 的模型

old($key[, $default = null[, $escape = 'html']])
参数:
  • $key (string) – 要检查的旧表单数据的名称。

  • $default (string|null) – 如果 $key 不存在,要返回的默认值。

  • $escape (false|string) – 一个 转义 上下文或 false 以禁用它。

返回值:

定义键的值,或默认值。

返回类型:

array|string|null

提供了一种简单的方法来访问提交表单的“旧输入数据”。

示例

<?php

// in controller, checking form submittal
if (! $model->save($user)) {
    // 'withInput()' is what specifies "old data" should be saved.
    return redirect()->back()->withInput();
}

?>

<!-- In your view file: -->
<input type="email" name="email" value="<?= old('email') ?>">

<!-- Or with arrays: -->
<input type="email" name="user[email]" value="<?= old('user.email') ?>">

注意

如果您使用的是 set_value()set_select()set_checkbox()set_radio() 函数在 表单助手 中,此功能是内置的。您只需要在不使用表单助手时使用此函数。

session([$key])
参数:
  • $key (string) – 要检查的会话项的名称。

返回值:

如果 $key 不存在,则为 Session 对象的实例,在会话中为 $key 找到的值,或 null。

返回类型:

混合

提供了一种方便的方法来访问会话类并检索存储的值。有关更多信息,请参阅 会话 页面。

timer([$name])
参数:
  • $name (string) – 基准点的名称。

返回值:

Timer 实例

返回类型:

CodeIgniterDebugTimer

一个便捷方法,提供对 Timer 类的快速访问。您可以将基准点的名称作为唯一参数传递。这将从该点开始计时,或者如果具有此名称的计时器已在运行,则停止计时。

示例

<?php

// Get an instance
$timer = timer();

// Set timer start and stop points
timer('controller_loading');    // Will start the timer
// ...
timer('controller_loading');    // Will stop the running timer
view($name[, $data[, $options]])
参数:
  • $name (string) – 要加载的文件的名称

  • $data (array) – 一个键值对数组,可在视图中使用。

  • $options (array) – 一个选项数组,将传递给渲染类。

返回值:

视图的输出。

返回类型:

string

获取当前与 RendererInterface 兼容的类,并告诉它渲染指定的视图。只需提供一个便捷方法,可在控制器、库和路由闭包中使用。

目前,这些选项可在 $options 数组中使用

  • saveData 指定数据将在同一个请求中对 view() 的多次调用之间持久化。如果您不希望数据持久化,请指定 false。

  • cache 指定缓存视图的秒数。有关详细信息,请参阅 缓存视图

  • debug 可以设置为 false 以禁用为 调试工具栏 添加调试代码。

$option 数组主要用于促进与 Twig 等库的第三方集成。

示例

<?php

$data = ['user' => $user];

echo view('user_profile', $data);

有关更多详细信息,请参阅 视图 页面。

view_cell($library[, $params = null[, $ttl = 0[, $cacheName = null]]])
参数:
  • $library (string) –

  • $params (null) –

  • $ttl (integer) –

  • $cacheName (string|null) –

返回值:

视图单元用于在视图中插入由其他类管理的 HTML 代码块。

返回类型:

string

有关更多详细信息,请参见 视图单元 页面。

杂项函数

app_timezone()
返回值:

应用程序已设置为以其显示日期的时区。

返回类型:

string

返回应用程序已设置为以其显示日期的时区。

csp_script_nonce()
返回值:

用于脚本标签的 CSP nonce 属性。

返回类型:

string

返回脚本标签的 nonce 属性。例如:nonce="Eskdikejidojdk978Ad8jf"。参见 内容安全策略.

csp_style_nonce()
返回值:

用于样式标签的 CSP nonce 属性。

返回类型:

string

返回样式标签的 nonce 属性。例如:nonce="Eskdikejidojdk978Ad8jf"。参见 内容安全策略.

csrf_token()
返回值:

当前 CSRF 令牌的名称。

返回类型:

string

返回当前 CSRF 令牌的名称。

csrf_header()
返回值:

当前 CSRF 令牌的标头名称。

返回类型:

string

当前 CSRF 令牌的标头名称。

csrf_hash()
返回值:

当前 CSRF 哈希值。

返回类型:

string

返回当前 CSRF 哈希值。

csrf_field()
返回值:

包含所有必要 CSRF 信息的隐藏输入的 HTML 字符串。

返回类型:

string

返回一个包含已插入 CSRF 信息的隐藏输入。

<input type="hidden" name="{csrf_token}" value="{csrf_hash}">
csrf_meta()
返回值:

包含所有必要 CSRF 信息的元标签的 HTML 字符串。

返回类型:

string

返回一个包含已插入 CSRF 信息的元标签。

<meta name="{csrf_header}" content="{csrf_hash}">
force_https($duration = 31536000[, $request = null[, $response = null]])
参数:
  • $duration (int) – 浏览器将链接到此资源转换为 HTTPS 的秒数。

  • $request (RequestInterface) – 当前请求对象的实例。

  • $response (ResponseInterface) – 当前响应对象的实例。

检查页面当前是否通过 HTTPS 访问。如果是,则不会发生任何操作。如果不是,则用户将被重定向回当前 URI,但通过 HTTPS。将设置 HTTP 严格传输安全 (HTST) 标头,该标头指示现代浏览器自动将任何 HTTP 请求修改为 $duration 的 HTTPS 请求。

注意

当您将 Config\App:$forceGlobalSecureRequests 设置为 true 时,也会使用此函数。

function_usable($function_name)
参数:
  • $function_name (string) – 要检查的函数

返回值:

如果函数存在并且可以安全调用,则为 true,否则为 false。

返回类型:

bool

is_cli()
返回值:

如果脚本是从命令行执行的,则为 true,否则为 false。

返回类型:

bool

is_really_writable($file)
参数:
  • $file (string) – 要检查的文件名。

返回值:

如果您可以写入文件,则为 true,否则为 false。

返回类型:

bool

is_windows([$mock = null])
参数:
  • $mock (bool|null) – 如果给出并且是布尔值,则它将用作返回值。

返回类型:

bool

检测平台是否在 Windows 中运行。

注意

提供给 $mock 的布尔值将在后续调用中保留。要重置此模拟值,用户必须在函数调用中传递一个显式的 null。这将刷新函数以使用自动检测。

<?php

is_windows(true);

// some code ...

if (is_windows()) {
    // do something ..
}

is_windows(null); // reset
log_message($level, $message[, $context])
参数:
  • $level (string) – 严重程度级别

  • $message (string) – 要记录的消息。

  • $context (array) – 应该在 $message 中替换的标签及其值的关联数组

返回值:

如果成功登录,则为 true;如果登录出现问题,则为 false。

返回类型:

bool

使用在 **app/Config/Logger.php** 中定义的日志处理程序记录消息。

级别可以是以下值之一:**emergency**、**alert**、**critical**、**error**、**warning**、**notice**、**info** 或 **debug**。

上下文可用于替换消息字符串中的值。有关完整详细信息,请参阅 日志记录信息 页面。

redirect(string $route)
参数:
  • $route (string) – 要将用户重定向到的路由名称或 Controller::method。

返回类型:

RedirectResponse

返回一个 RedirectResponse 实例,允许您轻松创建重定向。有关详细信息,请参阅 重定向

remove_invisible_characters($str[, $urlEncoded = true])
参数:
  • $str (string) – 输入字符串

  • $urlEncoded (bool) – 是否也删除 URL 编码的字符

返回值:

已清理的字符串

返回类型:

string

此函数可防止在 ASCII 字符之间插入空字符,例如 Java\0script。

示例

<?php

remove_invisible_characters('Java\\0script');
// Returns: 'Javascript'
request()

版本 4.3.0 中新增。

返回值:

共享的 Request 对象。

返回类型:

IncomingRequest|CLIRequest

此函数是 Services::request() 的包装器。

response()

版本 4.3.0 中新增。

返回值:

共享的 Response 对象。

返回类型:

Response

此函数是 Services::response() 的包装器。

route_to($method[, ...$params])
参数:
  • $method (string) – 路由名称或控制器::方法

  • ...$params (int|string) – 传递给路由的一个或多个参数。最后一个参数允许您设置语言环境。

返回值:

路由路径(相对于 baseURL 的 URI 路径)

返回类型:

string

注意

此函数要求控制器/方法在 app/Config/routes.php 中定义路由。

重要

route_to() 返回一个路由路径,而不是您网站的完整 URI 路径。如果您的 baseURL 包含子文件夹,则返回值与链接的 URI 不同。在这种情况下,只需使用 url_to() 即可。另请参见 URL 结构

根据控制器::方法组合为您生成路由。如果提供,将考虑参数。

<?php

// The route is defined as:
$routes->get('users/(:num)/gallery/(:num)', 'Galleries::showUserGallery/$1/$2');

?>

<?php

// Generate the route with user ID 15, gallery 12:
route_to('Galleries::showUserGallery', 15, 12);
// Result: '/users/15/gallery/12'

根据路由名称为您生成路由。

<?php

// The route is defined as:
$routes->get('users/(:num)/gallery/(:num)', 'Galleries::showUserGallery/$1/$2', ['as' => 'user_gallery']);

?>

<?php

// Generate the route with user ID 15, gallery 12:
route_to('user_gallery', 15, 12);
// Result: '/users/15/gallery/12'

从 v4.3.0 开始,当您在路由中使用 {locale} 时,您可以选择将语言环境值作为最后一个参数指定。

<?php

// The route is defined as:
$routes->add(
    '{locale}/users/(:num)/gallery/(:num)',
    'Galleries::showUserGallery/$1/$2',
    ['as' => 'user_gallery']
);

?>

<?php

// Generate the route with user ID 15, gallery 12 and locale en:
route_to('user_gallery', 15, 12, 'en');
// Result: '/en/users/15/gallery/12'
service($name[, ...$params])
参数:
  • $name (string) – 要加载的服务的名称

  • $params (mixed) – 传递给服务方法的一个或多个参数。

返回值:

指定的服务类的实例。

返回类型:

混合

提供对系统中定义的任何 服务 的轻松访问。这将始终返回类的共享实例,因此无论在单个请求期间调用此函数多少次,都只创建一个类实例。

示例

<?php

$logger   = service('logger');
$renderer = service('renderer', APPPATH . 'views/');
single_service($name[, ...$params])
参数:
  • $name (string) – 要加载的服务的名称

  • $params (mixed) – 传递给服务方法的一个或多个参数。

返回值:

指定的服务类的实例。

返回类型:

混合

与上面描述的 service() 函数相同,只是对该函数的所有调用都将返回类的新的实例,而 service 每次都返回相同的实例。

slash_item($item)
参数:
  • $item (string) – 配置项名称

返回值:

如果项目存在,则为配置项目,否则为 null

返回类型:

string|null

获取带斜杠的配置文件项(如果非空)

stringify_attributes($attributes[, $js])
参数:
  • $attributes (mixed) – 字符串、键值对数组或对象

  • $js (boolean) – 如果值不需要引号(Javascript 风格),则为 true

返回值:

包含属性键/值对的字符串,以逗号分隔

返回类型:

string

辅助函数,用于将属性的字符串、数组或对象转换为字符串。

全局常量

以下常量始终在应用程序中的任何位置可用。

核心常量

constant APPPATH

指向 app 目录的路径。

constant ROOTPATH

指向项目根目录的路径。位于 APPPATH 之上。

constant SYSTEMPATH

指向 system 目录的路径。

constant FCPATH

指向包含前端控制器的目录的路径。

constant WRITEPATH

指向 writable 目录的路径。

时间常量

constant SECOND

等于 1。

constant MINUTE

等于 60。

constant HOUR

等于 3600。

constant DAY

等于 86400。

constant WEEK

等于 604800。

constant MONTH

等于 2592000。

constant YEAR

等于 31536000。

constant DECADE

等于 315360000。