Php 在函数调用中强制转换变量

Php 在函数调用中强制转换变量,php,scalar,type-hinting,Php,Scalar,Type Hinting,所以如果我建立一个类 class Foo { public $_string; public function($sString = 'new string') { $this->_string = $sString; } } 我想强制地说,$sString在我的函数参数中是string类型的,类似这样的 class Foo { public $_string; public function(string $sString = '

所以如果我建立一个类

class Foo {
    public $_string;
    public function($sString = 'new string') {
        $this->_string = $sString;
    }
}
我想强制地说,$sString在我的函数参数中是string类型的,类似这样的

class Foo {
    public $_string;
    public function(string $sString = 'new string') {
        $this->_string = $sString;
    }
}
class Foo {
    public $_string;
    public function($sString = 'new string') {
        $this->_string = (string)$sString;
    }
}
但是我的IDE说“未定义的类‘String’”,php会抛出错误,那么有没有办法强制说什么类型的变量被传递到类中的函数中,或者我必须像这样在函数中声明它

class Foo {
    public $_string;
    public function(string $sString = 'new string') {
        $this->_string = $sString;
    }
}
class Foo {
    public $_string;
    public function($sString = 'new string') {
        $this->_string = (string)$sString;
    }
}

任何帮助都将不胜感激。谢谢。今天不行。PHP5.4可能有一个
scalar
类型提示,但之前已经提出过这样的建议


您所能做的就是在正文中进行字符串()检查。

今天不行。PHP5.4可能有一个
scalar
类型提示,但之前已经提出过这样的建议

您所能做的就是在正文中检查字符串。

您描述的是“类型暗示”,PHP支持它,但是(出于某种原因)它不允许任何内置的内在类型或
string
(),这解释了您遇到的问题

您可以通过在函数中手动调用
is_string
来解决这个问题,但如果您控制上游调用方,则不需要这样做。

您描述的是“类型暗示”,PHP支持它,但是(出于某种原因)它不允许任何内置的内在类型或
字符串()这就解释了你的问题


您可以通过在函数中手动调用
is_string
来解决此问题,但如果您控制上游调用者,则不需要这样做。

您可以使用
is_string
函数来检查它

if (is_bool($message)) {
  $result = 'It is a boolean';
}
if (is_int($message)) {
  $result = 'It is a integer';
}
if (is_float($message)) {
  $result = 'It is a float';
}
if (is_string($message)) {
  $result = 'It is a string';
}
if (is_array($message)) {
  $result = 'It is an array';
}
if (is_object($message)) {
  $result = 'It is an object';
}
看看这个

class Foo {
    public $_string;
    public function($sString = 'new string') {
        if (is_string($sString)) {
           $this->_string = $sString;
        }
    }
}

您可以使用
is\u string
函数来检查它

if (is_bool($message)) {
  $result = 'It is a boolean';
}
if (is_int($message)) {
  $result = 'It is a integer';
}
if (is_float($message)) {
  $result = 'It is a float';
}
if (is_string($message)) {
  $result = 'It is a string';
}
if (is_array($message)) {
  $result = 'It is an array';
}
if (is_object($message)) {
  $result = 'It is an object';
}
看看这个

class Foo {
    public $_string;
    public function($sString = 'new string') {
        if (is_string($sString)) {
           $this->_string = $sString;
        }
    }
}

我知道如何使用is_string()和is_数组,或者is_xxx。。。为了检查变量的类型,我只是希望我能强行说出函数中使用了哪种类型的var。即使对我来说也不是,但是对于一个大型项目,我们有多个开发人员在同一个代码库上工作,如果有强制检查,它将告诉其他开发人员是否使用了错误的代码,那将是很好的。谢谢你的帮助,希望php能帮助开发者更好地控制变量。我知道如何使用is_string()和is_数组,或者is_xxx。。。为了检查变量的类型,我只是希望我能强行说出函数中使用了哪种类型的var。即使对我来说也不是,但是对于一个大型项目,我们有多个开发人员在同一个代码库上工作,如果有强制检查,它将告诉其他开发人员是否使用了错误的代码,那将是很好的。不过,感谢您的帮助,希望php能够帮助开发人员更好地控制我们的变量。5.4不会得到标量类型暗示。5.5也可能不是,但谁知道也许内部的某个人可以制作一个很好的补丁并说服rasmus。我们可以希望5.4不会得到标量类型暗示。5.5也可能不是,但谁知道也许内部的某个人可以制作一个很好的补丁并说服rasmus。希望是有的,不是吗?