Skip to content

1.0.0 Major Release

Compare
Choose a tag to compare
@donatj donatj released this 24 Apr 18:42
· 91 commits to master since this release
1431382

This is a major rework of the entire project that took just under 2 years. The utmost care went into considering how to keep this both the small and light library the community enjoys, but also add features people have been clamoring for since the beginning. I really believe we've hit the nail on the head here.

Backwards Compatibility Considerations:

A lot of work went into not breaking compatibility especially for people not using composer. If you encounter any issues with compatibility let us know and we will fix it ASAP.

All required "functional" logic remains in a single file src/UserAgentParser.php This is specifically to make the library easy to use for people who do not use composer.

Adds:

  • Object oriented convenience wrapper ecosystem.
    • \donatj\UserAgent\UserAgentParser - Object oriented parse_user_agent call wrapper.
    • \donatj\UserAgent\UserAgent - Object oriented response object.
    • \donatj\UserAgent\UserAgentInterface - Helper interface for test mocking.
  • Namespaced \donatj\UserAgent\parse_user_agent function to mirror global parse_user_agent
  • Constants for the returned arrays keys
    • \donatj\UserAgent\PLATFORM = 'platform';
    • \donatj\UserAgent\BROWSER = 'browser';
    • \donatj\UserAgent\BROWSER_VERSION = 'version';
  • Helpful predefined constants to check against for Platforms and Browsers generated from the same dataset as the tests.
    • \donatj\UserAgent\Browsers::*
    • \donatj\UserAgent\Platforms::*
  • Even more test cases

Changes:

  • parse_user_agent is deprecated in favor of \donatj\UserAgent\parse_user_agent
    • Will remain in the code until at least 2.x

Thus require "{$dir}/src/UserAgentParser.php"; remains a supported method of using the library.

Upgrading to 1.*

The new 1.* release does not break compatibility with 0.* and nothing need to change to upgrade. However, the global parse_user_agent is now deprecated; it has been replaced with the namespaced \donatj\UserAgent\parse_user_agent and functions exactly the same. You can easily replace any existing call to parse_user_agent with \donatj\UserAgent\parse_user_agent

In addition, 1.x adds a convenience object wrapper you may use should you prefer. More information on this is in the Usage section of the README.


I would also like to personally thank @mimmi20 for helping review ideas early in the project's life cycle.