1.9PHP语言的函数(Function)

1.函数定义

//函数名称对大小写不敏感
function 函数名称(参数1, 默认值参数2 = 值, &引用参数, ...可变参数):返回类型 {
    //函数体;
}

2.函数分类

名称修饰符访问
静态方法(static method)用 static 修饰类::静态方法
实例方法(instance method)无 static 修饰对象->实例方法

3.参数分类

名称修饰符
值参数
默认值参数
引用参数用 & 修饰
可变参数用 … 修饰

4.参数传递方式

由于形参是实参的规范,所以实参的数量和类型需与形参一致。

参数的传递不仅支持按位置从左往右依次传递方式,同时也支持按命名参数传递方式。

//按命名参数传递
方法(参数名称1: 实参1, 参数名称2: 实参2)
<?php
// 按位置传递
array_fill(0, 100, 50);

// 按命名参数传递
array_fill(start_index: 0, count: 100, value: 50);
?>

5.覆盖(Override)

在子类中,再次声明与父类相同的属性名和方法名也是有效的,这会覆盖父类中原先的属性和方法,这就叫覆盖,有一些其他编程语言称为重写

class A
{
    public $attribute = 'default value';
    function operation()
    {
        echo 'Something<br />';
        echo  'The value of $attribute is '.$this->attribute.'<br />'; 
  }
}
$a = new A();
$a->operation();
//Something
//The value of $attribute is default value
class B extends A
{
    public $attribute = 'different value';
    function operation()
    {
        echo 'Something else<br />';
        echo  'The value of $attribute is '.$this->attribute.'<br />'; 
  }
}
$b = new B();
$b->operation();
//Something else
//The value of $attribute is different value

final关键字加在方法前面可以禁止子类覆盖。

class A
{
    final function operation()
    {...}
}

6.重载

PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。

7.递归函数

一个函数可以指向并调用自身,便形成了递归。

function recursion($a)
{
    if ($a < 20) {
        echo "$a\n";
        recursion($a + 1);
    }
}

8.匿名函数

匿名函数(Anonymous functions),也叫闭包函数(closures),匿名函数目前是通过 Closure 类来实现的。

function (参数) {
    函数体;
}

9.箭头函数

箭头函数是一种更简洁的 匿名函数 写法。箭头函数也是 Closure 类的实现。

fn (参数列表) => expr

10.魔术方法(Magic Methods)

PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。所有的魔术方法 必须 声明为 public

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __serialize()__unserialize()__toString(), __invoke(), __set_state(), __clone() 和 __debugInfo()

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/back/php/4946.html

发表评论

登录后才能评论