PHP基础入门(二)【PHP函数基础】

PHP基础入门(二)——函数基础

了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础。

这部分主要讲的就是: 函数的声明与使用、PHP中变量的作用域、静态变量、函数的参数传递、变量函数、回调函数、匿名函数、include&require、PHP闭包

PHP的函数基础↓↓↓

一、函数的声明与使用

1、标识符:程序中的变量名,属性名,方法名,函数名,类名统称为标识符;
  ① 标识符的命名要求:
    只要是标识符,命名就只有字母、数字、下划线组成,开头不能是数字;
  ② 标识符的命名规范:
    类名:要符合"大驼峰法则",每个单词的首字母全部大写!PersonName
    其他标识符:符合"小驼峰法则"。首字母小写,之后每个单词的首字母大写。 myNameIsHang
    或者使用匈"牙利命名法",所有字母小写,单词之间用下划线分隔。 my_name_is

2、函数名的要求:
  ① 函数名也是标识符之一。符合标识符的要求与规范。
  ② 函数名不区分大小写。
  ③ 函数名不能与已有函数名重复,不能与内置函数名重复。
  ④ bool类型 function_exists("func") 用于检测函数名是否存在。

二、PHP中变量的作用域

1、局部变量:声明在函数内部的变量,称为局部变量,只能在函数内部使用,如果函数外需要使用,需要return关键字将变量返回。
2、全局变量:声明在函数外面的称为全局变量。
3、注意:PHP中,全局范围不能访问局部变量;局部范围也不能访问全局变量。
  如果要在函数中使用全局变量,则需要使用 global关键字将全局变量引入。
  函数中如果有变量与全局变量重名,global语句之上,使用局部变量;global语句之下,使用全局变量。
4、GLOBALS[] 全局数组
  GLOBALS[] 数组,是PHP内置的全局数组。可以直接给数组添加键和值,无论在函数内wai声明,均可在任何地方使用。
    eg:GLOBALS[‘name‘]="hanghao";
  即,无论在哪里声明,在任何地方都可以使用GLOBALS[‘name‘]
5、函数中需要使用全局变量,还有一种方式【函数传参】
  可以将全局变量通过函数的参数传入。但是传入的参数是函数的形参,也就是函数内部的局部变量,这个变量与全局变量实际上是两个变量,内部改变,全局变量不会变。
  如果,需要在函数内部改变局部变量,可以将形参声明为取址形式
  function func($a1,$a2){}
  即,函数内修改a1,全局的a1不会改变;函数内修改a2,全局的a2也会改变。
注意:如果函数声明的形参是取址形式,则调用时必须传入变量,而不能是字面量。
  例如上面的函数调用: func($a1,$a2); √     func($a1,2); x
  因为字面量,不能 中的变量,无法取地址。
6、PHP中,子函数也无法使用父函数中的变量
  如果子函数要使用父函数的变量,可以将子函数作为变量函数使用,同时配合use关键字将父函数的变量传入子函数。

function func(){
  $a=10;
  $func=func() use($a){
    echo $a;
  }
}

use关键字只能配合变量函数使用,而不能用于function func(){}形式。

三、静态变量

1、使用scatic关键字声明的变量,成为静态变量。scatic $a=10;
2、静态变量的特点:
  ① 静态变量在函数加载是进行声明。
  ② 静态变量在函数调用完成后不会被释放。
  ③ 静态变量在整个脚本执行过程中,只会声明一次,脚本执行完成后,释放变量。
  ④同一函数,多次调用,共享同一静态变量。

四、函数的参数传递

1、在PHP中如果有参数传递:实参只能比形参多,不能比形参少!!
2、常规参数传递:function func($a){} func(123);
3、引用参数传递:function func(&$a){} func($b);
  ①通过&传递进来的是实参的地址,所以函数内部改变形参,外部的实参也会变。
  ②如果形参为引用参数,那么实参必须是变量,而不是字面量。因为字面量没有地址!! func(10); ×
