PHP最佳实践

1 PHP获取时间戳:echo  time();

时间戳转换 date('Y-m-d H:i:s', $时间戳);

2 linux 显示命令 ls 显示所有文件夹

查看命令:tail -200 runtime/logs/app.log

退出vim   :qz  :xa

3 数据库日志: tail -f /database/mysql/query.log

composer安装

compose官网

https://getcomposer.org/download/

在PHP环境下执行命令

php -r "readfile('https://getcomposer.org/installer');" | php

执行成功

 Yii2.0 中配置多个数据库

1 config文件夹下 增加新的数据库配置,格式如 passportdb.php

<?php

return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=;dbname',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
];?>

2 将数据库文件引入到程序配置文件 web.php中

3 在model中通过 Yii::$app->passportdb;访问数据库

public static  function getDb() {
return Yii::$app->passportdb;
}

4 程序 如gii自动生成代码时  通过models的 getDb() 访问数据库

rules常用规则

return array(

    //必须填写
array('email, username, password,agree,verifyPassword,verifyCode', 'required'), //检查用户名是否重复
array('email','unique','message'=>'用户名已占用'), //用户输入最大的字符限制
array('email, username', 'length', 'max'=>64), //限制用户最小长度和最大长度
array('username', 'length', 'max'=>7, 'min'=>2, 'tooLong'=>'用户名请输入长度为4-14个字符', 'tooShort'=>'用户名请输入长度为2-7个字'), //限制密码最小长度和最大长度
array('password', 'length', 'max'=>22, 'min'=>6, 'tooLong'=>'密码请输入长度为6-22位字符', 'tooShort'=>'密码请输入长度为6-22位字符'), //判断用户输入的是否是邮件
array('email','email','message'=>'邮箱格式错误'), //检查用户输入的密码是否是一样的
array('verifyPassword', 'compare', 'compareAttribute'=>'password', 'message'=>'请再输入确认密码'), //检查用户是否同意协议条款
array('agree', 'required', 'requiredValue'=>true,'message'=>'请确认是否同意隐私权协议条款'), //判断是否是日期格式
array('created', 'date', 'format'=>'yyyy/MM/dd/ HH:mm:ss'),
  //判断是否包含输入的字符
array('superuser', 'in', 'range' => array(0, 1)),
//正则验证器:
array('name','match','pattern'=>'/^[a-z0-9\-_]+$/'),
//数字验证器:
array('id', 'numerical', 'min'=>1, 'max'=>10, 'integerOnly'=>true),
//类型验证 integer,float,string,array,date,time,datetime
array('created', 'type', 'datetime'),
//文件验证:
array('filename', 'file', 'allowEmpty'=>true, 'types'=>'zip, rar, xls, pdf, ppt','tooLarge'=>'图片不要超过800K'), array('url',
'file', //定义为file类型
'allowEmpty'=>true,
'types'=>'jpg,png,gif,doc,docx,pdf,xls,xlsx,zip,rar,ppt,pptx', //上传文件的类型
'maxSize'=>1024*1024*10, //上传大小限制,注意不是php.ini中的上传文件大小
'tooLarge'=>'文件大于10M,上传失败!请上传小于10M的文件!'
),

yii2 两种模块的区别

主要区别在于login机制不一样。

基础模板 的登录login view文件里 有这么一句话【To modify the username/password, please check out the code app\models\User::$users.】 实际上可以理解为:

基础版默认的用户验证信息不是存在user表里,存在文件models里.

Yii2异常处理

Yii中的错误处理和纯PHP不同。首先,Yii将转换所有非致命错误为异常(exceptions):

Yii 缺省出错页面已经足够好。不过你当然可以定制化这个出错页面来满足项目需求。

最简单的方法是创建一个定制错误页面。首先你需要在应用程序config中配置 errorHandler 组件:

// ...
'components' => [
// ...
'errorHandler' => [
'errorAction' => 'site/error',
],
]

这样当错误发生时,Yii 将执行 site-controller 的 error-action 方法。该方法首先检查是否有异常发生,如有则传递异常并绘制出错页面:

public function actionError()
{
$exception = \Yii::$app->errorHandler->exception;
if ($exception !== null) {
return $this->render('error', ['exception' => $exception]);
}
}

YIi2参考文档

Yii2中的零碎知识点的更多相关文章

  1. salesforce零基础学习(八十八)项目中的零碎知识点小总结(二)

    通过做项目以及群里面的一些大神的聊天,总结一下关于项目中的两个知识点,以后当做参考. 一. 在custom setting中配置集成接口信息后刷sandbox的问题 我们做项目时,经常会遇见和其他平台 ...

  2. salesforce零基础学习(一百一十二)项目中的零碎知识点小总结(四)

    本篇参考: https://trailblazer.salesforce.com/issues_view?id=a1p4V0000003znDQAQ https://salesforce.stacke ...

  3. salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)

    项目终于告一段落,虽然比较苦逼,不过也学到了好多知识,总结一下,以后当作参考. 一.visualforce标签中使用html相关的属性使用 曾经看文档没有看得仔细,导致开发的时候走了一些弯路.还好得到 ...

  4. iOS开发中的零碎知识点笔记 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 1.关联 objc_setAssociatedObject关联是指把两个对象相互关联起来,使得其中的一个对象作为另外 ...

  5. salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_ke ...

  6. salesforce零基础学习(一百零三)项目中的零碎知识点小总结(五)

    本篇参考:Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On https://developer ...

  7. salesforce零基础学习(九十)项目中的零碎知识点小总结(三)

    本次的内容其实大部分人都遇到过,也知道解决方案.但是因为没有牢记于心,导致问题再次出现还是花费了一点时间去排查了原因.在此记录下来,好记性不如烂笔头,争取下次发现类似的现象可以直接就知道原因.废话少说 ...

  8. webdriver零碎知识点

    #零碎知识点,用于记录平时遇到的比较杂的知识点 driver.current_url 获取当前url phantomjs 实现无浏览器界面自动化测试(driver = webdriver.Phanto ...

  9. yii2中如何使用modal弹窗之基本使用

    作者:白狼 出处:http://www.manks.top/yii2_modal_baseuse.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...

