代码之家  ›  专栏  ›  技术社区  ›  Flavius

强数据类型错误

  •  6
  • Flavius  · 技术社区  · 15 年前

    得到错误是正常的吗? 带有类类型提示的参数的默认值只能为空 “对于定义为

    public function nullify(bool $force=FALSE);
    

    ?

    我需要它是bool,而不是object,默认情况下是false。

    5 回复  |  直到 10 年前
        1
  •  10
  •   VolkerK    14 年前

    在PHP中还没有布尔参数的类型提示。只能指定类名或 array . 因此 function foo(bool $b) 表示:“参数$B必须是类'bool'或NULL'的实例。”

    http://docs.php.net/language.oop5.typehinting :

    函数现在可以强制参数为对象(通过在函数原型中指定类的名称)或数组(从php 5.1开始)。
        2
  •  5
  •   dnagirl    15 年前

    如前所述,类型提示仅适用于数组和对象。您的函数可以这样编写:

    public function nullify($force=FALSE){
      $force=(bool)$force;
      //further stuff
    }
    
        3
  •  3
  •   catsby    15 年前

    php 5类型提示仅限于特定的类(或其子类之一)或数组。不能指定任何其他标量类型。

        4
  •  1
  •   Eric Lavoie    10 年前

    不能将参数强制为布尔值。

    如在 language.oop5.typehinting 以下内容:

    php 5引入了类型提示。函数现在可以强制参数为对象[…]、接口、数组(从php 5.1开始)或可调用(从php 5.4开始)。

    […]

    类型提示 不能与标量类型一起使用 例如int或string。[…]

    正如在 language.types.intro ,php标量类型为:

    - boolean
    - integer
    - float (floating-point number, aka double)
    - string
    
        5
  •  0
  •   Nalaka526 user6239040    12 年前

    您可以尝试:

    public function nullify($force){
      if(is_object($force)) $force = false;
      ...
    }
    

    在升级php之前,请将其视为临时解决方案。