2016-10-16 19 views
0

を拡張するとき、私は私が(アプリ/設定/ services.yml)サービスを作成し、そのdocumentation に応じFOSUB UserMangerを拡張しようとしている:抽象メソッドの問題FOSUBのUserManager

設定(アプリ/変更
services: 
my_custom_user_manager: 
    class: UserBundle\Repository\CustomUserManager 
    arguments: [] 

/config.yml設定):

fos_user: 
service: 
    user_manager: my_custom_user_manager 

とクラスを作成しました:

<?php 

namespace UserBundle\Repository; 

use Doctrine\ORM\EntityRepository; 
use FOS\UserBundle\Model\UserManager; 
use FOS\UserBundle\Model\UserManagerInterface; 

class CustomUserManager extends UserManager implements UserManagerInterface 
{ 

    public function loadUserByUsername($username) 
    { 

     return $this->createQueryBuilder('u') 
      ->where('u.username = :username OR u.email = :email') 
      ->setParameter('username', $username) 
      ->setParameter('email', $username) 
      ->join('u.roleues','r') 
      ->addSelect('r') 
      ->join('r.etablissement','e') 
      ->addSelect('e') 
      ->getQuery() 
      ->getOneOrNullResult(); 

    } 


} 

は、しかし、私はこのエラーを取得:

Error: Class UserBundle\Repository\CustomUserManager contains 5 abstract methods and must therefore be declared abstract or implement the remaining methods (FOS\UserBundle\Model\UserManagerInterface::deleteUser, FOS\UserBundle\Model\UserManagerInterface::findUsers, FOS\UserBundle\Model\UserManagerInterface::getClass, ...) 

をしかし、私はUsermanagerクラスとUserManagerInterfaceを読んだとき、私は同様の科目を読んだとき、彼らは何の問題もなく、このクラスを拡張し、任意のabsract方法を参照することはできません。

答えて

0

インターフェイスには抽象メソッドがありません。あなたのクラスに実装する必要があるメソッドを宣言するだけです。

エラーメッセージに記載されている方法はFOS\UserBundle\Model\UserManagerで実装されていないため、UserBundle\Repository\CustomUserManagerに実装する必要があります。

また、FOS\UserBundle\Model\UserManagerを拡張する場合は、すでにFOS\UserBundle\Model\UserManagerに実装されているため、FOS\UserBundle\Model\UserManagerInterfaceを実装する必要はありません。

OOPでの継承に関するいくつかのドキュメントを読むことをお勧めします。あなたはそれについていくつかPHPのドキュメントを見つけることができます:Object InheritanceInterfacesAbstract classes

+0

ありがとう、私の間違いを理解し、私はFOS \ UserBundle \ ** Doctrine ** \ UserManagerを拡張しなければならなかった。 FOS \ UserBundle \ **モデル** \ UserManagerではなく、 – freezix

関連する問題