4、默认参数:function func($b,$a=10){} func(20);
   是$可以不传,默认为10;$b必须传递,否则使用时未定义报错。
  注意:如果参数中默认参数,也有默认参数,则需要把所有的非默认参数放在前面,所有的默认参数放在后面。

5、可变参数列表:由于PHP实参可以比形参多,那么我们可以传递N个实参,并通过PHP内置函数取到对应参数。
  var_dump(func_get_args());  返回数组格式,取到所有实参列表;
  var_dump(func_num_args());  返回实参列表总个数;count(func_num_args());
  var_dump(func_get_arg(0));  传入index,取到第几个参数 func_get_args()[0];

五、变量函数

1、将一个函数名,转为字符串后,赋给一个变量。这个变量,就是我们所说的变量函数,可以加()调用函数内容。

  function func(){}

  $a="func()";  //$a就是变量函数

  $a();

六、自定义回调函数

1、使用变量函数,自定义回调函数
  function func($func){$func();}--->function f(){}--->func("f");

2、使用call_user_func_array和call_user_func自定义回调函数;
  两个函数的第一个参数,均为回调函数,表示执行当前回调。
  不同点在于:call_user_func_array()第二个参数为数组,并将数组的每一个值赋给回调函数的参数列表,相当于JS中的apply();
  而call_user_func,是将回调函数的参数列表,直接展开写到第2~多个参数中,相当于JS中的call();

call_user_func_array("func",array(1,2,3));
    func(1,2,3);
call_user_func("func",1,2,3);
    func(1,2,3);

七、匿名函数

由于变量函数,存在两种调用方式,(func()  $func();)
无法保证调用方法的统一,所以,变量的分号一定不能省略。

$func1 = function(){};

匿名函数本身也是变量,用var_dump();检测为Object类型

 1 function func(){}
 2    $fun = "func";
 3    $fun();
 4    func();
 5
 6 $func = function(){
 7        echo "I am ZXX<br />";
 8 };
 9 $func(10);
10 var_dump($func);

八、include&require

1、两者的作用:都是用于引入外部的PHP文件到当前文件中。

2、两者的区别:当引入外部文件出错时,include会产生waring级别的警告,不会影响代码的后续执行;而require会产生error级别的错误,将阻断代码的执行

3、一般,当用于在文件最上方导入某些文件时,使用require导入,如果导入失败,则不再执行文件;
  而如果是在某些分支条件中,导入执行某些操作,则一般使用include。一旦报错,不影响其他分支功能。

4、include_once和require_once表示:文件只能导入一次,如果多次调用此函数,则后面的语句会判断文件是否导入。
再决定是否导入新文件。

5、include和require可以导入各种类型的文件。
相当于在当前文件copy了一份,但是copy过程中,PHP引擎会进行适当的编译,确保不会出错。

6、include和require是函数,也是指令!PHP对于很多常用函数会提供指令的写法。
  eg:echo("11");//函数写法 echo"11";//指令写法

1 $num = true;
2    if($num){
3        include‘functionDate.php‘;
4            //require "functionDate.php";
5            func1();
6        func2();
7        func3();
8 }
9 echo "haha";

九、PHP闭包

在PHP中,子函数无法直接访问父函数的局部变量,必须使用User关键词向下传递!!!

 1 $a = 12;
 2 function func1(){
 3    $num = 10;
 4    $num1 = 11;
 5    $func2 = function() use($num,$num1){//使用use关键词传递父函数局部变量
 6        global $a;
 7        var_dump($a);
 8        var_dump($num);
 9        var_dump($num1);
10    };
11    return $func2;
12 }
13 $f = func1();
14 $f($num);

如果参数中既有默认参数,也有非默认参数,那么默认参数列表
必须要在非默认参数列表后面,即调用的时候必须保证非默认列表的优先赋值。

时间: 2024-08-07 16:57:52

PHP基础入门(二)【PHP函数基础】的相关文章

转 Python爬虫入门二之爬虫基础了解

静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML.JS.CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了. 因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容

C#基础入门 二

