wiwkok-pc
3 years ago
7 changed files with 131 additions and 76 deletions
-
701基本语法/01数据类型/02-bool.php
-
2101基本语法/02静态变量static.php
-
2601基本语法/03全局变量global.php
-
2401基本语法/global.php
-
1601基本语法/static_variables.php
-
4603函数/04匿名函数.php
-
6507面向对象/12-类常量.php
@ -0,0 +1,7 @@ |
|||||
|
<?php |
||||
|
$a=true; |
||||
|
$b=false; |
||||
|
var_dump($a,$b); |
||||
|
echo $a.PHP_EOL; |
||||
|
echo $b.PHP_EOL; |
||||
|
?>
|
@ -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 但是静态变量作用域和局部变量是一样的,在作用域之外是不能使用的
|
||||
|
?>
|
||||
|
|
@ -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(); |
||||
|
?>
|
@ -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(); |
|
||||
?>
|
|
@ -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; //但是静态变量作用域和局部变量是一样的,在作用域之外是不能使用的
|
|
||||
?>
|
|
||||
|
|
@ -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:会执行函数里的代码,并且返回返回值
|
||||
|
|
||||
//查看变量内容
|
|
||||
var_dump(($a)); |
|
||||
|
//2 匿名函数的参数
|
||||
|
$b=function($var){ |
||||
|
echo $var.PHP_EOL; |
||||
|
return "返回".$var; |
||||
|
}; |
||||
|
|
||||
|
$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);
|
|
||||
|
function mathOpt(function(){return 0;}){ |
||||
|
|
||||
// echo '<pre>';
|
|
||||
// print_r($ret);
|
|
||||
|
} |
||||
?>
|
?>
|
@ -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(); |
||||
|
|
||||
|
/** |
||||
|
* 感悟:类常量估计是在编译时已经实例化在内存的东西,所以不能再实例化 |
||||
|
*/ |
||||
?>
|
?>
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue