【问题标题】:php indicate the real typephp表示真实类型
【发布时间】:2012-04-30 02:38:07
【问题描述】:

我想或者我更喜欢用 Php 指明函数中参数的真实类型,这可能吗?

例子:

<?php
function test($param)
{
   echo $param;
}
$str = "hiiiii everyone";
test($str);
?>

不要只把 $param 放在函数测试中;我想放这样的东西

function test(string $param) // string is the type of the param, that can be int, long ect or an object which I had created.

使用最新版本的 PHP 可以做到这一点吗?

【问题讨论】:

  • @Jonathan Sampson:谢谢 :-)
  • Documentationisyourfriend。阅读。爱它。使用它。
  • 看起来像是一个小葡萄干把问题打出来了,我们在这里是成年人(我假设(可能是错误的))

标签: php types casting


【解决方案1】:

您正在寻找的是Type Hinting。但是,如链接手册页所述:

类型提示不能用于标量类型,例如 int 或 string。

这意味着不,您不能将函数的参数强制为字符串。您可以强制它成为特定类的实例、可调用的对象或数组。

如果您想强制参数为字符串,请执行以下操作:

function my_func ($mustBeAString) {
  if (!is_string($mustBeAString)) return;
  // Do stuff here
}

【讨论】:

    【解决方案2】:

    没有。 PHP 是一种动态类型语言;变量(以及参数)没有设置类型。您可以尝试使用gettype 执行您自己的事情,即:

    function test($param) {
        if(gettype($param) != "string")
            throw new TypeException //or something
    }
    

    但这是个坏主意。不要尝试用您不熟悉的语言实现其他语言的功能。只要尝试并采用正确的方式,看看它会如何发展。

    【讨论】:

    • 糟糕忘了缩进。谢谢@xbonez
    • thx 很明显,代码之美在不知道它们的类型的情况下拥有一些功能是非常无聊的......
    • 只是在 PHP 中添加...,$Vars = null; 适用于 ìf(!$Vars)if($Vars == null)if($Vars == 0)。如您所见,null = 0 = 空
    【解决方案3】:

    Type Hinting 是在 PHP5 中引入的。您现在可以通过在参数列表本身中提供该类型来强制参数为某种类型,如您的示例所示。

    很遗憾,不允许使用标量对象(如 intstring)。

    您可以使用gettype()is_string()(也可以处理other types)甚至类型运算符instanceof等方法在内部进行自己的检查以确定传递的对象是否属于正确的类型。

    【讨论】:

      【解决方案4】:

      我想把这个带到餐桌上:

      var_dump($str);
      

      【讨论】:

        猜你喜欢
        • 2011-01-16
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        相关资源
        最近更新 更多