小编Tim*_*idt的帖子

Laravel-Core:为什么Laravel多次存储别名?

Laravel在Application.php的核心注册了很多默认实现,如下所示:

'url' => ['Illuminate\Routing\UrlGenerator', 'Illuminate\Contracts\Routing\UrlGenerator'],
Run Code Online (Sandbox Code Playgroud)

这将有效地将下面的方法称为两次

public function alias($abstract, $alias)
    {
        $this->aliases[$alias] = $abstract;
    }
Run Code Online (Sandbox Code Playgroud)

导致以下值Container->aliases:

"Illuminate\Routing\UrlGenerator" => "url"
"Illuminate\Contracts\Routing\UrlGenerator" => "url"
Run Code Online (Sandbox Code Playgroud)

如果我稍后调用: $this->app->alias('url', 'App\Util\Portal\UrlGenerator'); 它甚至将它存储在Container的别名数组中:

"App\Util\Portal\UrlGenerator" => "url" 
Run Code Online (Sandbox Code Playgroud)

我的问题:

为什么laravel将它们全部存储两到三个而不是覆盖它们?存储具体类应该足够了.但是为什么laravel会将它们全部存储起来?当我现在使用App :: make('url')时,laravel如何判断哪一个要解决?Laravel现在有三个可供选择,一个接口和两个实现.

php ioc-container laravel

7
推荐指数
1
解决办法
863
查看次数

PHP引用具有静态方法访问权限的变量类

给出错误:

$this->model::byUserPermission()

Leads to: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
Run Code Online (Sandbox Code Playgroud)

作品:

$facade = $this->model;
$facade::byUserPermission()
Run Code Online (Sandbox Code Playgroud)

这是一个PHP Bug吗?或者有人可以向我解释这个,为什么会发生这种情况(我使用的是php 5.6,而且我是php新手.从我的观点来看,两者完全相同).谢谢

php static class

6
推荐指数
1
解决办法
45
查看次数

Laravel:解析任意URL到其相应的Controller / Route?

鉴于我有一个这样映射的任意URL(以及许多其他URL)

...
Route::get('/foobar/{parameter}', 'MyFoobarController@index');
...
Run Code Online (Sandbox Code Playgroud)

如何再次将URL(like http://localhost/foobar/foo)反向解析/解析到此已配置的控制器(MyFoobarController)中?请注意:我不是在谈论当前的请求,而是一种通用的方法来解析Laravel中映射到其相应的Controller and Action(在代码中与当前请求无关的任何地方)的任何URL。谢谢!

更新:还应该正确匹配其中包含参数的路由。

php routing routes laravel

5
推荐指数
1
解决办法
1581
查看次数

Laravel:如何针对自定义实现更改UrlGenerator(核心绑定)?

我需要使用的自定义实现UrlGenerator。因此,我该如何更改laravel的默认绑定,该默认绑定在内核深处实现为

 'url'                  => ['Illuminate\Routing\UrlGenerator', 'Illuminate\Contracts\Routing\UrlGenerator'],
Run Code Online (Sandbox Code Playgroud)

反对我自己的实现?

此外,我也不是很自信。我认为上面的这一行实际上做了两件事。它将bindinung存储在键“ url”下,并且还将接口映射到类。所以我实际上需要覆盖两者!怎么做?此外,如何确定是否必须将其绑定为“共享”(单例)或“每次新实例”?

非常感谢!

php ioc-container laravel

3
推荐指数
2
解决办法
1987
查看次数

标签 统计

php ×4

laravel ×3

ioc-container ×2

class ×1

routes ×1

routing ×1

static ×1