随机推荐

  1. Unity 3D

    Assets(模型.贴图.脚本) Library(快捷方式.暂存文件) ProjectSettings(设置信息) Temp(临时文件) Generate Colliders(是否碰撞) Terrai ...

  2. Tomcat单向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端安全通信

    众所周知,iOS9已经开始在联网方面默认强制使用Https替换原来的Http请求了,虽然Http和Https各有各的优势,但是总得来说,到了现在这个安全的信息时代,开发者已经离不开Https了. 网上 ...

  3. My安卓知识5--百度地图api的使用,周边信息检索

    虽然查了很多资料,但是这个问题还是解决不了,不知道为什么检索城市内的相关信息能用,检索周边信息语句就是用不了.代码如下,第一段是检索保定市内的加油站,第二段是检索周边的加油站.centerToMyLo ...

  4. Error:SSL peer shut down incorrectly

    从别的地方拷贝过来的项目有时会报这个错误,解决方法 File -> Project Structure -> project 对比本地项目和拷贝项目并修改至与本地项目一致

  5. CPU虚拟化的常见技术

    关键词:cpu虚拟化,KVM,Host-PassThrough,Nested,CGroup,NUMA,热添加 云计算虚拟化技术主要包括三个领域:计算.存储.网络 本文主要总结了计算虚拟化领域中的CPU ...

  6. Bootstrap组件

    1.Bootstrap组件——Glyphicons图标字体 图标字体:可以表示的文字不是abcd或1234,而是一个又一个图形符号,比直接使用图片好处:可以任意放大不会失真:所有能使用文字的地方都可以 ...

  7. 寒假学习计划(c++作业2)

    C++学习计划 一.课程概况 1.课程名称:c++远征攻略 2.授课人姓名:james_yuan 3.课程链接地址:http://www.imooc.com/course/programdetail/ ...

  8. H5中的拖拽事件

    最近浏览了张鑫旭大神的基于HTML5 drag/drop模块拖动插入排序删除完整实例,感觉受益匪浅.于是将最做的demo记录下来. 首先浏览一下事件,这些事件比较好记,只要记住用在谁的身上就好了,无非 ...

  9. Swift基础语法(二)

    操作符 swift中运算符基本基础于c,下面我就给大家白话白话那些被优化过的运算符们 //加号减号的妙用 var a= var b= -a//此时b=-1 var c = +b//此时 c=-1 va ...

  10. 【12-JDBC编程】

    JDBC编程 JDBC概述 •通过使用JDBC API,Java程序可以非常方便地操作各种主流数据库,这是使Java语言的巨大 魅力所在.而且由于Java语言的跨平台特性,所以使用JDBC API所编 ...