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。希望是有的,不是吗?