首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已传递PSR-0参数

已传递PSR-0参数
EN

Stack Overflow用户
提问于 2012-12-09 02:06:51
回答 1查看 83关注 0票数 0
代码语言:javascript
复制
Catchable fatal error: Argument 1 passed to Core\Model\Mapper\PostMapper::save() must be an instance of Core\Model\Mapper\Post, instance of Core\Model\Post given, called in C:\wamp\www\Test\index.php on line 16 and defined in C:\wamp\www\Test\Core\Model\Mapper\PostMapper.php on line 15

index.php

代码语言:javascript
复制
<?php
require_once 'Core/Library/SplClassLoader.php';

$loader = new SplClassLoader('Core', '');
$loader->register();

use Core\Model\Post,
    Core\Model\Mapper\PostMapper;

$db = false;

$postMapper = new PostMapper($db);

$post = new Post;

$postMapper->save($post);

PostMapper接口和PostMapper有"Post“

代码语言:javascript
复制
<?php
namespace Core\Model\Mapper;

interface PostMapperInterface
{

    public function save(Post $post);
}

我不明白为什么它会抱怨自己不是“邮报”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-09 02:08:42

它是一个Post,但不是它要找的Post

您似乎被名称空间搞糊涂了。有一次,Post引用了Core\Model\Mapper\Post,但您传递的是Core\Model\Post类型。

代码语言:javascript
复制
namespace Core\Model\Mapper;

interface PostMapperInterface
{

    public function save(Post $post);
}

首先声明您现在位于名称空间Core\Model\Mapper中,因此当您在方法声明中引用Post时,Post 是相对于该名称空间的,这就是它需要类型Core\Model\Mapper\Post的实例的原因。

你需要像这样修改你的代码:

代码语言:javascript
复制
public function save(\Core\Model\Post $post);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13780284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档