doujilou3903 2016-09-04 03:31
浏览 40
已采纳

Laravel服务提供商和服务容器

in laravel to access query,we use DB facades

DB::select()

from alanstorm website http://alanstorm.com/binding_objects_as_laravel_services i learn that DB facade use callstatic method that lead to DB::app['db']->select(). app is laravel service container object which all the services binded into it. i use vardump php method var_dump(app['db']) and i see the service container returns an Illuminate\Database\DatabaseManager object. from DatabaseManager class that implement ConnectionResolverInterface i dont see the select method defined there. i want to ask how app['db'] can get access to select method. thanks before

  • 写回答

1条回答 默认 最新

  • dstt1818 2016-09-04 06:27
    关注

    DatabaseManager class implements __call() method if you call a method on that class that doesn't exist it's immediately passed as an argument to __call(), which is one of php's magic methods.

    that calls connection class with the method you passed.

    here's the method implementation in Illuminate\Database\DatabaseManager

    /**
     * Dynamically pass methods to the default connection.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return mixed
     */
    public function __call($method, $parameters)
    {
        return $this->connection()->$method(...$parameters);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功