emeraldinspirations / lib-objectdesignpattern-immutable
Functions that are common in immutable objects
2.2.0
2017-08-29 15:31 UTC
This package is not auto-updated.
Last update: 2025-03-16 07:30:15 UTC
README
lib-objectdesignpattern-immutable
An object design pattern support class in emeraldinspiration's library.
Functions that are common in immutable objects
Installing / Getting started
This project has no dependencies, so can be cloned directly from the git repo or required with Composer.
Require with Composer
composer require emeraldinspirations/lib-objectdesignpattern-immutable
Example
<?php use emeraldinspirations\library\objectDesignPattern\immutable\ImmutableTrait; class ExampleImmutableObject { use ImmutableTrait; protected $Property; /** * Return value of Property * * @return \stdclass */ public function getProperty() : \stdclass { return $this->Property; } /** * Create new instance with new Property value * * @param \stdclass $Property New value * * @return self */ public function withProperty(\stdclass $Property) : self { return $this->with(__FUNCTION__, $Property); } /** * Clone all specified properties are cloned as necessary * * @return void */ public function __clone() { // Create an array of references to properties to clone $PropertiesToByCloned = [ &$this->Property, // ^ - IMPORTANT: Be sure to pass by reference ]; self::cloneArrayRecursively($PropertiesToByCloned); } }
Contributing
If you'd like to contribute, please fork the repository and use a feature branch.
I am also open to feedback about how well I am being compliant with standards and "best practices." I have written software solo for years, and am trying to learn how to work better with others.
Licensing
The code in this project is licensed under MIT license.