当前位置: 代码迷 >> 综合 >> (小白)PHP基础学习003 20201003
  详细解决方案

(小白)PHP基础学习003 20201003

热度:80   发布时间:2024-02-25 06:21:40.0

(小白)PHP基础学习003 20201003

历程

  1. 静态变量
    static,是在函数内部定义的变量,使用static关键字修饰,用来实现跨路径函数共享数据的变量;
    static $变量名=值 //通常会在定义的时候就直接赋值
    静态变量都是局部变量

为了跨函数共享数据,不是不同函数,而是同一个函数被多次调用,在多次调用时,不会重复定义,而只是会被第一次初始化;

<?php
function a(){
    $a=1;static $b=1;echo $a++,"\r\n",$b++,"\r\n";
}
a();
echo "------\r";
a();
echo "------\r";
a();
?>

结果:

1
1
------
1
2
------
1
3

发现static定义的变量,每一次都根据上一次的进行了改变

在函数结束后不会被释放
1、为了统计
2、为了统筹函数多次调用得到的不同结果(递归思想)

  1. 可变函数
    当前有一个变量所保存的值,刚好是一个函数的名字,那么可以使用变量+()来充当函数名使用
<?php
function display2(){
    echo __FUNCTION__;
}
$func="display";
$func();
?>

结果:

display2

可变函数在系统使用的过程中还是比较多的,尤其是使用多系统函数的时候,需要用户在外部定义一个自定义函数,但是需要传入到系统函数内部使用。

  1. 匿名函数

<?php
$a=function(){
      //匿名函数echo "hello world!","\r\n";
};
$a();
var_dump($a);?>

结果:

hello world!
object(Closure)#1 (0) {
    
}

Closure就是闭包

  1. 闭包
    函数内部有一些局部变量(要执行的代码码)在函数执行之后没有被释放
<?php
function display(){
    $name=__FUNCTION__;$innerfunction=function() use($name){
     //use就是将外部变量(局部)保留给内部使用(闭包)echo $name;};//函数调用$innerfunction();
}display();?>

结果:

display
  1. 伪类型
    实际上在PHP中不存在的类型,但是通过伪类型可以帮助程序员更好的查看操作手册而更方便学习
    Mixed:多类型,只要是PHP中的类型即可
    Number:

  2. 常用的系统函数:
    有关数据的函数:
    rand():得到一个随机数,指定区间的随机整数

<?php
echo rand(1,10),"\r";
echo mt_rand(1,10),"\r"; //效率比rand高,一般用随机会用mt_rand
?>

pow()求指定数字的指定次数结果:

<?php
echo pow(2,10),"\r";
echo 2^10,"\r"; //这里就不是2的10次方了
echo 2**10,"\r";
?>
1024
8
1024
  1. 有关函数的函数:

function_exists():判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码安全性更高)
func_get_arg():在自定义函数中去获取指定数值对应的参数
func_get_args():在自定义函数中获取所有的参数(数组)
func_num_args():在自定义函数中获取参数的数量

以上都是统计的实参的数量

<?php
function test($a,$b){
    var_dump(func_get_arg(1));var_dump(func_get_args());var_dump(func_num_args());
};
test(1,2);
?>
int(2)
array(2) {
    [0]=>int(1)[1]=>int(2)
}
int(2)
  1. 错误处理:
    语法错误:Parseerror
    运行时错误:runtime error
    逻辑错误:

错误代号:
所有看到的代码在PHP中都被定义为了系统常量(可以直接使用)
系统错误:
E_PARSE:编译错误,代码不会执行
E_ERROR:fetal error,致使错误,会导致代码不能正确继续执行(出错的位置断掉)
E_WARING:警告错误,不会影响代码执行,但是可能得到意想不到的结果
E_NOTICE:notice,通知错误,不会影响

用户错误:
E_USER_ERROR:
E_USER_WARNING:
E_USER_NOTICE:
用户在使用自定义错误触发的时候,会使用的错误代号(系统不会用到)

其它:
E_ALL
代表着所有错误,建议在开发过程中(开发环境)使用

<?php
$a=100;
$b=0;
if($b==0){
    trigger_error("除数不能为0"); //默认notice,会继续执行echo("\r");trigger_error("除数不能为0",E_USER_ERROR); //默认error,不会继续执行
}
echo "hello";
?>

Notice: 除数不能为0 in /usercode/file.php on line 5Fatal error: 除数不能为0 in /usercode/file.php on line 7

可以通过trigger_error的第二个参数进行严格限制

  1. 错误显示设置:
    方法一:
    PHP.ini PHP的配置文件:全局配置

Display_errors:是否显示错误
Error_reporting:显示什么级别的错误

方法二:
可以在运行PHP的脚本中设置,在脚本中显示定义的配置项级别比配置文件高(通常会用脚本配置)
Error_reporting():设置对应的错误显示级别
ini_set(“配置文件中的配置项,配置值”)
ini_set(“error_reporting”,E_ALL);
ini_set(“Display_errors”,1);

  1. 错误日志设置
    不直接让错误赤裸裸的展示给用户
    不友好
    不安全,错误会暴露网站更多信息(路径,文件名)
    这样需要保存到日志文件中 .log文件

  2. 自定义错误处理函数

<?php
function my_error($errno,$errstr,$errfile,$errline){
    if(!(error_reporting() & $errno)){
    return false;}switch ($errno) {
    case E_ERROR:// code...case E_USER_ERROR:echo "fetal error in file ".$errfile."on line ".$errline."<br/>";echo "error info :".$errstr;break;case E_WARNING:case E_USER_WARNING:echo "Warning in file ".$errfile." on line ".$errline."<br/>";echo "error info :".$errstr;break;case E_NOTICE:case E_USER_NOTICE:echo "Notice in file ".$errfile." on line ".$errline."<br/>";echo "error info :".$errstr;break;};};

一般情况下:

echo 100/0;

报错:


Warning: Division by zero in /usercode/file.php on line 28
INF

自定义后:

set_error_handler('my_error');
echo 100/0;
Warning in file /usercode/file.php on line 27<br/>error info :Division by zeroINF
  1. 字符串
    单引号‘’和双引号“”,一般用于比较短或者没有结构要求的字符串,如果有结构要求,或者内容超过一行,可以使用以下两种结构定义:
    nowdoc:没有单引号的单引号字符串
    heredoc:没有双引号的双引号字符串

$str=<<<‘边界符’
字符串内容
边界符

<?php//heredoc:没有双引号的双引号字符串
$str=<<<EODhello EOD;//nowdoc:没有单引号的单引号字符串$str2=<<<'EOD'hello EOD;var_dump($str,$str2);?>
string(9) " hello"
string(9) " hello"
  1. 字符串转义
    在计算机通用协议中,有一些特定方式定义的字母,系统会特定处理,通常这种方式都是使用反斜杠+字母(单词)的特性:
    \r\n换行
    \r代表回车(理论上是回到当前行的首位置)
    \n代表新的一行
    \t类似tab键,输出4个空格键
    $在PHP中使用$作为变量符号,因此需要特定识别

  2. 换行只以在双引号下有效"\r\n"