php - 扩展 Laravel 5 核心功能

标签 php laravel laravel-5

问题很简单 - 是否可以以任何智能方式扩展 Laravel 5 功能,或者有时您需要复制大量代码/类才能实现您想要的。

因为它相当广泛,我给你举两个例子。

1) 我想更改 \Illuminate\Routing\ResourceRegistrareditcreate 的网址。目前,我发现实现这一目标的唯一方法是:扩展主 Illuminate Application 以传递自己的 RoutingServiceProvider,然后扩展 Router,然后扩展 Illuminate\Routing\ResourceRegistrar 最后在 bootstrap/app.php 使用我们的扩展 Application 类。仅仅改变2行就做了很多修改。事实上,许多方法都是重复的,只是为了传递我们的自定义类,其代码完全相同,只是它使用来自其他命名空间的类

2) 其他类似的更改 - 为缓存配置设置自定义路径 - 您需要再次扩展 Application 来覆盖方法 getCachedConfigPath,然后在 bootstrap 中进行更改/app.php

所以问题是 - 是否需要进行一些修改,或者是否可以通过某种方式更轻松地实现相同的修改(例如上面的 2 个),而不是扩展核心 Application 类并使其如此许多变化?

最佳答案

您应该能够通过将您自己的实现绑定(bind)到服务容器来覆盖核心 ResourceRegistrar:

$this->app->bind('\Illuminate\Routing\ResourceRegistrar', function()
{
    return new MyResourceRegistrar();
});

MyResourceRegistrar扩展核心ResourceRegistrar,您应该能够覆盖editcreate方法:

class MyResourceRegistrar extends \Illuminate\Routing\ResourceRegistrar
{
    // Overwrite your methods here
}

关于php - 扩展 Laravel 5 核心功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29084661/

相关文章:

php - 如何避免用户提交的MySQL数据库存储重复内容

laravel - 在 laravel 5 测试期间如何模拟外部 API?

amazon-web-services - 使用 Laravel 5.3 的 Amazon SES 403 Forbidden SignatureDoesNotMatch

php - 从数组打印值有时不起作用

php - 如何将日期时间对象与日期对象进行比较

laravel - 普通 HTTP 请求被发送到 HTTPS 端口报错 Docker nginx

PHP 左连接不显示结果

mysql - Laravel:试图获得非对象的属性

php - 我想通过在 php 中使用 do--while 来执行一个 sql 更新循环语句

php - mysql连接表