Skip to content

[Question] Module Encapsulation / Dependency  #5

Open
@boxxroom

Description

@boxxroom

Thanks very much for your talk on Laracon, it was insightful and couldn't have come at a more fitting time.

I am a big fan of the Actions paradigm and already using this on a Domain level, more inline with Brents, Laravel Beyond Crud (https://laravel-beyond-crud.com/) from Spatie but will now be adding a contract to Actions as shown from Luke Downing's Laracon talk. To incorporate incapsulated domain level Actions within Modules (for me) would be the icing on the cake.

My question:

Isn't the Orders module dependant on the Inventory module or at the very least a skinny version of the Inventory module in order to work correctly. (Reasoning below)

Exploring this repo's codebase, I really like the structure and how everything belongs to that module, but I couldn't help but notice (please correct me if I am wrong) there was a dependency required from another module in order for a given module to work correctly. The module I refer to is the Orders module, specifically the Order Model requiring a ProductDto contract (interface) from the Inventory module.

use Laracon\Inventory\Contracts\DataTransferObjects\ProductDto;

public function addOrderLine(ProductDto $product, int $quantity): void

"Thinking out allowed"

I'm not entirely sure if there is an alternative approach/way of dealing with this either, it seems as though module knowledge has to be shared but it does feel as if it's breaking the self contained, workable module structure.

Thoughts welcome.....

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions