尝试创建新表单元素时出现此错误:
Phalcon \ Forms \ FileUpload :: render()的声明必须与Phalcon \ Forms \ ElementInterface :: render()
的声明兼容
这是我的代码:
namespace Phalcon\Forms;
class FileUpload extends Element implements ElementInterface
{
public function __construct(string $name, $options, array $attributes)
{
}
public function render(array $attributes)
{
return 'my form element html';
}
}
此时我尝试了各种不同的参数表示法,但我仍然收到相同的错误。
所以我想知道是否有可能在Phalcon中创建这样的表单元素,或者它只是我在文档中遗漏的东西。
http://phalcon.agent-j.ru/en/1.3.0/Phalcon/Forms/Element/
http://docs.phalconphp.com/en/latest/api/Phalcon_Forms_ElementInterface.html
我使用的是版本1.3.2
答案 0 :(得分:1)
在phalcon文档中定义了这个protoytype:
abstract public string render (array $attributes=?);
所以我把我的代码更改为:
public function render($attributes = false)
{
return 'my form element html';
}
我只是不熟悉=?符号
答案 1 :(得分:0)
你正在使用Phalcon 2吗?!在这个版本中,应该更严格地遵循签名。当我切换到Phalcon 2时,我也遇到了一堆像这样的错误,但幸好这个版本是Zephir编写的,它使源代码更容易阅读。
正如您在ElementInterface定义中所看到的,签名尚不太一致但我们可以很容易地看到render()
只有一个参数而没有array
类型提示。只需从接口实现中删除array
类型即可匹配当前签名。