zoukankan      html  css  js  c++  java
  • yii2 日志

    原文地址:http://blog.csdn.net/woaixhq/article/details/46364223

    对于yii的研究,还没有那么深刻,之所以在这种情况下写,还是考虑到了后来入门人没有中文资料,而又无可下手的尴尬境地。希望对新手和我自己多一份帮助吧。总结几个自己的经验吧。环境的配置我就不做解释了。这个可以从网上找。

    1关于定义系统参数的问题

    在项目中config的目录中,分别有params-local.php和params.php的俩个php文件,这俩个文件了可以设置你所需要的 全局的参数。具体目录是放在common、frontend、backend的config里,看你所需了。这俩个文件的区别,在我看来,就是是否是本地 化的区别。如果有参数需要根据网站部署环境而改变,最好还是放在params-local.php里,params-local.php最好不要放在项目 版本库里。params.php里的参数还是要存放比较稳定的参数。另外,在这俩个里边设置了参数,调用是没区别的。举个例子:

    在params-local.php中

    1. <?php  
    2. return [  
    3.     'front_url' => 'http://www.aaa.cn/'  
    4. ];  

    在params.php中

    1. <?php  
    2.   
    3. return [  
    4.     'adminEmail' => 'admin@example.com',  
    5. ];  

    在项目中调用都可以以Yii::$app->params['adminEmail']来调用


    2,创建自己的小组件(其实就是可以把公用的方法组合一下。方便程序调用)

    在common下创建components目录,在此目录下新建Functions.php文件。Function类代码如下

    1. <?php  
    2.   
    3. namespace commoncomponents;  
    4.   
    5. use Yii;  
    6. use yiiaseComponent;  
    7.   
    8. class Functions extends Component {  
    9.   
    10.     public function test($t="") {  
    11.         echo $t;  
    12.     }  
    13.      
    14. }  

    此类必须继承Component。

    然后再common/config/main.php中的components节点,增加

    1. 'functions' => [  
    2.             'class' => 'commoncomponentsFunctions'  
    3.         ]  
    加完之后,代码结构形如
    1. <?php  
    2. return [  
    3.     'timeZone' => 'Asia/Shanghai',  
    4.     'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',  
    5.     'components' => [  
    6.         'cache' => [  
    7.             'class' => 'yiicachingFileCache',  
    8.         ],  
    9.         'urlManager' => [  
    10.             'enablePrettyUrl' => true,  
    11.             'showScriptName' => false,  
    12.         ],  
    13.         'functions' => [  
    14.             'class' => 'commoncomponentsFunctions'  
    15.         ]  
    16.     ],  
    17.   
    18. ];  

    这时候调用就简单了。利用Yii::$app->functions->test("aaa");


    3.ActiveForm开发时候需要的问题

    对于ActiveForm的验证,实际使用当中总结出一个问题:

    <?= $form->field($model, 'description', ['template' =& gt; '{input}'])->textInput() ?>对于这段代码尤其需要注意,template里千万不能出现不完整标签,否 则验证失效,即['template' => '<td>{input}</td>']这样,验证是不起作用的,但是 ['template' => '<table><tr><td>{input}</td>& lt;/tr></table>']这样是有效的。虽然不会这样布局,但还是希望大家能注意。布局还是div布局


    4关于查询的一些总结

    1)Adv::find()->where(['pos_id'=>1])->andwhere(["status"=> 0])->all();   //查询返回全部 // ->one()  查询1个结果  // ->count()  获取数量
    2)查询一个结果的时候,也可以这样实现
    Adv::findOne($id);或者Adv::findOne($condition);
    3) 多表联查 
    $model=new Adv();
    $model->find()->join(‘LEFT JOIN‘,‘adv_pos‘,‘adv_pos.id=adv.pos_id‘)
    ->select()->//字段
                ->where(‘adv.status‘=>0)
                ->andwhere(‘pos_id=1‘)
                ->one();
    4)like查询  andFilterWhere 例如
    $order->andFilterWhere(['like','product_title',  $product_title]);
    也可以对大于,小于进行这样的操作
    注意一个筛选查询
    $query->andFilterWhere(['like', 'ORG_CODE', $this->ORG_CODE])
          ->andFilterWhere(['between', 'CREATED_AT', $this->START_AT, $this->END_AT]);//这样是错误的
    $query->andFilterWhere(['like', 'ORG_CODE', $this->ORG_CODE])
          ->andFilterWhere(['and', 'CREATED_AT', $this->START_AT, $this->END_AT]);//正确


    5日志的用法

    1)文件日志缓存

    main.php中components增加

    1. 'log' => [  
    2.             'traceLevel' => YII_DEBUG ? 3 : 0,  
    3.             'targets' => [  
    4.                 [  
    5.                     'class' => 'yiilogFileTarget',  
    6.                     'levels' => ['error', 'warning'],  
    7.                 ],  
    8.                 //在原配置的基础上,增加以下配置(新增一个target)  
    9.                 [  
    10.                    'class' => 'yiilogFileTarget',  
    11.                    'levels' => ['error', 'warning','info'],  
    12.                    'logVars'=>[],  
    13.                    //表示以yiidb或者appmodels开头的分类都会写入这个文件  
    14.                    'categories'=>['yiidb*','appmodels*'],  
    15.                    //表示写入到文件sql.log中年月日记录日志  
    16.                    'logFile'=>'@runtime/../logs/sql/sql.log'.date('Ymd'),  
    17.                ],  
    18.             ],  
    19.               
    20.         ],  

    项目中调用

    1. $time = microtime(true);   
    2. $log = new FileTarget();   
    3. $log->logFile = Yii::$app->getRuntimePath() . '/logs/test.log'; //<span style="font-family: Arial, Helvetica, sans-serif;">getRuntimePath获取runtime路径</span>  
    4. $log->messages[] = ['test',1,'test',$time]; //第一个参数:输出的信息,第二个参数1:error,2:warning,3第三个可以告诉位置,第四个时间  
    5. $log->export();   




    文章总结到这里,后续会继续更新。

  • 相关阅读:
    XP系统无法安装net framework 4.0 解决方法
    StructureMap DI & IoC 工具介绍
    Castle ActiveRecord学习实践(7)级联
    Error.popStackFrame 函数
    抽象泄漏(leaky abstraction)
    [Exception]IIS6:The entry "*" has already been added的解决方法
    ASP.NET 设计模式 读书摘记2
    PHP模块开发(一) PHP环境搭建
    PHP函数HTTP 相关函数
    PHP函数FTP文件传输函数
  • 原文地址:https://www.cnblogs.com/bjfy/p/5895735.html
Copyright © 2011-2022 走看看