美文网首页PHP干货分享
YII2 框架 相关学习

YII2 框架 相关学习

作者: JUNE言JUNE语 | 来源:发表于2018-03-06 17:46 被阅读32次

    不定期更新
    【该文档在更新过程中可能会存在部分未完成的段落,请自行忽略】
    资料参考自http://www.yiichina.com/doc/guide/2.0
    感觉还是权威指南靠谱

    2018-03-06

    controller & action
    yii2默认的controller跟action是按-分割的
    每一个action的方法命名都是前缀为action
    例如 controller/action为 MyIndexController/actionMyAction
    那么请求的参数应该是?r=my-index/my-action

    2018-03-07

    Query
    yii2Query内部的queryInternal内置了记录日志的代码

    Command类中queryInternal方法
    Yii::info($rawSql, 'yii\db\Command::query');
    

    只需要在web.php中设置对应类别的日志输出即可

    [
        'class' => 'yii\log\FileTarget',
        'levels' => ['info'],
        'logVars' => [],
        'categories' => ['yii\db\Command::execute'],
        'logFile' => '@runtime/logs/sql.log',
    ],
    

    2018-03-19

    setPathOfAlias

    路径别名
    Yii中使用了大量的路径别名,例如框架核心代码vendor的路径,运行日志runtime等等
    一般情况下在开发的过程中,我们比较多使用的是获取对应的别名。
    如何知道在当前系统上我们,直接在编辑器中全局搜索setPathOfAlias即可

    image.png

    toArray

    yii2支持了Query中直接返回一个二维数组,相当于直接拆箱,不需要再手动封装一层getAttributes(),但是需要注意,避免使用习惯了所有的情况都使用asArray,还是需要根据实际情况去使用的,如果获取数据后直接修改更新,那么则不应该使用asArray方法

    注 另外参考这里 http://www.yiichina.com/doc/guide/2.0/structure-models#fields

    2018-03-20

    Session

    Yii框架已经封装了对Session的一系列操作,对应的对象获取在

    Yii::$app->session;
    

    一般建议使用该对象来操作session,原因是Yii框架已经对其进行了一定的封装,
    当然,我们也可以基于该对象进行二次封装

    信息
    例如我们对session进行操作时需要提前开启session,否则会报错,但是使用Yii框架自带的则不需要考虑这个问题

    log

    1. Yii框架封装
    位置:\yii\BaseYii
    function
    getLogger() // 注 logger是一个单例 全局只有一个logger实例
    setLogger()
    trace()// 该方法只有开启YII_DEBUG且Level=Logger::LEVEL_TRACE才会记录
    error()
    warning()
    info()
    // 后面这两个是用于性能分析
    beginProfile()
    endProfile()
    

    个人意见: 由于logger是全局单例,建议在项目中自己再封装多一层,方便后期如果针对日志有其他的需要补充时可以直接修改封装的方法

    举个例子
    Yii2 打开数据库查询日志
    在 web.php文件中追加

    [
        'class' => 'yii\log\FileTarget',
        'levels' => ['info', 'warning', 'error'],
        'logVars' => [],
        'categories' => ['yii\db\*'],
        'logFile' => '@runtime/logs/sql.log',
    ],
    

    这样就可以指定所有跟DB相关的日志都记录到runtime下面的logs文件夹中的sql.log

    另外,yii框架中的日志是不会实时写入的
    logger object中的日志数量超过flushInterval,log
    才会被刷新到log targets, 当对应的数量超过exportInterval时,才会被刷新到对应的target中(如写到log文件中)
    或者是当一个请求结束,log也会被刷新到对应的target中

    注意不是必要情况下不要修改flushInterval & exportInterval的值

    数据库访问(DAO)

    Model

    batchInsert

    Query

    where

    使用query 生成left join语句的时候,结果会按照ID去去重


    2018-03-26

    Controller

    https://www.jianshu.com/writer#/notebooks/8443116/notes/25740768

    2018-09-02

    好久没更新了

    ArrayHelper

    这是一个蛮好用的数组工具类
    一般情况下数组日常使用的功能内置函数基本都能提供,例如array_column,array_keys,array_value,array_multisort等等

    但是涉及到复杂的数组排序(ArrayHelper::multisort),多维数组取值(ArrayHelper::getValue), 整行获取(ArrayHelper::getColumn)

    相关文章

      网友评论

        本文标题:YII2 框架 相关学习

        本文链接:https://www.haomeiwen.com/subject/bxerfftx.html