基础总结 1.修改默认控制器/方法 yii默认是site控制器,可以在web.php中设置$config中的'defaultRoute'='xxxx';使用自定义默认的控制器。...yii的默认方法是index,可以在vender/yiisoft/yii2/base/Controller.php 中进行初始设置,也可以在控制器中改写defaltAction='action'。...11.自定义函数 yii里面自定义函数可以在vendor/yiisoft/yii2/helpers/文件夹里,新建一个XXX.php文件,然后定义一个自定义类,再定义静态方法YYY()。...最好重写beforeAction()函数,它会在执行每一个action时都执行一下。 并且注意:方法的最后一定要添加return true语句。...>" 然后在JS文件中正常使用。 4.全局常量的定义 我们可以在config文件夹中的params.php中定义全局常量。
本文实例讲述了YII2框架自定义全局函数的方法。分享给大家供大家参考,具体如下: 有些时候我们需要自定义一些全局函数来完成我们的工作。 方法一: 直接写在入口文件处 <?.../vendor/yiisoft/yii2/Yii.php'; $config = require __DIR__ . '/...../vendor/yiisoft/yii2/Yii.php'; //引入自定义函数 require __DIR__ . '/...../config/web.php'; (new yii\web\Application($config))- run(); 方法三: 通过YII的命名空间来完成我们自定义函数的引入,在app下创建helpers...'; } } 然后我们在控制器里就可以通过命名空间来调用了。 <?
这里要说明的参数是pluralize,在restful使用上一直存在两种观点,就是对于资源在url上的表现应该是单数还是复数问题,yii2默认是复数形式,如果你想使用单数可以将pluralize设置为false...在我们设置了urlManager后,yii2就变得智商满满了,当过来一个 GET xgh.nai8.me/xcx/albums 请求后,yii2知道这是一个要获取资源结果集的请求,则会去调用xcx模块下的...actions函数。...小提示:在兄弟连PHP原创视频中对这个原理也进行了详细的解析(《Yii2的RESTful讲解》第三节) 配置控制器 urlManager配置完成,接下来就是写一个控制器了,老沙对此很熟悉,不就是一个继承问题么...是的,这是一个继承问题,如果你想让yii2支持restful,请将对应控制器继承到 yii\rest\ActiveController 上,最简单的一个具有restful资源操作能力的控制器如下图。
Composer 这个是做yii2开发的基石,除非没有办法使用,否则请不要放弃,除了更容易的安装yii2及第三方扩展外,能使用Composer代表着你的服务器最少能运行起来php-cli,那么你就可以使用...bug,这需要你在一个yii2生命周期内持续的观察某些变量的值及赋值路径,具体配置可以参考我之前的课程, 用xdebug支持yii2调试之 - PhpStorm配置篇 当然,yii2自己的debug扩展也极其有用...模型的重要性 很多yii2的初学者喜欢将大量逻辑写到控制器的动作(action)中,这是不对的,我们的重点应该在模型中,而控制器仅仅是做输入输出。 我们拿关联举个例子,下面的这段代码是不好的。...为视图的PHP代码增加一个try 在写action或模型方法的时候,为了保证代码的稳定性,我们一般都会用try....catch语法结构,但是在yii2的视图内很少有人用,记住,也要用!...当然从理念上说也有点不同 行为 一些类附加的属性 父类 一些类共同的属性 我的用法(不一定就是对的),尤其在模块中我喜欢为控制器增加一层父类。
1、Yii2所有的操作都是对象操作。所有的对象都继承Yii中的Object对象。TP中,有对象也有函数。TP中的各个对象没有明显的继承关系。各自为类,定义不同的属性以及方法。...2、Yii2架构组织明确,同一类的对象必定有一个父类,在父类中定义相同的方法。在TP中,同一类对象没有什么继承关系,有的完全没有任何关系,内部提供的一些方法也不同。...比如Controller类,在Yii中有yii/web/Controller,有yii/rest/Controller,同样是控制器,他们必定有一些相同的操作,所有相同的操作都会在yii/base/Controller...在TP5中,普通控制器提供一个tink\Controller对象,同时,框架也允许在应用中的控制器可以不继承think\Controller。...create_time 在数据库中设置自动获取当前时间戳。
前言:个人觉得,学习或温习一套Web框架,在快速阅读一遍文档后,应从路由,控制器,请求/响应对象,数据模型(Logic,Dao,Entity),全局异常处理几个方面下手,这几项了解后,框架上手就游刃有余了...然后我比较喜欢在开工前整理好框架的全局异常处理,方便写 api时错误的统一响应。...在api接口的开发过程中,我们需要对用户数据进行严格的校验,防止非法输入对服务产生安全问题,在开发过程中,我比较喜欢即时的以抛出异常的方式中断请求的处理,并以全局异常处理器格式化处理后统一返回给客户端。...今天就把 yii2 自带的全局异常处理器改写至对 api 友好(yii2的 yii\web\HttpException默认对 web 请求友好,都是以text/html的方式返回错误描述,对api不友好...注册异常处理器 yii2也是以 controller/action 的方式定义一个异常处理器的,我们可以在 components= errorHandler中自定义。
这也就意味着对于一些特定函数,还得封装到控制器中或者路由,该控制器还得控制它生产环境不能对外开放。thinkphp5.0 是 tp 发展路线第一个支持 composer 的。...PHPUnit由Sebastian Bergmann创建,源于Kent Beck的SUnit,是xUnit家族的框架之一。 单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。...总之一句话,使用phpunit进行自动测试,会使你的代码更健壮,减少后期维护的成本,也是一种比较标准的规范,现如今流行的PHP框架都带了单元测试,如Laraval,Symfony,Yii2等,单元测试已经成了标配...项目内安装PHPUnit 使用composer方式安装 PHPUnit 项目根目录下执行下面这段代码 composer require phpunit/phpunit 自动下载适配版本 我下载的时4.8.36...测试项目内方法 tp5项目下的控制器在 F:\wamp\wamp\www\tp5\application\index\controller 文件夹下 写一个简单的方法 ?
在每一个Model当中,attributes和attributes label其实跟Yii1.1差不多,但让我特别值得拍手称快的是在Yii2中,除了rules()函数之外,还有scenarios()函数来增强...$_POST['userModel']; } 而在Yii2中,你只需要这样: $model->load($_POST); 这里的关键就是load()函数会自动检查在model->formName()....定义的 视图(Views) 在Yii2的Views中也有一些小小的变化,最明显的变化莫过于render()函数了,现在它会返回一个值,而不是像Yii1.1的那样输出(output)值,比如: public...在Views还有一个值得注意的地方就是this变量,在Yii1.1中,this可以说就是链接Controller和Views的中介;而在Yii2中, 控制器(Controllers) 首先直接来看一下代码...写在最后 正如你在这篇文章看到的一样,在Yii2中几乎所有的MVC组件变化都使得Yii2更好用了,我相信这会带给开发者更好的的开发体验,毕竟Yii2 中看到了一丝丝优雅的样子!
Composer 的全局配置文件 config.json 中。...见“方法二” 方法一: 修改 composer 的全局配置文件(推荐方式) 打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令: 复制 composer config...composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加): 复制 "repositories": { "packagist": { "type...首先你需要在你的web服务器(apache或者nginx)上配置一台虚拟主机,其根目录指向这个目录 /xxx/....../advanced;配置好虚拟主机之后,你可以在浏览器的地址栏上输入 http://你配置的域名/frontend/web/ 看效果了,界面上显示一个大大的Congratulations即表示安装成功!
Yii2底层分析 我是从入口处分析的。...: 在Module里,也就是module使用的时候,可以通过self::getInstance()获取App对象,类似于Yii::$app。...} $this->init(); 这句实际上执行的是yii\base\Module.php /* 取出控制器的命名空间,您也可以理解为路径(* 注:第一次加载它的时候。)...表面看起来没有太多的意义,实则不然,yii2的大部分组件都是以Object为基类的, 所以init函数很重要,控制器、模型、模块module,自定义组件等都可以去实现init方法。...比如说默认的控制器SiteController吧。在里面写一个init方法,当你访问site控制器下任意的$route路径, 都会先执行init方法。作用大不?其它组件同样如此。
过滤器 什么是过滤器 过滤器是控制器动作执行之前或之后需要执行的代码。该代码以对象的形式执行,则应该使用类的方式定义并申明。 过滤器本质上是一种特殊的行为。...为什么使用过滤器 通常情况下,过滤器将代码绑定到所有的操作上,也就是说,每一个操作的执行,都需要先或后执行过滤器,所以,可以用来执行权限检测、缓存处理等事情 在哪里使用过滤器 在控制器中,定义: public.../或 yii\base\ActionFilter::afterAction() 方法来创建动作的过滤器 定义在beforeAction()中的代码会在操作执行之前执行 定义在afterAction(...创建模型.png 创建控制器,实例化表单模型和渲染视图 ? 创建控制器.png 视图中使用ActiveForm创建表单元素 ? 创建元素表单.png 在控制器中接收表单数据并绑定数据到表单模型 ?...,在Yii2中,不需要自己去写验证,直接在表单模型的 rules 中调用 captcha 验证就可以了 ['verifyCode','captcha'], 数据分页 Yii2也提供了类似于TP的数据分页类
yii2目前还处于beta版本,相关文档也一直在变化,如有疏漏,还请及时反馈 Yii2安装 两种安装方式,composer或者下载zip包 使用composer安装初始化yii2项目(推荐)...下 命令行进入workspace 执行如下命令,初始化一个基于yii2的应用 php composer.phar create-project --prefer-dist --stability=dev...官方地址 源码安装 源码包地址 yii2-beta 下载源码包解压后即yii2的框架源文件,然后根据自己的实际情况构建目录结构,进行开发 项目初始化完成以后,配置yii2的配置文件,配置文件一般放在.../ 运行时生成文件目录,要求读写权限 tests/ 单元测试目录 注意一定要在配置文件里定义 vendorPath的路径 环境要求 PHP 5.4 以上...其他要求运行 php requirements.php监测 nginx虚拟机配置 使用此配置时,注意设定php.ini的一个参数值 cgi.fix_pathinfo=0 server { set
"n"; } } 切到项目根目录,命令行输出 php yii hello,输出hello world 说明环境正常 二,书写代码: 可以在commands文件夹新建控制器文件,继承yiiconsoleController...;定义类方法,actionIndex方法一般为默认路由, 调试时在项目根目录输入php yii 加上控制器名字(小写)/路由(index的话可省略) 三,linux定时任务crontab. 1关于crontab...1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 3用法示例 30 21 * /usr/local...0 /1 /usr/local/etc/rc.d/lighttpd restart 每一小时重启apache 四,linux定时任务crontab执行commands下控制器php文件内容 按第三步所写...,后面加上 php yii + 项目根路径 + 路由(控制器名/方法名)即可 以上这篇yii2 commands模式以及配置crontab定时任务的方法就是小编分享给大家的全部内容了,希望能给大家一个参考
哈喽,我是老鱼,一名致力于在技术道路上的终身学习者、实践者、分享者! Leadshop是一款免费商城系统,基于Yii2开发,支持composer,优化核心,减少依赖,基于全新的架构思想和命名空间。...前端技术栈为ES6、vue、vuex、vue-router、vue-cli、axios、element-ui、uni-app,后端技术栈有Yii2、Jwt、Mysql、Easy-SMS。...接口标准 灵活创建模型控制器,易于扩展开发 配置文件可分离,方便管理 重写的自动验证和完成 简化扩展机制,提升开发速度 API支持完善,方便二次开发 内置WeChat微信开发框架,微信接入更加快捷,简单...使用ORM自动创建表结构,提升开发速度 支持数据库结构、数据、模板在线缓存清除,提升用户体验 客户端完善的交互效果和动画,提升用户端视觉体验 支持在线一键安装,方便快捷。...中,需要在.htaccess中添加 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 设置代码执行目录为/server/web。
当然,几句话完的东西实际上要做的工作很多,PHP框架会在每次接受请求时,定义常量,加载配置文件、基础类,根据访问的URL进行逻辑判断,选择对应的(模块)控制器和方法,并且自动加载对应类,处理完请求后,框架会选择并渲染对应的模板文件...而类的自动加载,我们知道的__autoload()魔术函数,它会在你实例化一个当前路径找不到的对象时自动调用,根据传入的类名,在函数体内加载对应的类文件。...③ 本次更新,更新了函数规范上的一些问题,如将函数尽量的独立化,每一个函数尽量只单独做好一件事情,尽量减少函数依赖。还对框架的整体优化了一下,添加了SQ全局类,用以处理全局函数,变量。...另外,call_user_func系列函数还可以传入在第一个参数里传入匿名参数,可以很方便的回调某些事件,这些特性在复杂的框架里应用也十分广泛,如yii2的事件机制里回调函数的使用就是基于此。...; } 其他全局函数 顺便再说一下其他的全局处理函数: ① set_shutdown_function('shutDownHandler')来执行脚本结束时的函数,此函数即使是在ERROR结束后,也会自动调用
我们在使用YII2框架的过程中,对于框架有两种安装方式,一种是使用官网归档文件,一种是使用Compoer包管理工具。...本文讨论的问题集中在使用Compoer安装YII2框架及更新组件包,升级YII2主版本时遇到的一些问题。 ? 前置条件 首先使用Composer包工具的需要满足以下两个前提,不区分操作系统。...1 电脑需要安装Composer包管理工具,并且全局可直接使用 2 安装Composer Asset插件,Asset插件需要合适的版本。 两个条件在安装的同时,都必须注意合适的版本。...查阅网络很多资料, Asset插件相关的问题主要集中在【安装Composer Asset插件老是失败】,解决方案都是给出执行具体的命令,安装这个插件的关键在于 确定当时fxp/composer-asset-plugin...以上解决问题的路径是这样的,发现目前的YII2版本不支持PHP7及以上环境,于是使用Composer更新YII2框架版本,更新过程中一系列问题造成更新识别,依次定位到Asset插件问题并且更新对应的版本
在登录判断上,我们先进行小程序是否含有access_token来判断,当然即便存在,还需要对checkSession进行一次判断。...我的推荐方式是静默状态的自动登录一次再,先看代码。 if (response.statusCode === 401) { Session.clear(); if (!...但是我们不能一直在执行请求失败就登录操作,因此可以设置一个开关hasRetried,只进行一次尝试。...让yii2能解析json的请求内容 默认情况下yii2并不能识别请求中的json格式,而我们小程序在发起请求时喜欢用它,因此我们要对yii2进行一下配置。...在yii2的restful中的用户认证使用了行为机制,我们来看下流程代码 // 在需要授权的控制器内 class CardController extends ActiveController {
本文实例讲述了YII2框架中behavior行为的理解与使用方法。分享给大家供大家参考,具体如下: YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。...那么我们就创建一个返回数据行为来扩展这两个控制器。 我们在项目目录下创建common目录,并创建ReturnBehavior.php,代码如下: <?...use yii\web\Response; //必须继承自yii\base\Behavior class ReturnBehavior extends Behavior { //返回类型,通过控制器里的...[ //控制器方法执行后触发事件,调用returnData函数 Controller::EVENT_AFTER_ACTION = 'returnData', ];...'; } } 然后我们在两个控制器中配置behaviors()来使用行为: GoodsController.php代码如下: <?
先看 Yii.php 内的逻辑 /** * Yii::autoload 内执行过程 * 1、先查看类是否在 Yii::$classMap 中存在,存在直接调用 getAlias 生成类文件物理地址...,调用上级某一层的构造函数,而不是单纯的父类构造函数 * 上级某一层的构造函数中如果调用了某个方法 * 并且这个方法被下层类重写过,那么会直接执行重写之后的方法 * 所以执行...实例化对象(创建并运行各个扩展声明的 引导组件 ) 2、根据配置文件配置的 bootstrap 参数,使用 createObject 实例化对象(创建并运行各个 应用组件 以及在应用的 bootstrap...bootstrap 方法 4、注意:bootstrap 会直接将配置的类实例化,而不是在第一次使用的时候实例化,所以为了性能考虑 bootstrap 中的配置应该尽量少,而且只配置一些全局使用的类...,在 Application 及其父类中,都是不存在的 只有私有属性 $_modules,存在于 yii\base\Module 类中 当 new yii\web\Application 执行 yii
前言 在项目中,推荐使用 Yii2 内置的 URL 工具类生成链接,这样可以非常便捷的管理整站的 URL 行为:比如通过修改配置改变整站的URL格式等。...URL 更多高级的用法参见官方文档,这篇文章仅仅介绍 Yii2 生成 URL 的几种方式。 Yii2 默认的 URL 链接格式 Yii2 默认的 URL 链接格式是指为开启 URL 美化时的格式。...使用内置的 URL 生成工具,以后可以在不改变源码的情况通过配置即可美化整站的 URL URL 管理器 URL 管理器是一个名叫 urlManager 的内置应用组件。..., true); // 字符参数,没啥用 // 显示:kernel/article/view echo Url::to('kernel/article/view'); // 创建路由,数组参数的自动调用...r=kernel/article/view echo Url::toRoute([]); // 相同的模块和控制器,不同的动作(仅继承参数r的值) // 显示:/index.php?
领取专属 10元无门槛券
手把手带您无忧上云