由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。
例如,Yii::app()->user;Yii::app()->params['name'];等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。(原文地址)
我们可以保存在globals.php在protected目录下。然后,在入口脚本index.php的,我们包括在开始文件require('path/to/globals.php'); require('path/to/yii.php');现在我们可以在应用的任何地方使用我们的全局函数,例如可以使用user()代替Yii::app()->user。 注:如果你打算发布一个可重用的组件,请不要组件中使用全局函数,在不同的应用配置中,可能导致无法使用。 同时,也应注意与第三方库的冲突,可考虑对每个函数前加上自己的前缀,已做区分,例如框架核心均已C为前缀。
/** * This is the shortcut to DIRECTORY_SEPARATOR */ defined('DS') or define('DS',DIRECTORY_SEPARATOR); /** * This is the shortcut to Yii::app() */ function app() { return Yii::app(); } /** * This is the shortcut to Yii::app()->clientScript */ function cs() { // You could also call the client script instance via Yii::app()->clientScript // But this is faster return Yii::app()->getClientScript(); } /** * This is the shortcut to Yii::app()->user. */ function user() { return Yii::app()->getUser(); } /** * This is the shortcut to Yii::app()->createUrl() */ function url($route,$params=array(),$ampersand='&') { return Yii::app()->createUrl($route,$params,$ampersand); } /** * This is the shortcut to CHtml::encode */ function h($text) { return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset); } /** * This is the shortcut to CHtml::link() */ function l($text, $url = '#', $htmlOptions = array()) { return CHtml::link($text, $url, $htmlOptions); } /** * This is the shortcut to Yii::t() with default category = 'stay' */ function t($message,$category='stay',$params=array(), $source=null,$language=null) { return Yii::t($category, $message, $params, $source, $language); } /** * This is the shortcut to Yii::app()->request->baseUrl * If the parameter is given, it will be returned and prefixed with the app baseUrl. */ function bu($url=null) { static $baseUrl; if ($baseUrl===null) $baseUrl=Yii::app()->getRequest()->getBaseUrl(); return $url===null ? $baseUrl : $baseUrl.'/'.ltrim($url,'/'); } /** * Returns the named application parameter. * This is the shortcut to Yii::app()->params[$name]. */ function param($name) { return Yii::app()->params[$name]; } /** * A useful one that I use in development is the following * which dumps the target with syntax highlighting on by default */ function dump($target) { return CVarDumper::dump($target, 10, true) ; }
方法二:
建立一个类,把公用函数定义的静态函数,放在components里边,即可在其他地方通过类名::函数()来进行调用。
本文转自http://www.9ihl.com/archives/category/yii,感谢作者分享。
相关推荐
本文实例讲述了Yii全局函数用法。分享给大家供大家参考,具体如下: 由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。 例如,Yii::app()->user;Yii::app()->...
通过这些方法,开发者可以在YII2框架中灵活地定义和使用自定义全局函数,为开发工作提供便利。同时,合理利用YII2框架提供的各种特性,可以进一步提高开发效率和程序性能。如果想要深入学习YII2框架以及PHP开发的更...
以上只是Yii框架函数使用的一小部分,实际上Yii提供了大量功能强大的组件,如MVC架构、缓存管理、数据库操作、表单处理、安全认证等。学习和掌握Yii的函数用法,能极大地提升PHP开发效率。对于想要深入学习Yii的...
在Yii2框架中添加全局函数,推荐使用Composer自动加载的方式。这种方式不仅避免了修改入口文件带来的问题,而且利于项目的长期维护和扩展。只需在`composer.json`中添加一个路径,然后通过Composer管理全局函数,就...
通过全局函数`Yii::app()`,可以从框架中的任何位置访问当前的应用程序实例。 #### 四、扩展与定制 随着应用功能的增加和复杂性的提升,可能需要将应用程序进一步分割成多个子应用(子应用程序)。这不仅有助于...
它没有定义任何全局函数或变量。而且,它定义的类层次结构允许最大的可重用性和定制。 16、友好的使用第三方代码:Yii精心设计让它第三方代码非常好的工作。例如,你可以在你的Yii应用程序中使用PEAR或Zend ...
在布局方面,Yii支持布局文件(Layout),如`colum1.php`,用于定义全局的页面结构。通过`render()`方法,视图渲染会包含布局文件,而`renderPartial()`方法则只渲染视图本身,不包含布局。 综上所述,Yii框架凭借...
配置文件一般位于`protected/config/main.php`,用于设置应用的全局参数,如数据库连接、组件配置等。 2. **入口文件`index.php`流程** 这是应用的起始点,主要任务是加载Yii框架的引导文件,初始化环境,并实例...
- **其他特性**: 如自定义背景颜色、使用HTML内容、设置全局默认选项等。 5. **优化和扩展** 除了基本的用法,你还可以根据需求扩展这个小部件,比如添加更多预定义的提示类型,或者封装一些常用的操作,比如删除...
Yii 使用 PHP5 的 SPL(Standard PHP Library)中的 `spl_autoload_register()` 函数来实现类的自动加载。在 `YiiBase.php` 文件中,`YiiBase::autoload()` 静态方法被注册为自动加载处理器。当尝试实例化一个类或...
- **实现方式**:使用jQuery或Yii内置函数触发加载动画效果。 ##### 14. 为ActiveRecord添加命名范围 - **知识点**:了解如何为ActiveRecord模型增加命名范围。 - **实现方式**:通过重写模型类,添加自定义的...
11. **components**目录:自定义组件存放处,可以是全局的服务、行为或助手函数,提高代码复用性。 在实际开发中,Yii CMS还可能包含其他组件,如用户认证(User Authentication)、权限控制(Access Control)、...
在Yii框架中,所有的应用组件都被注册在一个全局的服务定位器中,通常使用\Yii::$app来访问。每个组件都拥有一个唯一的ID,这个ID用于区分不同的组件。例如,\Yii::$app->db用于访问数据库组件,\Yii::$app->cache...
- **页面缓存**:可全局缓存整个页面,或者根据路由、动作进行局部缓存。 4. **安全**: - **验证**:Yii提供了一系列内置的验证规则,用于表单数据的验证。 - **权限控制**:基于RBAC(Role-Based Access ...
该软件包提供了Yii 2依赖注入器容器,该容器能够自动解决嵌套的构造函数接口类型的依赖项。 要求 Yii 2.0.39.3+ PHP 7.0以上 安装 composer require bizley/deep-instantiate:^1.0 用法 直接-只需调用new \Bizley\...
在这个文件中,我们通常会看到Yii::createWebApplication()函数的调用,这个函数创建了一个Web应用程序实例,并加载了配置文件,使得全局的Yii对象可以通过Yii::app()访问。配置文件中的数据会被绑定到这个全局对象...