加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

在 PHP 中设定数据类型应注意些什么事项

发布时间:2023-11-24 11:11:57 所属栏目:语言 来源:
导读:这篇文章主要讲解了“PHP类型约束如何使用,有什么要注意的?”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP类型约束如何使用,有什么要注意

这篇文章主要讲解了“PHP类型约束如何使用,有什么要注意的?”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP类型约束如何使用,有什么要注意的?”吧!

PHP 5 可以使用类型约束。函数的参数可以指定必须为对象(在函数原型里面指定类的名字),接口,数组(PHP 5.1 起)或者 callable(PHP 5.4 起)。不过如果使用NULL 作为参数的默认值,那么在调用函数的时候依然可以使用 NULL 作为实参。

如果一个类或接口指定了类型约束,则其所有的子类或实现也都如此。

类型约束不能用于标量类型如 int 或 string。Traits 也不允许。

Example #1 类型约束示例

<?php

//如下面的类

class MyClass

{

/**

* 测试函数

* 第一个参数必须为 OtherClass 类的一个对象

*/

public function test(OtherClass $otherclass) {

echo $otherclass->var;

}

/**

* 另一个测试函数

* 第一个参数必须为数组

*/

public function test_array(array $input_array) {

print_r($input_array);

}

/**

* 第一个参数必须为递归类型

*/

public function test_interface(Traversable $iterator) {

echo get_class($iterator);

}

/**

* 第一个参数必须为回调类型

*/

public function test_callable(callable $callback, $data) {

call_user_func($callback, $data);

}

}

// OtherClass 类定义

class OtherClass {

public $var = 'Hello World';

}

?>

函数调用的参数与定义的参数类型不一致时,会抛出一个可捕获的致命错误。

<?php

// 两个类的对象

$myclass = new MyClass;

$otherclass = new OtherClass;

// 致命错误:第一个参数必须是 OtherClass 类的一个对象

$myclass->test('hello');

// 致命错误:第一个参数必须为 OtherClass 类的一个实例

$foo = new stdClass;

$myclass->test($foo);

// 致命错误:第一个参数不能为 null

$myclass->test(null);

// 正确:输出 Hello World

$myclass->test($otherclass);

// 致命错误:第一个参数必须为数组

$myclass->test_array('a string');

// 正确:输出数组

$myclass->test_array(array('a', 'b', 'c'));

// 正确:输出 ArrayObject

$myclass->test_interface(new ArrayObject(array()));

// 正确:输出 int(1)

$myclass->test_callable('var_dump', 1);

?>

类型约束不只是用在类的成员函数里,也能使用在函数里:

<?php

// 如下面的类

class MyClass {

public $var = 'Hello World';

}

/**

* 测试函数

* 第一个参数必须是 MyClass 类的一个对象

*/

function MyFunction (MyClass $foo) {

echo $foo->var;

}

// 正确

$myclass = new MyClass;

MyFunction($myclass);

?>

类型约束允许 NULL 值:

<?php

/* 接受 NULL 值 */

function test(stdClass $obj = NULL) {}

test(NULL);

test(new stdClass);

?>

以上就是关于“PHP类型约束如何使用,有什么要注意的?”的介绍了,感谢各位的阅读,希望这篇文章能帮助大家解决问题。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章