title: Catchable Fatal Error: Object of class __PHP_Incomplete_Class could not be converted to string
body: <p>I'm having an error when I want to open a simple page. This is the full error:</p>
  
  <blockquote>
    <p>ContextErrorException: Catchable Fatal Error: Object of class __PHP_Incomplete_Class could not be converted to string in /Applications/mampstack-5.4.20-0/apache2/htdocs/engelsvandenbroecke/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php line 70</p>
  </blockquote>
  
  <p>What I've done in my symfony project is:</p>
  
  <ul>
  <li>Generate entities from database</li>
  <li>Edit User Entity for security </li>
  <li>Edit security.yml </li>
  <li>Added two datafixtures</li>
  </ul>
  
  <p>This is my User Entity Class:</p>
  
  <pre><code>&lt;?php
  
  namespace Beachteam\BeachteamBundle\Entity;
  
  use Doctrine\ORM\Mapping as ORM;
  use Symfony\Component\Security\Core\User\AdvancedUserInterface;
  
  /**
   * User
   *
   * @ORM\Table(name="user", uniqueConstraints={@ORM\UniqueConstraint(name="username_UNIQUE", columns={"username"})}, indexes={@ORM\Index(name="fk_users_roles_idx", columns={"role_id"})})
   * @ORM\Entity
   */
  class User implements AdvancedUserInterface
  {
      /**
       * @var string
       *
       * @ORM\Column(name="username", type="string", length=45, nullable=false)
       */
      private $username;
  
      /**
       * @var string
       *
       * @ORM\Column(name="password", type="string", length=60, nullable=false)
       */
      private $password;
  
      /**
       * @var string
       *
       * @ORM\Column(name="salt", type="string", length=30, nullable=false)
       */
      private $salt;
  
      /**
       * @var string
       *
       * @ORM\Column(name="firstname", type="string", length=45, nullable=false)
       */
      private $firstname;
  
      /**
       * @var string
       *
       * @ORM\Column(name="surname", type="string", length=45, nullable=false)
       */
      private $surname;
  
      /**
       * @var string
       *
       * @ORM\Column(name="email", type="string", length=255, nullable=false)
       */
      private $email;
  
      /**
       * @var string
       *
       * @ORM\Column(name="token", type="string", length=45, nullable=true)
       */
      private $token;
  
      /**
       * @var \DateTime
       *
       * @ORM\Column(name="created", type="datetime", nullable=false)
       */
      private $created;
  
      /**
       * @var integer
       *
       * @ORM\Column(name="id", type="integer")
       * @ORM\Id
       * @ORM\GeneratedValue(strategy="IDENTITY")
       */
      private $id;
  
      /**
       * @var \Beachteam\BeachteamBundle\Entity\Role
       *
       * @ORM\ManyToOne(targetEntity="Beachteam\BeachteamBundle\Entity\Role")
       * @ORM\JoinColumns({
       *   @ORM\JoinColumn(name="role_id", referencedColumnName="id")
       * })
       */
      private $role;
  
      private $plainPassword;
  
      /**
       * Constructor
       */
      public function __construct()
      {
          $this-&gt;salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
      }
  
  
      /**
       * Set username
       *
       * @param string $username
       * @return User
       */
      public function setUsername($username)
      {
          $this-&gt;username = $username;
  
          return $this;
      }
  
      /**
       * Get username
       *
       * @return string 
       */
      public function getUsername()
      {
          return $this-&gt;username;
      }
  
      /**
       * Set password
       *
       * @param string $password
       * @return User
       */
      public function setPassword($password)
      {
          $this-&gt;password = $password;
  
          return $this;
      }
  
      /**
       * Get password
       *
       * @return string 
       */
      public function getPassword()
      {
          return $this-&gt;password;
      }
  
      /**
       * Set salt
       *
       * @param string $salt
       * @return User
       */
      public function setSalt($salt)
      {
          $this-&gt;salt = $salt;
  
          return $this;
      }
  
      /**
       * Get salt
       *
       * @return string 
       */
      public function getSalt()
      {
          return $this-&gt;salt;
      }
  
      /**
       * Set firstname
       *
       * @param string $firstname
       * @return User
       */
      public function setFirstname($firstname)
      {
          $this-&gt;firstname = $firstname;
  
          return $this;
      }
  
      /**
       * Get firstname
       *
       * @return string 
       */
      public function getFirstname()
      {
          return $this-&gt;firstname;
      }
  
      /**
       * Set surname
       *
       * @param string $surname
       * @return User
       */
      public function setSurname($surname)
      {
          $this-&gt;surname = $surname;
  
          return $this;
      }
  
      /**
       * Get surname
       *
       * @return string 
       */
      public function getSurname()
      {
          return $this-&gt;surname;
      }
  
      /**
       * Set email
       *
       * @param string $email
       * @return User
       */
      public function setEmail($email)
      {
          $this-&gt;email = $email;
  
          return $this;
      }
  
      /**
       * Get email
       *
       * @return string 
       */
      public function getEmail()
      {
          return $this-&gt;email;
      }
  
      /**
       * Set token
       *
       * @param string $token
       * @return User
       */
      public function setToken($token)
      {
          $this-&gt;token = $token;
  
          return $this;
      }
  
      /**
       * Get token
       *
       * @return string 
       */
      public function getToken()
      {
          return $this-&gt;token;
      }
  
      /**
       * Set created
       *
       * @param \DateTime $created
       * @return User
       */
      public function setCreated($created)
      {
          $this-&gt;created = $created;
  
          return $this;
      }
  
      /**
       * Get created
       *
       * @return \DateTime 
       */
      public function getCreated()
      {
          return $this-&gt;created;
      }
  
      /**
       * Get id
       *
       * @return integer 
       */
      public function getId()
      {
          return $this-&gt;id;
      }
  
      /**
       * Set role
       *
       * @param \Beachteam\BeachteamBundle\Entity\Role $role
       * @return User
       */
      public function setRoles(\Beachteam\BeachteamBundle\Entity\Role $role = null)
      {
          $this-&gt;role = $role;
  
          return $this;
      }
  
      /**
       * Get role
       *
       * @return \Beachteam\BeachteamBundle\Entity\Role 
       */
      public function getRoles()
      {
          return array($this-&gt;role-&gt;getName());
      }
  
      public function eraseCredentials()
      {
          $this-&gt;setPlainPassword(null);
      }
  
      public function getPlainPassword()
      {
          return $this-&gt;plainPassword;
      }
  
      public function setPlainPassword($plainPassword)
      {
          $this-&gt;plainPassword = $plainPassword;
      }
  
      /**
       * Implementation of AdvancedUserInterface method
       *
       * @return boolean
       */
      public function isAccountNonExpired()
      {
          return true;
      }
  
      /**
       * Implementation of AdvancedUserInterface method
       *
       * @return boolean
       */
      public function isAccountNonLocked()
      {
          return true;
      }
  
      /**
       * Implementation of AdvancedUserInterface method
       *
       * @return boolean
       */
      public function isCredentialsNonExpired()
      {
          return true;
      }
  
      /**
       * Implementation of AdvancedUserInterface method
       *
       * @return boolean
       */
      public function isEnabled()
      {
          return true;
      }
  }
  </code></pre>
  
  <p>My security.yml:</p>
  
  <pre><code>    security:
  encoders:
      Beachteam\BeachteamBundle\Entity\User:
          algorithm: bcrypt
          cost: 15
  
  role_hierarchy:
      ROLE_SUPER_ADMIN: ROLE_ADMIN
  
  providers:
      users:
          entity:
              class: BeachteamBundle:User
              property: username
  
  firewalls:
      dev:
          pattern:  ^/(_(profiler|wdt)|css|images|js)/
          security: false
  
      secured_area:
          pattern: ^/
          anonymous: ~
          form_login:
              login_path: beach_team_loginpage
              check_path: beach_team_logincheck
              username_parameter: login[username]
              password_parameter: login[password]
              always_use_default_target_path: true
              default_target_path: beach_team_adminpage
          logout:
              path:   beach_team_logout
              target: beach_team_loginpage
          remember_me:
               key:      "%secret%"
               lifetime: 31536000 # 365 days in seconds
               path:     /
               domain:   ~ # Defaults to the current domain from $_SERVER
               remember_me_parameter: remember
  
  access_control:
      #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
  </code></pre>