PHP中函数参数有类型约束。那就是,明确要求参数的类型。比如以下代码:
<?php
//如下面的类
class MyClass
{
/**
* 测试函数
* 第一个参数必须为类OtherClass的一个对象
*/
public function test(OtherClass $otherclass) {
echo $otherclass->var;
}
/**
* 另一个测试函数
* 第一个参数必须为数组
*/
public function test_array(array $input_array) {
print_r($input_array);
}
}
//另外一个类
class OtherClass {
public $var = 'Hello World';
}
?>
那么,类型约束又有什么关系呢?这里有一个奇特的问题。那就是:
如果显式指定参数是某种类型的变量,则参加快PHP的程序效率。为什么呢?因为,反是对象,PHP5默认是以引用传递的。所以,public function test(OtherClass $otherclass) {
这行代码中,虽没有引用符号,实际也是引用传参。
那么,数组呢?因为,在PHP中我们面对的大数据的类型不外乎三类,对象,数组,字符串,而字符串是要明确在参数表中使用引用符号(&)的。
数组怎样,您试一下就明白了。所以,我不多说了!
当对象参数被加上类型约束后,仍可以有默认值,成为可选参数。如果这样,函数内部就要判断,传入参数是否为NULL。但一般是不需要使用 instanceof这个运算符了。 (此运算符比较特别,如果要否定,必须是 (!(A instanceod B))的形式。 )以下是有默认值的原码:
<?php
class ca{
public $name='';
}
class cb{
public $ca;
public $color;
public $array=array();
//这里我们加上了类型约束,同时也给了默认值。但我们能发现,只有对象是以引用传递的
function test($srcStr,$color,ca $ca = null,array $array=null){
$this->color=$color;
$this->ca = $ca;
$this->array = $array;
$ca->name=$srcStr;
print_r($this);
}
}
$cat=new ca();
$cbt=new cb();
$cbt->test('test','red'); //这里我们可以不传对象
$cbt->test('test','blue',$cat); //我们可以传对象,但数组仍不传
print_r($cat);
$cat1=new ca();
$arr=array(1,2,3,4,5);
$cbt->test('test','black',$cat1,$arr); //数组对象全部传入
array_push($arr,6,7,8,9); //再改变数组
print_r($cbt->array); //结果传入的数组未变。
?>
分享到:
相关推荐
5. PHP 7 引入的标量类型提示:在PHP 7中,为了增加类型安全,引入了对标量类型(如整型、浮点型、字符串和布尔型)的类型约束。例如: ```php function addNumbers(int $a, int $b): int { return $a + $b; } ```...
主要介绍了PHP中的类型约束介绍,PHP的类方法和函数中可实现类型约束,但参数只能指定类、数组、接口、callable 四种类型,参数可默认为NULL,PHP并不能约束标量类型或其它类型,需要的朋友可以参考下。
然而,需要注意的是,PHP作为动态类型语言,类型约束并不像静态类型语言那样强制执行,如果在运行时传入了不符合类型约束的参数,PHP会尝试进行类型转换,这可能导致意外的行为或错误。因此,开发者在使用值类型包装...
PHP类型约束是PHP 5.0以上版本支持的特性,它允许开发者在函数或方法定义时对参数类型做出限制,确保传入的数据类型符合预期,从而提高代码的安全性和可读性。本文将详细介绍PHP类型约束的用法,并通过具体实例来...
主要介绍了PHP中的类型约束介绍,PHP的类方法和函数中可实现类型约束,但参数只能指定类、数组、接口、callable 四种类型,参数可默认为NULL,PHP并不能约束标量类型或其它类型,需要的朋友可以参考下
PHP面向对象编程中的类型约束主要用于增强代码的健壮性和可读性。类型约束是编程语言中用于确保函数或方法参数符合指定类型的机制。在强类型语言中,如Java或C#,类型约束是必不可少的特性,因为它们要求变量在使用...
在PHP中,通常使用UNIX时间戳(int类型)配合PHP时间函数进行处理。 4. **其他类型**: - **二进制类型**:如binary和varbinary,用于存储二进制数据。 - **枚举和集合类型**:enum和set,用于限制字段值在一个...
PHP5是PHP的一个重大升级版本,引入了诸多新特性和改进,例如:面向对象编程的支持加强、错误处理机制的改善、类型提示的引入等。它在性能、稳定性和安全性上都有显著提升,为开发者提供了更强大的工具。 MySQL则是...
不过,有一些库如`spl_types`或`splat/php-typing`提供了模拟泛型的方式,通过自定义类和接口来实现对类型约束的控制。例如,`spatie-typed`这个库可能就是这样一个工具,它可能包含了用于创建泛型容器的类和方法。 ...
1. PHP5基础:包括PHP5的安装配置、基本语法、变量类型、流程控制(如条件语句和循环)、函数定义与调用、数组操作等。 2. 面向对象编程:PHP5引入了完整的面向对象特性,如类、对象、继承、封装、多态性等,这是...
5. **存储引擎**:如InnoDB支持事务处理和外键约束,MyISAM则强调速度但不支持事务。 **PHP5连接MySQL** 1. **mysqli扩展**:提供连接、查询、结果处理等功能,支持预处理语句,提高了安全性。 2. **PDO_MySQL**:...
【PHP5.chm】 PHP5是PHP编程语言的一个重要版本,它引入了许多新特性,增强了性能和稳定性。在PHP5中,面向对象编程得到了显著加强,包括类、对象、继承、封装和多态等核心概念。此外,错误处理机制得到改进,引入了...
MySQL部分将涵盖数据库设计,包括如何创建数据库、表,定义字段类型和约束。读者将学习SQL语言,包括SELECT查询用于检索数据,INSERT用于插入新记录,UPDATE用于修改现有记录,以及DELETE用于删除记录。还会讨论更...
GetOptionKit代码质量版本和统计信息一个功能强大PHP选项解析器工具包,支持类型约束,标志,多个标志,多个值和必需的值检查。 GetOptionKit支持PHP5.3,wi GetOptionKit代码质量版本和统计信息一个强大PHP选项解析...
PHP 5 的主要改进在于面向对象编程(OOP)的支持,错误处理和类型系统的增强。以下是关键知识点: 1. **面向对象编程**:PHP 5 引入了类、对象、继承、封装和多态等 OOP 基础概念,提高了代码的可维护性和重用性。 ...
2. 数据类型和约束:了解各种数据类型(如INT、VARCHAR、DATE等)及其适用场景,以及如何设置字段的约束条件。 3. 关系数据库设计:理解范式理论,进行数据库规范化设计,避免数据冗余和不一致。 4. 查询优化:如何...
5. **外键约束**:确保数据的引用完整性,防止不一致的数据库状态。 结合这两个技术,Web开发者可以创建动态、数据驱动的网站。在“website2”源码中,可能涵盖了用户注册登录系统、内容管理、数据检索和展示、以及...