我在我正在构建的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)
{
}
}
答案 0 :(得分: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);
解决了这个问题。保持这种情况以防万一其他人偶然发现同样的错误,以避免头痛