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