Browse Source

匿名函数

master
wiwkok-pc 3 years ago
parent
commit
3ba290cb2f
  1. 7
      01基本语法/01数据类型/02-bool.php
  2. 21
      01基本语法/02静态变量static.php
  3. 26
      01基本语法/03全局变量global.php
  4. 24
      01基本语法/global.php
  5. 16
      01基本语法/static_variables.php
  6. 48
      03函数/04匿名函数.php
  7. 65
      07面向对象/12-类常量.php

7
01基本语法/01数据类型/02-bool.php

@ -0,0 +1,7 @@
<?php
$a=true;
$b=false;
var_dump($a,$b);
echo $a.PHP_EOL;
echo $b.PHP_EOL;
?>

21
01基本语法/02静态变量static.php

@ -0,0 +1,21 @@
<?php
/**
* 静态变量在函数结束后不会结束,在程序结束后才结束
* 静态变量有作用域,函数外不能调用
*/
function func(){
static $a;
$b=0;
$a++;
$b++;
echo $a.PHP_EOL; //每当func()结束后,静态变量a的生命周期没有结束掉,不断的在原来的数值上+1,
echo $b.PHP_EOL; //而b的生命周期结束了,每次调用func都是0
}
func();
func();
echo $a; //WRONG 但是静态变量作用域和局部变量是一样的,在作用域之外是不能使用的
?>

26
01基本语法/03全局变量global.php

@ -0,0 +1,26 @@
<?php
/**
* php的全局变量到函数里不能用,在函数里需要关键字global引用
*/
$a=1;
$b=3;
function func()
{
global $a; //使用global引入全局变量
echo "a:$a".PHP_EOL; //func内使用global引用了a和b,所以c没有打印出来
echo "b:$b".PHP_EOL;
}
//$GLOBALS['var']
function func2()
{
echo "a:".$GLOBALS['a'].PHP_EOL; // $GLOBALS['var'] 指的是函数外部变量本身,是一个变量.在程序的任意位置都能使用
echo "b:".$GLOBALS['b'].PHP_EOL;
}
func();
func2();
?>

24
01基本语法/global.php

@ -1,24 +0,0 @@
<?php
$a=1;
$b=2;
$c=3;
function func()
{
global $a,$b;
echo "a:$a"; //func内使用global引用了a和b,所以c没有打印出来
echo "<br> b:$b";
echo "<br> c:$c";
}
function func2()
{
echo "<br>a:".$GLOBALS['a']; // $GLOBALS['var'] 指的是函数外部变量本身,是一个变量.在程序的任意位置都能使用
echo "<br>b:".$GLOBALS['b'];
echo "<br>c:".$GLOBALS['c'];
}
func();
echo "<br>";
func2();
?>

16
01基本语法/static_variables.php

@ -1,16 +0,0 @@
<?php
function func(){
static $a;
$b=0;
$a++;
$b++;
echo "$a $b <br>"; //每当func()结束后,静态变量a的生命周期没有结束掉,不断的在原来的数值上+1,而b的生命周期结束了,每次调用func都是0
}
func();
func();
func();
echo $a; //但是静态变量作用域和局部变量是一样的,在作用域之外是不能使用的
?>

48
03函数/04匿名函数.php

@ -1,47 +1,47 @@
<?php <?php
//定义匿名函数
/**
* 函数内部的无名函数
* 与普通函数一样有返回值
* 可以作为一个变量值使用
* 常用于做回调函数的参数
*/
//1 匿名函数作为变量值
$a = function(){ $a = function(){
echo 'hello'.'<br>';
// return 'hello';
echo 'hello'.PHP_EOL;
return "这是匿名函数的返回值";
}; };
$a(); $a();
echo $a().PHP_EOL; //output:会执行函数里的代码,并且返回返回值
//2 匿名函数的参数
$b=function($var){
echo $var.PHP_EOL;
return "返回".$var;
};
//查看变量内容
var_dump(($a));
$b("匿名函数的参数");
echo $b("匿名函数的参数").PHP_EOL;
//闭包=匿名函数
//函数里面的函数
//2 匿名函数作为函数里的函数
function func(){ function func(){
//定义局部变量
$b='world'; $b='world';
$innerFunc = function(){ $innerFunc = function(){
//函数内部的函数
//调用函数func的局部变量 //调用函数func的局部变量
echo $b.'<br>';
echo $b; //wrong output:Undefined variable: b
}; };
//调用匿名函数 //调用匿名函数
$innerFunc(); $innerFunc();
} }
func();
// echo $a().'<br>';
// //匿名函数作为参数,回调函数 // //匿名函数作为参数,回调函数
// $arr=[1,2,3,4];
// $ret=array_map(function ($num){
// return $num*$num;
// }, $arr);
// echo '<pre>';
// print_r($ret);
function mathOpt(function(){return 0;}){
}
?> ?>

65
07面向对象/12-类常量.php

@ -1,31 +1,72 @@
<?php <?php
/*
* @Author: your name
* @Date: 2022-03-12 15:09:52
* @LastEditTime: 2022-03-14 10:35:02
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: /wiggins/myDemo/php_demo/07面向对象/12-类常量.php
*/
/** /**
* 类里面的常量 * 类里面的常量
* 类常量不属于类的属性,与类属性等级并列
* 类属于类本身,不属于对象,不能通过‘->'访问
* 子类可以重写父类的类常量,通过区域解析符(parent::)调用父类中的类常量
*/ */
use classA as GlobalClassA;
class classA
class ClassA
{ {
//定义类常量 //定义类常量
const a='hello';
const a='这是一个类常量';
function func() function func()
{ {
//在类的方法中调用类常量
echo self::a.'<br>';
//在类的方法中调用类常量
echo self::a.PHP_EOL;
} }
} }
//直接调用类常量 //直接调用类常量
echo classA::a.'<br>';
echo ClassA::a.PHP_EOL;
//对象::类常量
//对象::类常量,PHP5.3起可以使用变量调用类常量
$obj = new ClassA(); $obj = new ClassA();
echo $obj::a.'<br>';
echo $obj->a.'<br>'; //对象不能访问类常量,会报“Undefined property: classA::$a”
echo $obj::a.PHP_EOL;
//echo $obj->a.'<br>'; //对象不能访问类常量,会报“Undefined property: ClassA::$a”
//对象中方法调用类常量 //对象中方法调用类常量
echo $obj->func();
$obj->func();
//访问父类类常量
class ClassB extends ClassA
{
function func(){
echo parent::a.PHP_EOL;
}
}
echo "调用父类的类常量".PHP_EOL;
$obj=new ClassB();
$obj->func();
//重写父类的类常量
class ClassC extends ClassA
{
const a = "这个一个被子类重写的类常量";
function func(){
echo parent::a.PHP_EOL;
}
}
echo ClassC::a.PHP_EOL; //被子类重写的类常量
$obj=new ClassB(); //这是一个类常量
$obj->func();
/**
* 感悟:类常量估计是在编译时已经实例化在内存的东西,所以不能再实例化
*/
?> ?>
Loading…
Cancel
Save