Laravel 설치에 장바구니 패키지를 추가했지만 클래스에 메소드를 추가해야합니다. 클래스를 직접 수정하면 최신 버전으로 업데이트 할 때 변경 사항을 덮어 씁니까? 그렇다면 향후 업데이트를 중단하지 않고 패키지를 수정하는 가장 좋은 방법은 무엇입니까?Laravel extends package class
도움 주셔서 감사합니다. -JB
Laravel 설치에 장바구니 패키지를 추가했지만 클래스에 메소드를 추가해야합니다. 클래스를 직접 수정하면 최신 버전으로 업데이트 할 때 변경 사항을 덮어 씁니까? 그렇다면 향후 업데이트를 중단하지 않고 패키지를 수정하는 가장 좋은 방법은 무엇입니까?Laravel extends package class
도움 주셔서 감사합니다. -JB
Laravel 5.0 패키지를 공급 업체 디렉토리에서 확장 할 수있는 일반적인 프로세스가 있는지 나는 알지 못합니다. 패키지마다 다를 수 있습니다. 그러나 그것을 말하면서, 나는 이것을 연장하기를 원할 때 똑같은 문제에 직면했다. cart. 그러나 나는 어떻게 든 그것을 관리했고 내가 따라야 할 단계는 아래에있다. 나는 그것이 약간의 암시를 줄 수 있기를 바란다.
패키지
composer require "gloudemans/shoppingcart":"~1.3"
디렉터리 만들기 app/Services/Cart
및 CartServiceProvider
디렉토리 app/Providers
에서 만들 그것을
<?php
namespace App\Services\Cart;
use Gloudemans\Shoppingcart\Cart;
class MyCart extends Cart
{
}
아래에 새 클래스 MyCart
를 설치,
<?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);
});
}
}
providers
배열
'App\Providers\CartServiceProvider'
에 다음과 aliases
배열
app/Services/Cart
디렉토리에 <?php
namespace App\Services\Cart;
use Illuminate\Support\Facades\Facade;
class MyCartFacade extends Facade {
protected static function getFacadeAccessor() { return 'mycart'; }
}
추가 config/app.php
에를 MyCartFacade
만들기
'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();
와 다음은 출력
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
)
)
)
)
이제 추가하거나
MyCart
클래스에서 그 기능을 넣어 기능을 재정의합니다.
좋은 점은 기본 패키지를 업데이트 할 수 있다는 것입니다.
도움이되기를 바랍니다.