Php Laravel扩展包类

Php Laravel扩展包类,php,laravel-4,Php,Laravel 4,我在Laravel安装中添加了一个cart包,但我需要在类中添加一个方法。如果我直接修改类,当我更新到新版本时,我的更改会被覆盖吗?如果是这样,在不破坏未来更新的情况下修改包的最佳方法是什么 谢谢你的帮助! -JB我不知道是否有任何常规流程可以从供应商目录扩展Laravel 5.0包,我相信对于不同的包,这可能会有所不同。但话说回来,当我想扩大这一范围时,我面临着同样的问题。但我还是设法做到了,我遵循的步骤如下。我希望它能给我们一些提示 安装软件包 composer require "gloud

我在Laravel安装中添加了一个cart包,但我需要在类中添加一个方法。如果我直接修改类,当我更新到新版本时,我的更改会被覆盖吗?如果是这样,在不破坏未来更新的情况下修改包的最佳方法是什么

谢谢你的帮助!
-JB

我不知道是否有任何常规流程可以从供应商目录扩展Laravel 5.0包,我相信对于不同的包,这可能会有所不同。但话说回来,当我想扩大这一范围时,我面临着同样的问题。但我还是设法做到了,我遵循的步骤如下。我希望它能给我们一些提示

  • 安装软件包

    composer require "gloudemans/shoppingcart":"~1.3"
    
  • 创建目录
    app/Services/Cart
    ,并在其下创建一个新类
    MyCart

    <?php
    
    namespace App\Services\Cart;
    
    use Gloudemans\Shoppingcart\Cart;
    
    class MyCart extends Cart
    {
    
    }
    
    }

  • app/Services/Cart
    目录下创建
    MyCartFacade

    <?php namespace App\Providers;
    
     use App\Services\Cart\MyCart;
     use Illuminate\Support\ServiceProvider;
    
    class CartServiceProvider extends ServiceProvider {
    
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
    
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app['mycart'] = $this->app->share(function($app)
        {
            $session = $app['session'];
            $events = $app['events'];
            return new MyCart($session, $events);
        });
    }
    
    <?php
    
    namespace App\Services\Cart;
    
    use Illuminate\Support\Facades\Facade;
    
    class MyCartFacade extends Facade {
        protected static function getFacadeAccessor() { return 'mycart'; }
    }
    
    别名
    数组中

    'App\Providers\CartServiceProvider'
    
    'MyCart'      => 'App\Services\Cart\MyCartFacade'
    
    就这样。现在在我的控制器中,我放置了以下代码
    add
    content
    是基本
    Cart
    类中的方法

    \MyCart::add('293ad', 'Product 1', 1, 9.99, array('size' => 'large'));
    echo '<pre>';
    print_r(\MyCart::content());
    exit();
    
  • 现在,如果您想添加或覆盖功能,只需将该功能放入
    MyCart
    类中即可

    好的是,您可以更新基本包


    我希望有帮助

    谢谢,如果我想验证方法,我应该使用parent:?
    Gloudemans\Shoppingcart\CartCollection Object
    (
        [items:protected] => Array
            (
                [0f6524cc3c576d484150599b3682251c] => Gloudemans\Shoppingcart\CartRowCollection Object
                    (
                        [associatedModel:protected] => 
                        [associatedModelNamespace:protected] => 
                        [items:protected] => Array
                            (
                                [rowid] => 0f6524cc3c576d484150599b3682251c
                                [id] => 293ad
                                [name] => Product 1
                                [qty] => 1
                                [price] => 9.99
                                [options] => Gloudemans\Shoppingcart\CartRowOptionsCollection Object
                                    (
                                         [items:protected] => Array
                                            (
                                                [size] => large
                                            )
    
                                    )
    
                                [subtotal] => 9.99
                            )
    
                    )
    
            )
    
    )