Download the PHP package tschallacka/storm-inherit-relations without Composer

On this page you can find all versions of the php package tschallacka/storm-inherit-relations. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package storm-inherit-relations

Storm Inherit relations

This plugin provides a behavior for WinterCMS's Storm library based database models.

Default, when you extend base models, you loose all relationships defined in the parent model. Circumstances exist where you don't wish to lose access to those relationships but to improve upon it, continueing working on a core concept, adding features as you go up the inheritance tree where the needed objects differ.

For example(skip if you just want to know how to work with it)

In Magento you have AttributeValues. Each Attribute value has a relation AttributeName.
This would be one base model with a belongsTo relationship, we'll call this AttributeValue.

Then, a value can belong to a different type of Model. A Product, a Quote, a Customer, etc...
Values belonging one type cannot belong to another type, we'll call this OwnedBy[Type].
This would be a Model extending the AttributeValue, adding the $belongsTo relationship to it's "owner type"

Then there are multiple different datatypes possible, each stored within their own table(Don't ask why, Magento chose this method)
So integer values have their table, datetime values have their tables, decimals have their tables, etc...
These value types would then extend the OwnedBy[Type], changing just the table name that stores the values.
We would call this OwnedBy[Type][ValueType] If you do the math you can see that this is an exponential amount of files to generate and modify.

Alternative solution

This would be a use case where inheriting relationships from the parents throughout the layers would be ideal.
Of course you can modify the constructors to read the data from the parent classes, add it to the current class.
That would mean copy pasting this code like 25 times, and wouldn't be very DRY

My solution

I'm a coder, I'm lazy and don't like copy pasting the same thing ove rand over. I would propose having an implementation that you can inject in a class you deem needing it.
For example the utmost base class AttributeValue, this ensures all the children have it, and it doesn't need to be copy pasted over and over again.

Using the Relationship Inheritance.

Installation

Usage

In a model in which you wish to glean the relationships defined in the parents add this to your $implements array:

Model example:


All versions of storm-inherit-relations with dependencies

PHP Build Version
Package Version
No informations.
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package tschallacka/storm-inherit-relations contains the following files

Loading the files please wait ....