Skip to content

Latest commit

 

History

History
229 lines (165 loc) · 10.6 KB

CHANGELOG.md

File metadata and controls

229 lines (165 loc) · 10.6 KB

CHANGELOG

Release notes for PHP: Nelson Martell Library.

This project adheres to Semantic Versioning.

[Unreleased] (WIP)

⭐ Important changes

🆕 Added

  • Classes:

    • NelsonMartell\Extensions\Arrays.
    • NelsonMartell\Extensions\MethodExtension.
    • NelsonMartell\Extensions\Numbers.
    • NelsonMartell\Extensions\Objects.
    • NelsonMartell\Extensions\PropertyExtension.
  • Interfaces:

    • IMagicPropertiesContainer.
  • Methods:

    • NelsonMartell\Text::compare()
    • NelsonMartell\Type::getInterfaces().
    • NelsonMartell\Type::getProperties(), in replacement for NelsonMartell\Type::getVars().
    • NelsonMartell\Type::hasGetTraits().
    • NelsonMartell\Type::hasProperty().
    • NelsonMartell\Type::is()
    • NelsonMartell\Type::isIn()
    • NelsonMartell\Extensions\Objects::compare(), in replacement for NelsonMartell\StrictObject::compare().
    • NelsonMartell\Utilities\Text::camelize() (from Cake\Utility\Inflector).
    • NelsonMartell\Utilities\Text::delimit() (from Cake\Utility\Inflector).
    • NelsonMartell\Utilities\Text::humanize() (from Cake\Utility\Inflector).
    • NelsonMartell\Utilities\Text::underscore() (from Cake\Utility\Inflector).
    • NelsonMartell\Utilities\Text::variable() (from Cake\Utility\Inflector).
  • Support PHP versions: 7.3, 7.4 and 8.0.

🆙 Changed

  • Remove public access to most of getters methods. Now you should access it via property instead.
  • Remove Pascal Case in properties. Properties updated to be camel case only (e.g. use $version->major instead of $version->Major).
  • Signature of NelsonMartell\PropertiesHandler::getPropertyGetter() and NelsonMartell\PropertiesHandler::getPropertySetter() methods: add $prefix and $useCustom params.
  • Strict-typed return type of methods in NelsonMartell\ICustomPrefixedPropertiesContainer.
  • NelsonMartell\StrictObject class is abstract now.
  • Signature of NelsonMartell\Type::getMethods() method: 🆕 $filters parameter with a default value.

🚒 Deprecated

  • NelsonMartell\StrictObject::compare() method. Use NelsonMartell\Extensions\Objects::compare() instead.
  • NelsonMartell\Type::getVars() method. Use NelsonMartell\Type::getProperties() instead.

