imponeer/toarray-interface

PHP library that provides toArray interface, that could be used everywhere where you need to convert object into array and make sure that to that toArray function is because of same interface

v2.0.7 2023-10-01 23:11 UTC

This package is auto-updated.

Last update: 2024-12-02 00:15:15 UTC


README

License GitHub release Maintainability PHP Packagist

ToArray Interface

Some long time ago there were RFC about adding __toArray method into PHP. Sadly, this was rejected. PHP-FIG doesn't have yet any project about that. And that's why today we have many classes in different frameworks that has toArray method. There are some composer packages that has toArray interface like illuminate/contracts. However these packages are not very good choice if you need only one file with interface from there. In that case they have many things that you do not need. So, that's why we have created small composer library that could be used for such cases.

So, basically this library is only for one thing - it gives interface that could be used when you need to know if object has possibility to be converted to array with toArray method.

Installation

To install and use this package, we recommend to use Composer:

composer require imponeer/toarray-interface

Otherwise you need to include manualy files from src/ directory.

Note: if you need to use this library in PHP 5 project, you need use 1.0 version of this library.

Example

use Imponeer/ToArrayInterface;

class DummyObject implements ToArrayInterface {

   /**
    * Converts object to array
    *
    * @return array
    */
   public function toArray(): array {
      return array(
      	'hash' => sha1(time())
      );
   }

}

$instance = new DummyObject();
if ($instance instanceof ToArrayInterface) {
	var_dump($instance->toArray());
}

How to contribute?

If you want to add some functionality or fix bugs, you can fork, change and create pull request. If you not sure how this works, try interactive GitHub tutorial.

If you found any bug or have some questions, use issues tab and write there your questions.