1

私はSymfony2.0を使用しています。

BaseUserから拡張するEmployeeクラスがあります

私はsetUsername(とりわけ)メソッドをオーバーライドする必要があります:

私のメソッドはEmployee.phpはそのようなものです:

public function setUsername()
{
    $name=$this->getName();

    $this->username=($name);//just an example
}

しかし、キャッシュをクリアするとエラーが発生します:

MyBundle\Entity\Employee::setUsername() must be compatible with that of FOS\UserBundle\Model\UserInterface::setUsername()

編集:
FOS \ UserBundle \ Model \ UserInterfaceのメソッドsetUsernameには$username引数が必要ですが、setUsername定義されている関数にはこの引数は必要ありません。より一般的には、私の質問は、メソッドを再定義/オーバーライドする方法と、FosUserで定義されたフィールドとメソッドに独自の制約を追加する方法です。どうもありがとう

この関数をオーバーライドするにはどうすればよいですか?試しparent::setUsername()ましたが、解析エラーが発生しました:

PHP Parse error:  syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting '('
4

1 に答える 1

0

関数は次のように定義されます。

function setUsername($username);

したがって、関数は同じでなければなりませんが、パラメーターがありません。それを追加すると、うまくいくはずです。

これは、実際には Symfony2 や FOS バンドルとは特に関係ありません。それが、PHP の一般的な動作です。そのため、エラー メッセージをより適切に理解するようにしてください。次回、よくわからないエラー メッセージが表示された場合は、そのエラー メッセージと不明な部分について具体的に質問してください。ただ一言:知りたい部分は直接聞いてください。やろうとしている部分についてではありません (やってみることに何の問題もありません。私たちは皆、実践することで学習を行っていると言うだけです。しかし重要な点は、正しい質問をすることです ;))

于 2012-07-19T21:07:53.393 に答える