2

私が構築している Laravel 4 アプリケーションで非常に奇妙な問題に遭遇しましたが、この質問は Laravel よりも PHP に関連しています:インターフェイスとクラス メソッドの両方がまったく同じシグネチャを持っている場合、これらのメソッドは互換性がないと PHP が不平を言っています

たとえば、間違った型ヒントが使用されているか、引数の数に一貫性がない場合にのみ文句を言うべきですが、何らかの理由で、すべてが正しく行われたときにこれが文句を言います。この問題を抱えている人は他にいません。私が見ていないものは誰でも見ることができますか?

インターフェース:

<?php
namespace Repository;

interface TillRepositoryInterface {
    public static function allInVenue(Venue $venue);

    public static function findByIdInVenue(Venue $venue);
}

インターフェイスを実装するリポジトリ クラス:

<?php

class TillRepository extends BaseRepository implements Repository\TillRepositoryInterface {

    public static function allInVenue(Venue $venue)
    {

    }

    public static function findByIdInVenue(Venue $venue)
    {

    }
}
4

1 に答える 1

11

質問を投稿して数秒後に脳がオンになったようです。

インターフェースで名前空間を使用していたのは事実でし(Venue $venue)(Repository\Venue $venue)。これを変更するだけです:

public static function allInVenue(Venue $venue);

public static function findByIdInVenue(Venue $venue);

これに

public static function allInVenue(\Venue $venue);

public static function findByIdInVenue(\Venue $venue);

問題を解決しました。頭痛を避けるために、他の誰かが同じ間違いに出くわした場合に備えて、これを維持してください

于 2013-10-25T14:33:25.943 に答える