小编mif*_*ife的帖子

php严格错误包括

如果类在这样的文件中,则看起来不会发生严格错误:

abstract class Food{}

class Meat extends Food{}                    

abstract class Animal{          
    function feed(Food $food){ }
}

class Cat extends Animal{           
    function feed(Meat $meat){
        parent::feed($meat);
    }   
}    
Run Code Online (Sandbox Code Playgroud)

但是如果你把类定义放在单独的文件中并包含它们:

abstract class Food{}

class Meat extends Food{}                    

require 'Animal.php';
require 'Cat.php';
Run Code Online (Sandbox Code Playgroud)

抛出严格的标准错误消息:

严格标准:声明Cat::feed()应与Animal::feed(Food $food)c:\ path\to\Cat.php在线兼容......

如果all都在一个文件中,即使这样也可以:

class Dog extends Animal{           
  function feed($qty = 1){ 
    for($i = 0; $i < $qty; $i++){
        $Meat = new Meat();
        parent::feed($Meat);
    }       
  } 
}
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?

因为Meat是a Food,首先不应该有抱怨,对吧?因此解决方案简单明了:将所有内容放在一个文件中并满足严格的标准;)

任何提示赞赏

php strict

6
推荐指数
1
解决办法
122
查看次数

标签 统计

php ×1

strict ×1