2

我在我正在构建的 Laravel 4 应用程序中遇到了一个非常奇怪的问题,尽管这个问题更多地与 PHP 相关而不是 Laravel:当接口和类方法具有完全相同的签名时,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 回答