传递给 myFunction() 的参数 1 必须是字符串的实例,给定的字符串,调用
Posted
技术标签:
【中文标题】传递给 myFunction() 的参数 1 必须是字符串的实例,给定的字符串,调用【英文标题】:Argument 1 passed to myFunction() must be an instance of string, string given, called in 【发布时间】:2014-04-18 13:00:11 【问题描述】:我有这个功能:
function myFunction(string $name)
$db = mysql_connect("localhost", "root", "");
mysql_select_db(...);
$insertplayer="INSERT INTO `...`(....)
VALUES (......')";
if (!mysql_query($insertplayer,$db))
die('Error: ' . mysql_error());
$id = mysql_insert_id();
echo 'done for player N°'.$id;
mysql_close($db);
以及我使用的形式:
<form action="insertplayer.php" method="post">
<input type="text" name="nameplayer" />
<input type="submit" value="ok" />
</form>
但是当我这样做时,我有这个错误:
Catchable fatal error: Argument 1 passed to myFunction() must be an instance of string, string given, called in C:.... on line 23 and defined in C:...
我有这个 int 问题的错误。我该如何解决?
【问题讨论】:
你不需要在你的函数中使用 php 中的 dataType 字符串 类型提示不适用于原始类型,php 正在寻找一个不存在的字符串类。删除该类型提示:myFunction($name) 你能告诉我们你调用你定义的函数的代码吗? Really PHP? "Argument 1 passed to my_function() must be an instance of string, string given" 的可能重复项 谢谢,我只需要删除 myfunction(string $....) 中的字符串 【参考方案1】:尝试从函数声明中删除原始数据类型。 PHP 不需要原始数据类型的类型提示。
function myFunction($name)
$db = mysql_connect("localhost", "root", "");
mysql_select_db(...);
$insertplayer="INSERT INTO `...`(....)
VALUES (......')";
if (!mysql_query($insertplayer,$db))
die('Error: ' . mysql_error());
$id = mysql_insert_id();
echo 'done for player N°'.$id;
mysql_close($db);
【讨论】:
【参考方案2】:如果您不想在编写的每个函数的开头编写代码块来检查类型,如下所示:
function myFunction($myScalar)
if (!is_string($myScalar))
throw new Exception(...);
...
您可以注册一个错误处理程序,将给定类型与您的提示进行比较,例如string==string
您可以忽略该错误。
有关示例,请参阅手册页上的用户说明
http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
【讨论】:
以上是关于传递给 myFunction() 的参数 1 必须是字符串的实例,给定的字符串,调用的主要内容,如果未能解决你的问题,请参考以下文章
传递给 GuzzleHttp\Client::send() 的参数 1 必须实现接口
传递给验证器()的 Laravel 参数 1 必须是 Illuminate\Http\Request 的实例,给定数组
传递给 Illuminate\Routing\Middleware\ThrottleRequests::addHeaders() 的参数 1 必须是 please sir 的实例