zoukankan      html  css  js  c++  java
  • Lumen、Laravel开发问题记录

    前言:个人杂项

    2018.5.17 14:55

    1. lumne 连接Sqlite时,一直报错: Call to a member function connection() on null

    解决方法:

    app.php中打开Orm的注释!!!坑爹,谁关了!!!

    17:03

    2. lumen、laravel配置打印sql

    https://blog.csdn.net/zy994914376/article/details/54891068

    当前,自己配置的是lumen。与laravle 不同的是lumen没有make listener的命令,所以有些包需要自己导入。

    2018.6.1 16:58

    1. laravel源码学习,自动加载的疑惑。关于spl_autoload_register()

    https://segmentfault.com/q/1010000012093950

    ps:spl_autoload_register()函数中队列已经存在的方法,如果不unregister的话,是一直存在的!之前,我的认知是以为只能使用一次,这个是错误的。

    2018.6.4 11:15

    1.  laravel源码学习,new static的疑惑(门面的代码部分)

    延迟动态绑定,之前我是了解过的。但是有点不明白的是,在源码中为什么要new static,估计是给其他部分继承的、

    后续,自己看了下有关的知识,更深层次了解了下new static 与new self 的区别。

    参考:https://blog.csdn.net/qq_25600055/article/details/78549435

    自己另一篇讲解:

    http://www.cnblogs.com/mikusnail/p/9132520.html

    2. trait 的总结:

    1) 优先级:当前类的方法会覆盖trait中的方法,而trait中的方法会覆盖基类的方法

    2 ) 多个trait组合:通过逗号分隔,通过use关键字列出多个trait

    3) 冲突的解决:如果两个trait都插入了一个同名的方法,若没明确解决冲突将会产生一个致命的错误。为了解决多个trait在同一个类中的命名冲突,需要使用insteadof操作符来明确指定使用冲突方法中的哪一个。

    同时,可以通过as操作符将其中一个冲突的方法以另一个名称来引入

    4) 修改方法的访问控制:使用as语法可以用来调整方法的访问控制

    5) trait的抽象方法:在trait中可以使用抽象成员,使得类中 必须实现这个抽象方法

    6) trait的静态成员:在trait中可以用静态方法和静态变量

    7)  trait的属性定义:在trait中同样可以定义属性

    2018.6.7 13:26

    1. laravel 的路由namesapce是从 AppHttpControllers开始的,所以只要从这部分后面开始指定即可。

    2018.6.13  15:29

    1. laravel 中的请求处理管道(其实,大白话是一个请求进入框架中的生命周期)使用的是装饰者模式

    简易理解版本的demo():

     1 interface Step {
     2     public static function go(Closure $next);
     3 }
     4 
     5 class FirstStep implements Step {
     6     public static function go(Closure $next) {
     7         echo 'start' . '<br />';
     8         $next();
     9         echo 'end' . '<br />';
    10     }
    11 }
    12 
    13 function goFun($step,$className) {
    14     return function() use($step,$className) {
    15         return $className::go($step);
    16     };
    17 }
    18 
    19 function then() {
    20     $steps = ["FirstStep"];
    21     $prepare = function(){
    22         echo 'prepare' . '<br />';
    23     };
    24     $go = array_reduce($steps,"goFun",$prepare);   //此处可以精简为: call_user_func();
    25     $go();
    26 }
    27 
    28 then();

    执行结果:

    start
    prepare
    end

    ps: 

    其实,laravel内部维护了一个请求需要经过哪些步骤类的数组,通过顺序加载来达到前、后中间件的效果。

    2018.6.14 15:55

    1.  Laravel 中获取文件的.env文件行数的代码:

     $autodetect = ini_get('auto_detect_line_endings');
            ini_set('auto_detect_line_endings', '1');
            $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
            ini_set('auto_detect_line_endings', $autodetect);
    
            return $lines;

    ps:

    1.  auto_detect_line_endings的设置(这个,我真的是不看文档真的不知道,可见author是老司机啊~)

    如果碰到 PHP 在读取文件时不能识别 Macintosh 文件的行结束符,可以激活 auto_detect_line_endings 运行时配置选项。

    2. file函数的第二个参数,w3c上只是一个include_path,其实不然。(可见,平时还是用手册吧)

    2. :todo

    https://www.jianshu.com/p/ee92b36e2839

    2018.6.22 10:35

    1. 关于laravel路由执行的代码,目前尚未深究,先做个记录

    2018.6.28 16:00

    1.  执行迁移 php artisan migrate

    1071 Specified key was too long; max key length is 1000 bytes

    解决方法:

    1. 升级MySql版本到5.5.3以上。(之前我自己升级过,貌似不行。。。可能姿势不对?)

    2. 手动配置迁移命令migrate生成的默认字符串长度,在AppServiceProvider中调用Schema::defaultStringLength方法来实现配置:

      添加,use IlluminateSupportFacadesSchema;

      boot方法中添加,Schema::defaultStringLength(191);

    2018.6.29 14:02

    1. laravel自定义包开发

    https://blog.csdn.net/juner_ge/article/details/51766830

  • 相关阅读:
    JavaScript通过HTML的class来获取HTML元素的方法总结
    HTML5之FileReader接口读取文件
    简单好用用js就可以保存文本文件到本地
    JS获取节点的兄弟,父级,子级元素的方法
    删除window里面删除不掉的文件
    《软件过程改进》练习题
    软件过程改进2016下半年真题及答案
    jquery
    JSP入门
    JAVA方法
  • 原文地址:https://www.cnblogs.com/mikusnail/p/9051122.html
Copyright © 2011-2022 走看看