C#基础入门 二 循环语句 与C语言中用法相同. continue:结束本次循环(continue)后面的代码不再执行,进入下次循环(通常与if连用). 数组 一维数组定义:int[] intArray; 一维数组初始化:定义后,必须对其初始化才能使用 动态初始化:数据类型[] 数组名=new 数据类型[数组长度]{元素1,元素2...}:动态初始化借助new运算符为数组元素分配内存空间,并赋初值. 不给定初值情况下,各元素取默认值,数值型初始值为0,布尔型为false. 静态初始化:数据类型[

Python基础入门 (二)

在上次课程中简要的讲述了Python的基础常识,现在来详细的学习一下吧! 一.类和对象 面向过程和面向对象 面向过程:C 面向对象:Java.Python等 类和对象的含义: 类,是对事物的抽象,比如:车 对象,是类的一个实例,比如:别克 类和对象的关系: 类是对象的定义,而实例是真正的事物,它存放了类中所定义的对象的具体信息: 对象的创建,也就是类的实例化. 对于Python,一切事物都是对象,对象基于类的创建. 具体实例讲解 右边的两个对象是基于左边的字符串类创建的,而两个字符串同时具有了字

Python基础(二)函数

一.函数介绍 函数是实现特定功能的代码,提高代码的复用性:函数必须得调用才会执行:一个函数只做一件事情 二.定义函数:用关键字def 调用函数:函数名+() 三.函数入参,形参,实参 四.局部变量和全局变量 函数里面定义的变量,就是局部变量,只能在函数里面可以使用,出了函数外面就不能使用了 五.返回值 return 后续补充........ 原文地址:https://www.cnblogs.com/zhangvicky/p/9575781.html

前端基础入门二(CSS)

学习大纲 学会使用CSS选择器 熟记CSS样式和外观属性 熟练掌握CSS各种选择器 熟练掌握CSS各种选择器 熟练掌握CSS三种显示模式 熟练掌握CSS背景属性 熟练掌握CSS三大特性 熟练掌握CSS盒子模型 熟练掌握CSS浮动 10.熟练掌握CSS定位11.熟练掌握CSS高级技巧强化CSS 自己是个做了几年开发的老码农,希望本文对你有用! 这里推荐一下我的前端学习交流圈:767273102 ,里面都是学习前端的,从最基础的HTML+CSS+JS[炫酷特效,游戏,插件封装,设计模式]到移动端HT

Spring MVC 基础入门二

单个接收表单提交的参数 在实际开发中通过会在spring MVC的Controller里面接收表单提交过来的参数,这块代码该怎么去编写呢? 示例: 编写一个带有表单的jsp: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> &l

基础入门_Python-内建函数.运维开发中eval内建函数的最佳实践?

简单介绍: 说明: 在指定命名空间中计算参数字符串的有效表达式,并返回一个对象, Help on built-in function eval in module __builtin__: eval(...)     eval(source[, globals[, locals]]) -> value          Evaluate the source in the context of globals and locals.     The source may be a string 

C#学习笔记---基础入门(二)

枚举 枚举是被命名的整型常数的集合:枚举类型的变量只有赋值后才能使用:不同枚举中的枚举值可以重名:可以自定义枚举值. enum Playstates {            跑, 跳,下滑,左转,右转}枚举值的使用:Playstates.跑: 结构体 结构体相当于一个复合型的容器,其是由一系列不同类型的数据构成的集合:结构体中的成员不能在定义中赋初始值. struct Person{ //public 类型 变量名 public string name; public int age; }//

Python 基础入门 5_2 function 函数

"""装饰器概念:是一个闭包,把一个函数当作参数并函数内定义的函数的函数作用:修改你不能修改(即源码不在你手上或者你不想修改)的函数装饰器实际上是一个函数,要实现装饰器的作用如下:1. 原函数 = 装饰器(原函数)2. 在原函数上面加@装饰器名称 注意:装饰器要在原函数之前创建好"""def outer(fun): def outer1(): print("*************") fun() return outer1

Python爬虫入门二之爬虫基础了解

1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据.这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿. 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.bai