justtest

438 经验值

@animaflower 有道理,我错了,那就不是为了性能考虑,因为每次访问这个方法都要加载它。

@animaflower 这两行中间只有一句话,应该就是为这句话服务的。
点进他注册的自动加载函数 loadClassLoader 中可以看到,如果访问特定的完全限定名,则返回 ClassLoader 这个类。
中间这句恰恰访问的就是这个, 这个过程下来的作用就是把 ClassLoader 对象赋值给了当前类的静态属性 loader,因为他注册的时候把加载函数置于了 spl autoload 的栈首,任何自动加载的文件都要先经过这个方法处理,可能为了性能考虑,在完成目的后就立刻注销掉了这个自动加载器。

为什么这里不直接用 include 呢? 还是为了性能考虑,并不是每个应用的每个页面都需要 composer 去自动加载, include 的话,每个请求无论是否需要都要读取一次这个文件,他想做到按需加载。

为什么注销之后还能运行? 那是因为你之前没注销的时候,他已经生成了加载文件的映射数据,就是后面的 autoload_psr static files 那些, 注销自动加载器没有影响这些文件的载入和你的应用效果。

laravel 门槛不高, 是很多人基础弱, 多看看基础, 很容易上手的,相信自己,迎接挑战。

任何高质量的问题都是欢迎的,很多人乐于一起帮助研究哪些有挑战的问题,前提是你得把问题描述清楚的。苹果电脑是首选,做开发来讲免于很多折腾,可以的话最好用。原生 PHP 基础不管使用任何框架都是必备的,没事看看 php.net 慢慢看就好。 Laravel 和你之前使用什么并没明显的关系,零基础一样可以很好的使用,学习一门东西要有主动研究的热情和毅力。

让控制器和应用代码解耦,控制器只做转发,而不需要触碰任何 orm 或者业务逻辑。

如果直接调用 orm,未来如果需求变了,你就要改控制器中的 all。

如果转发到应用/业务对象,未来任何变更都可以直接在那里改,于是就职责单一了。

dispatcher 在这里不一定非要用,直接调用即可。

@sunnirvana 没测试,你自己看执行不对就修改吧。
文档中忘记了有没有,估计要看容器和设置相关的内容,我是凭感觉写的,以前应该是用过。
app() 返回容器, 容器对象实现了几个数组接口所以可以用下标访问,得到 config 对象, config 对象上应该有 get 和 set 方法。

覆写 Illuminate\Routing\RoutegetValidator 方法, 其中的 UriValidator 类改成你自己的实现。
为了使上面的修改生效,你可以还需要替换默认的 RouteServiceProvider

    // eloquent class.
    // add dynamic sqlite database setting.
    protected static $sqliteDatabase = 'yourname';

    /**
     * The "booting" method of the model.
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot(); // TODO: Change the autogenerated stub
        // We do config here.
        if ($sqlite = static::$sqliteDatabase) {
            app()['config']->set('database.connections.sqlite.database', $sqlite);
        }
    }
$this->dispatch(new YourJob($this));
$result = $this->attribute;

class YourJob
{
  func constru(Controller $controller){
     $this->controller = $controller;
  }

  func handle()
  {
    // do something
    $this->controller->attrbute = true;
  }
}

@workaholic 那就各自保留意见吧:) 没抄就没抄吧。