🔥 Removed

  • Drop active support for eol PHP versions (https://www.php.net/supported-versions.php): 5.6, 7.0, 7.1 and 7.2 (still keept internally for building documentation). Using this versions is dangerous.
  • Remove deprecated classes under NelsonMartell\Utilities namespace.
  • Remove NelsonMartell\Type::$vars property. Use Type::getProperties() method directly instead.
  • Remove NelsonMartell\Type::$methods property. Use Type::getMethods() method directly instead.
  • Remove deprecated NelsonMartell\IComparable::compare() method. Implement NelsonMartell\IComparer instead.
  • Remove cakephp/utily dependency. NelsonMartell\Utilities\Text implements a copy of used methods from Cake\Utility\Text (some basic methods from Cake\Utility\Inflector were placed in NelsonMartell\Utilities\Text class).

🐛 Fixed

  • Problem in NelsonMartell\StrictObject::compare() for some types, move implementation to NelsonMartell\Extensions\Objects, make it more generic and split implementation to:
    • 🆕 NelsonMartell\Text::compare()
    • 🆕 NelsonMartell\Arrays::compare()
    • 🆕 NelsonMartell\Numbers::compare()

📓 Development changes

  • 🎨 📝 Improve DocBlocks.
  • 🎨 Improve content and style of documentation.
  • 🆙 Improve tests and increase the code coverage.
  • 🆙 Improve coding style: add more rules to checks the code.
  • 🆕 Composer command to perform PHP Syntax checks: composer cs:php.
  • 🆕 Setup Rector and add composer commands to refactor (composer refactor:lint, composer refactor:write).
  • 🆕 Setup PHPStan (used in composer cs:php).
  • 🆕 Setup Prettier (npm run cs:lint, npm run cs:fix).
  • 🆙 Rename composer commands and add descriptions (check CONTRIBUTING file).
  • 🆕 class: NelsonMartell\Test\Helpers\ImplementsIConvertibleToString.
  • ⬆️ 📦 PHPUnit 5 -> PHPUnit 7. Add compatibility with PHPUnit 8 and 9.
  • ⭐ Use Github Actions and Netlify for code review, testing and deploying documentation.
  • 🔥 Disable Travis CI.

🔖 More changes

See changes since v0.7.2 for more detailed info.

[v0.7.2] - 2019-01-05

⭐ Important changes

📓 Development changes

More changes

See changes since v0.7.1 for more detailed info.

[v0.7.1] - 2018-12-23

⭐ Important changes

  • 🆕 Documentation with VuePress (including API docs).
  • 🆕 Compatible with PHP 7.3.

📓 Development changes

  • 🆙 Improve Travis CI to auto-generate documentation.
  • 🆙 Contributing instructions

🔖 More changes

See changes since v0.7.0 for more detailed info.

[v0.7.0] - 2017-12-04

⭐ Important changes

This release is mainly intended to provide PHP 7 compatibility:

  • 🔥 Rename class NelsonMartell\Extensions\String to NelsonMartell\Extensions\Text, but still available in PHP 5.6 as alias.
  • 🔥 Rename class NelsonMartell\Object to NelsonMartell\StrictObject, but still available in PHP < 7.2 as alias.
  • 🔥 Drop support for PHP < 5.6.
  • 🔥 Remove deprecated code in v0.6.
  • 🔥 Remove global functions. Are only available under NelsonMartell namespace now.
  • 🐛 Correct minor issues.

📓 Development changes

There are some improvements for development:

  • ⬆️ Use PHPUnit 5.7 and update tests.
  • ⬆️ Use PHP Code Sniffer 3.0.
  • ⬆️ Prepare code to use ApiGen 5.0 (removed as dependency).
  • 🆙 Update some internal scripts and other moved to the composer.json.
  • 🆕 Add utility scripts to the composer.json (check the CONTRIBUTING file for more details):
    • composer test-code
    • composer analize-code
    • composer autofix-code
    • composer check-all
    • composer build:
      • composer build-code-coverage:
        • composer build-code-coverage-clover
        • composer build-code-coverage-xml
        • composer build-code-coverage-html
      • composer build-api
  • 🆕 Add CONTRIBUTING file.

NOTE: API Documentation not updated to this release due to conflict in API generation tool.

🔖 More changes

See changes since v0.6.1 for more detailed info.

[v0.6.1] - 2017-05-01

  • Minor improvements in sources and documentation info.
  • Improvements in README instruccions.
  • API deployment changes:
    • 🔥 Deploy API documentation in local instead of TravisCI auto-generation.
    • 📝 Improve API deployment script.
  • 🆕 Interfaces:
    • IConvertibleToString.
    • IConvertibleToJson.

See changes since v0.6.0 for more detailed info.

[v0.6.0] - 2016-10-06

Installation changes

  • 🔥 Removed dependencies copy. Now you must install dependencies manually if not using composer.

Public API changes

  • 🐛 Fixed issue (possible bug) in properties with custom prefix. Now, it must be implemented ICustomPrefixedPropertiesContainer in order to use custom getter/setter prefixes (in addition to get/set defaults).
    • 🆕 Interface: ICustomPrefixedPropertiesContainer. Enables the use of custom properties getter/setter's prefixes.
    • 🔥 Removed PropertiesHandler::$getterPrefix and PropertiesHandler::$setterPrefix static attributes (functionality replaced by ICustomPrefixedPropertiesContainer methods).
    • 🆙 Methods of PropertiesHandler trait are now protected (instead of private) and rewritten to work in a static context (instead of object context).
  • 🐛 Fixed possible errors in Extensions\String::format if placeholder values are stdClass or warnings if value is not convertible to string (this is a weakness in usort usage in \Cake\Utility\Text\insert). Extensions\String::format now throws a catchable \InvalidArgumentException if value of placeholder can't be convertible to string to avoid this 🐛.
  • 🆕 Interface: IPropertiesContainer.
  • 🆕 Interface: IComparer. Split from IComparable to use only compare method. Object class already implements IComparer.
  • 🆙 Deprecate IComparable::compare method, to be replaced by IComparer::compare.
  • 🆙 IComparable::compareTo implementations are now able to return null if objects can't be compared.
  • 🐛 🆙 Improve Object::compare method to compare different types.
  • 🆕 Created namespaced global functions under NelsonMartell and deprecated the global ones (typeof(mixed $obj) and other internal functions) to be removed in the next v0.7.0 or v0.8.0 release (see issue #17).
  • 📝 Improved and updated API documentation.
  • 🆙 Other minor improvements and fixes.

Classes/interfaces/traits names in this description are under NelsonMartell namespace by default (unless name starts with \).

Development changes

  • 🆕 Tracking development progress in waffle.io.
  • 🎨 Update copyright year and email in source files.
  • 📝 Improve & update README file.
  • ✅ Configure UnitTesting and added some tests for classes.
  • ✅ Configure PHP CodeSniffer to be compliance with PSR2 coding standar by default.
  • 🆕 Testing helpers (traits):
    • NelsonMartell\Test\Helpers\:
      • ExporterPlugin
      • ConstructorMethodTester
      • IComparerTester
      • IComparableTester
      • IPropertiesContainerTester
  • 🆙 Configure Travis CI for testing and API documentation generation.
  • 🆕 Utility scripts (read script/README.md file:
  • 🎨 Other minor code and documentation improvements.

See changes since v0.5.1 for more detailed info.

[v0.5.1]

  • Automatize API generation via Travis CI
  • Some improvements in documentation and instructions
  • Minor fixes in possible errors
  • Coding standards and other minor fixes

See detailed changelog.

[v0.5.0]