全局函数和常量
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
的详细信息,请参阅 加载类。
- cookie(string $name[, string $value = ''[, array $options = []]])
- 参数:
$name (
string
) – Cookie 名称$value (
string
) – Cookie 值$options (
array
) – Cookie 选项
- 返回类型:
Cookie
- 返回值:
Cookie
实例- 抛出:
CookieException
创建新 Cookie 实例的更简单方法。
- cookies([array $cookies = [][, bool $getGlobal = true]])
- 参数:
$cookies (
array
) – 如果getGlobal
为false
,则传递给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'。
有效的上下文值:
html
、js
、css
、url
、attr
、raw
- 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);
有关更多详细信息,请参阅 视图 页面。
杂项函数
- 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。