你们都有梦想的,是吧.怀抱着梦想并且正朝着梦想努力的人,寻找着梦想的人,我想为这些人加油呐喊!
有个问题请教一下:
在laravel 源代码:vendor/composer/autoload_real.php
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit290bf49d84893e46e6f7e0573b89e863::getInitializer($loader));
vendor/composer/autoload_static.php
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit290bf49d84893e46e6f7e0573b89e863::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit290bf49d84893e46e6f7e0573b89e863::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInit290bf49d84893e46e6f7e0573b89e863::$prefixesPsr0;
$loader->classMap = ComposerStaticInit290bf49d84893e46e6f7e0573b89e863::$classMap;
}, null, ClassLoader::class);
}
不明白为什么要用call_user_func来调用?是因为返回的是一个闭包么?我能理解的一部分是,因为这个回调的函数名(ComposerAutoloadComposerStaticInit290bf49d84893e46e6f7e0573b89e863)不太确定,所以会需要用到?
想问一下
我在 laravel 查到这里就查不下去了,我想知道这个 download 函数的源码,需要怎么做?我是 phpstorm,comm+B 提示没有使用这个方法
/**
* Create a new file download response.
*
* @param \SplFileInfo|string $file
* @param string $name
* @param array $headers
* @param string|null $disposition
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
*/
public function download($file, $name = null, array $headers = [], $disposition = 'attachment');
可能是ide_helper的配置不对,或者是不对应当前的laravel版本,看看你的composer.json
你先打印一下你的lesson,看能不能从数据库取值,如果不可以,那么就是数据库连接问题了,我猜测是这里有问题了。
@Tomoe 原来如此,谢谢。
看视频的时候了解到可以通过singleton来bind
public function register() {
$this->app->singleton('hash', function () {
return new BcryptHasher;
});
}
注册好了之后,我在vendor/laravel/framework/src/Illuminate/Foundation/helpers.php里面dd
if (! function_exists('app')) {
/** * Get the available container instance.
* * @param string $make
* @param array $parameters
* @return mixed|\Illuminate\Foundation\Application
*/
function app($make = null, $parameters = []) {
if (is_null($make)) {
return Container::getInstance();
}
dd($make);
return Container::getInstance()->make($make, $parameters);
然后我在route里面调用
app('hash');
出来的结果是"path.storage",并不是传入的hash,这是什么情况呢?
@Tomoe 主要我是不明白application这个类是怎么来的,然后这个类是怎么变成Container的,其实这个是laravel启动的时候自动加载出来的,并且在application.php里面写了他是怎么完成这个转换的
`
protected function registerBaseBindings()
{
static::setInstance($this);
$this->instance('app', $this);
$this->instance('Illuminate\Container\Container', $this);
}
`
都在说怎么使用,但是并没有说这个是怎么来的,所以我来请教,不过问题已经解决了,谢谢大家。
视频已经看过了,看了好几次,不过还是没有说明清楚这里面之间的关系,例如,comm+B app()的话,那么是去了helpers.php那里,然后就突然说到了container的源码了,这里面是怎么连接的呢?
看了container的源码大概明白是怎么回事了,不过还有一个疑问,我之前是直接从app看源码(comm+B),去了helpers.php,那么是怎么转到container的源码去了呢?是怎么理解应该什么时候去看哪些源码?