Catchable fatal error: Argument 1 passed to CoreModelMapperPostMapper::save() must be an instance of CoreModelMapperPost, instance of CoreModelPost given, called in C:wampwwwTestindex.php on line 16 and defined in C:wampwwwTestCoreModelMapperPostMapper.php on line 15
索引.php
<?php
require_once 'Core/Library/SplClassLoader.php';
$loader = new SplClassLoader('Core', '');
$loader->register();
use CoreModelPost,
CoreModelMapperPostMapper;
$db = false;
$postMapper = new PostMapper($db);
$post = new Post;
$postMapper->save($post);
PostMapper接口和PostMapper确实有"Post"
<?php
namespace CoreModelMapper;
interface PostMapperInterface
{
public function save(Post $post);
}
我不明白为什么它抱怨不是"帖子"
这是一个Post
,但不是它正在寻找的Post
。
您似乎对命名空间感到困惑。在一个场合,Post
指的是CoreModelMapperPost
,但你传递的是CoreModelPost
型。
namespace CoreModelMapper;
interface PostMapperInterface
{
public function save(Post $post);
}
您首先声明您现在位于命名空间CoreModelMapper
内,因此当您在方法声明中引用Post
时,Post
相对于该命名空间,这就是为什么它想要一个 CoreModelMapperPost
类型的实例。
您需要像这样更改代码:
public function save(CoreModelPost $post);