(小白)PHP基础学习003 20201003

(小白)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 5

Fatal 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=<<<EOD
    hello
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"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值