求助:关于继承错误的问题
php版本5.4.12
PHP Strict Standards: Declaration of db_attach::needBy() should be compatible with spModel::needBy($id, $value) in C:\php\web\db\db_attach.php on line 25
重写的时候参数不一致,看了网上的方法
1.给重写的函数参数初始化
2.设置error_reporting为error_reporting(E_ALL & ~(E_STRICT | E_NOTICE))(我是在php.ini添加的)
总是无法屏蔽这个错误。请问有什么办法吗?谢谢
回复讨论(解决方案)
再加一个 & ~E_DEPRECATED
通常此类错误时不该屏蔽的
按着提示修改一下,可以使程序更健壮
还是不行啊,重写不是不要求参数一致吗?这个要改,程序动的太多了,难道要换版本?
贴出你的代码,只贴相关的部分
这样空对空的说不清楚
class access{
public function needBy($field, $value)
{
return $this->find(array($field=>$value));
}
}
class dbconect extends access
{
function needBy($id)
{
return $this->find(array('id'=>$id),'','uid,path');
}
}
谢谢,帮忙看看,还需要什么随时提供
等不急了!
测试了一下
class c { function test( $a ) { return 1; } } class cc extends c { function test() { return null; } } $cc = new cc();
这很简单,重写方法的函数签名本应该就和基类函数是一致的,这也是符合自然规律的,因为override本来就是覆盖的意思嘛,既然覆盖了,那么就应该和原函数一致,不然怎么能“盖”的住呢
呵呵,贴的比我写还快
access::needBy($field, $value) 有两个参数
dbconect 继承于 access
dbconect::needBy($id) 只有一个参数,所以出错。原因上面已说
只需
dbconect::needBy($id, $null=null) 加一个可缺省的参数
就可以了
这段写的,我觉得是版本问题
Reproduce code:
---------------
// this code does trigger a strict message
error_reporting( E_ALL | E_STRICT );
class cc extends c {
function test() { return null; }
}
class c {
function test( $a ) { return 1; }
}
$cc = new cc();
?>
// this code does NOT trigger a strict message
error_reporting( E_ALL | E_STRICT );
class c {
function test( $a ) { return 1; }
}
class cc extends c {
function test() { return null; }
}
$cc = new cc();
?>
Expected result:
----------------
None of the code blocks should trigger an error (my personal preference) or both code blocks must trigger a notice.
Actual result:
--------------
First block triggers:
Strict standards: Declaration of cc::test() should be compatible with that of c::test() in strict_test.php on line 4
Second does nothing at all.
缺省的参数的方法不错,测试通过,谢谢版主,学习了,以后还要经常请教,非常感谢!
当然与版本有关啦
php 用的人太多了,所以开发者们有意的制造些障碍
到 php5.5 就可能象 java 一样严厉了
于是就成了解释执行的 java ?? 永远跟在 java 后面吃屎

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...
