最近发表的评论
  • MySQL 共享锁 (lock in share mode),排他锁 (for update) at 1个月前

    @lovecn

    我曾经也疑惑过! 不过后来, 我发现:

    • a. 表引擎是否innodb
    • b. 是否开启事务, 然后再操作 锁表
    # 开启事务
    begin;
    
    # 加锁
    select *from t where a=1 for update;
    
    # 提交事务
    commit;
    
  • 没错,这就是面向对象编程(设计模式)需要遵循的 6 个基本原则 at 3个月前

    学到啦!

  • 教你在不使用框架的情况下也能写出现代化 PHP 代码 at 5个月前

    现在打开 http://localhost:8080/hello ,开香槟吧!

    到这里, 路由就不行了! 有大神, 成功了么?

    file

    <?php
    declare(strict_types=1);
    
    use DI\ContainerBuilder;
    use ExampleApp\HelloWorld;
    use FastRoute\RouteCollector;
    use Middlewares\FastRoute;
    use Middlewares\RequestHandler;
    use Relay\Relay;
    use Zend\Diactoros\ServerRequestFactory;
    use function DI\create;
    use function FastRoute\simpleDispatcher;
    
    require_once dirname(__DIR__) . '/vendor/autoload.php';
    
    $containerBuilder = new ContainerBuilder();
    $containerBuilder->useAutowiring(false);
    $containerBuilder->useAnnotations(false);
    $containerBuilder->addDefinitions([
        HelloWorld::class => create(HelloWorld::class)
    ]);
    
    $container = $containerBuilder->build();
    
    $routes = simpleDispatcher(function (RouteCollector $r) {
        $r->get('/hello', HelloWorld::class);
    });
    
    $middlewareQueue[] = new FastRoute($routes);
    $middlewareQueue[] = new RequestHandler();
    
    $requestHandler = new Relay($middlewareQueue);
    $requestHandler->handle(ServerRequestFactory::fromGlobals());
    
  • 教你在不使用框架的情况下也能写出现代化 PHP 代码 at 5个月前

    例子代码:

    <?php
    declare(strict_types=1);
    
    namespace ExampleApp;
    
    class HelloWorld
    {
        public function announce(): void  //  void类型 返回值, php7.1新特性
        {
            echo 'Hello, autoloaded world';
        }
    }

    php版本小于7.1 , 这一行 public function announce(): void 会报错如下:

    Hello, autoloaded world
    
    Fatal error: Uncaught TypeError: Return value of ExampleApp\HelloWorld::announce() must be an instance of ExampleApp\void, none returned in D:\my_git\my_framework\src\HelloWorld.php:11 Stack trace: #0 D:\my_git\my_framework\public\index.php(7): ExampleApp\HelloWorld->announce() #1 {main} thrown in D:\my_git\my_framework\src\HelloWorld.php on line 11

    php7.1新特性

    Void 函数

    一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,NULL 不是一个合法的返回值。

    function swap(&$left, &$right) : void
    {
       if ($left === $right) {
           return;
       }
    
      $tmp = $left;
       $left = $right;
       $right = $tmp;
    }
    
    $a = 1;
    $b = 2;
    var_dump(swap($a, $b), $a, $b);
    以上例程会输出:
    
    null
    int(2)
    int(1)
    

    试图去获取一个 void 方法的返回值会得到 NULL ,并且不会产生任何警告。这么做的原因是不想影响更高层次的方法。

    参考: http://php.net/manual/zh/migration71.new-features.php

  • 2019 相约北京,Laravel Conf China 大会议题征集中 at 5个月前

    给力!

  • 对找工作这件事的回复。 at 5个月前

    加油喽! 先就业再择业!

  • postman 测试时显示 pm is not defined? at 7个月前

    pm , postman window 安装版支持, chrome插件版不支持

    file

    file

  • 为什么 recordLastActivedAt 逻辑, 要写在 Trait 里, 而不直接写在 User 类中? at 8个月前

    @遗忘的影子 原来是这个样子, 受教了!

  • 神奇的服务容器 at 9个月前

    超人的例子, 绝了!

  • 这里为什么不使用`Cache`而使用`Redis`呢? at 9个月前

    Redis可存储多种数据结构的原因吧, redis hash 结构, 维护起来方便!

    • 相当于, 一张表里, 存了很多数据
      • 只要知道hash表名, 一句Redis::hGetAll('Hash表名'); 就可以读取这个表里所有数据, 然后递归批量更新到mysql中, 数据落地
      • 删除缓存, 也只要一句Redis::del('Hash表名'), 简单即使真理
    • 用其他缓存的话, 都是key:value结构, 批量读取, 批量删除是不太方便的, 相比之下, redis更适合这样的场景!
  • 判断是否是站长出现使用未定义函数? at 9个月前

    @kaen

    已解决!

    • 报错如下:

      Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
      Call to a member function hasRole() on null
    • 排查原因:

      sudo-su 切换用户, 未登陆成功, 导致  \Auth::user()  为null
    • 解决:
      1 安装好sudo-su插件后,  切换用户不太正常, 登陆成功后回跳的URL地址, 好像总被翻译成 slug, 具体原理没有深究
      2 重启了下homestead , 才正常!    重启命令: vagrant reload
  • 判断是否是站长出现使用未定义函数? at 9个月前

    @Summer 同问

  • Homestead 安装问题汇总 at 9个月前

    @Kyousuke 碉堡了, 谢谢你, 按照你的方法, win10下vagrant up成功! 看来, 没事还得多吃吃鸡, 哈哈!

  • Heroku run PHP artisan migrate 出错? at 10个月前

    heroku 线上数据库, 设置正确了么?

    heroku 上mysql上支持不太好, 好像!  试试PostgreSQL, 教程上都安利了!
    
    在 Heroku 上使用 PostgreSQL
    https://laravel-china.org/courses/laravel-essential-training-5.5/589/using-postgresql-on-heroku
  • Heroku login 命令报错, 求指点? at 10个月前

    [已解决] 上面格式乱了, 重新贴下!

    设置window DOS 代理

    • 1 先查看ie有无蓝灯代理设置

      netsh winhttp import proxy source=ie
    • 2 设置 代理
      set http_proxy=http://proxy.com:port/
      set http_proxy_user=username
      set http_proxy_pass=passwo

    设置 git bash 代理

    git config --global http.proxy http://127.0.0.1:1080
    
    git config --global https.proxy https://127.0.0.1:1080
    
    git config --global --unset http.proxy
    
    git config --global --unset https.proxy