This blog - now archived - is read-only.
New blog: Mohammad Emran Hasan.

JSONize your PHP classes using traits

I was having a discussion with a colleague regarding how to add generic JSON based representation to a number of classes without making a big effort. The immediate solution that came in my mind is to use the Traits for it (introduced in PHP 5.4).

So I wrote the following example for him:

JSONized.php

trait JSONized {

    public function toJson()
    {
        $properties = get_object_vars($this);
        return json_encode($properties);
    }

}

User.php

class User
{
    use JSONized;

    public $username;
    public $password;
    public $email;

    public function __construct($username, $password, $email)
    {
        $this->username = $username;
        $this->password = md5($password);
        $this->email = $email;
    }
}

test.php

include_once 'JSONized.php';
include_once 'User.php';

$emran = new User('phpfour', 'emran123', 'phpfour@gmail.com');
echo $emran->toJson();

The result of running the above code will be like this:

{
    "username" : "phpfour",
    "password" : "02c2ec1e3f21e97dd5ac747147a141e0",
    "email" : "phpfour@gmail.com"
}

5 thoughts on “JSONize your PHP classes using traits

  1. Anjan Bhowmik

    Same thing I used to do via class inheritance :D

    Usefulness on trait will be felt when u have lots to functions and properties to be shared among many classes :) As Masnun said, really cool!