Php基础学习

一、php基本语法

  1、php语法规则

    ①、php文件必须通过域名访问

    ②、php语句后面必须有;

    ③、php变量名必须区分大小写,其他函数、方法名、类名都不区分大小写

  2、php标记

    ① 标准格式:

      <?php....?>

    ②js格式

1 <script language="php">
2     echo date('Y-m-d H:i:s');
3 </script/>

    ③短格式

      <?...?>开启短格式,需要php.ini中设置short_open_tag = On; 

    ④asp格式

     <%%>开启asp格式,需要php.ini中设置asp_tags = On; 

  3、注释

    。。。。。
二、变量和操作

  1、概念:变量是内存中用于临时存储数据的一种空间,而变量名称是指向内存的引用,相当于门牌号

  2、声明

    $变量名=值

    变量必须以$开头,变量名称只能保护字母、数字、下划线、只能以字母下划线开头

  3、变量赋值与删除变量

    $v = 1;   unset($v);

    特殊:

      ①、通过一个变量访问另一个变量

      $v='age';

      $age=20;

      echo $$v;    // $v解析age  $$v  解析为$age 输出20;  有点反射的意思

      ②通过一个变量创建另外一个变量

      $v = 'age';    $$v = 20;
  4、预定义变量

    PHP预先定义的一组变量,这些变量有不同的需求

    $_GET        由于接收前台表单使用get方式提交的数据 

    $_POST        由于接收前台表单使用POST方式提交的数据

    $_REQUEST     用于接收签订表单get或者post方式提交的数据 

    $_SERVER

    $_COOKIE

    $_SESSION

    $_FILES

    $GLOBAL

三、php执行的内存原理

  <?php 

    $v1 = 10;

    $v2 = $v1;

    $v2 = 20;

    echo $v1;

  ①、编译阶段

    1/1、语法检查、词法检查、代码优化,能过会再代码段,生成机器指令。

  ②、执行阶段

    2/1、执行代码段中的代码

    2/2、执行$v1 = 10, 会在栈区开辟一个空间存储变量$v1,将数据保存到数据段的全局区,再讲数据的物理地址赋值给栈区的变量$v1。

    2/3、执行$v2=$v1;再栈区开辟一个空间存储变量$v2,读取变量$v1的值,读取出来保存在数据段全局区,讲这个保存的地址赋值栈区中变量$v2

    2/3、执行$v2 =20,找到栈区的$v2,并根据地址找到数据段全局对应的空间,讲数据覆盖进来。
    2/4、执行echo $v1; 找到栈区中的变量$v1, 根据地址=》值读取出来。并将数据20放到输出缓存中

    2/5、程序执行结束,输出缓存中的数据自动返回给apache,apache返回给浏览器

    同时会栈区中的内容清空,同时数据段中的数据也会被系统销毁,代码段数据也会销毁  

  3、php嵌入到html的执行过程

    当php功能模块在处理一个php文件,他只关心php的代码,html代码到缓存中,将php代码数据弄到缓存中

  4、php中变量的传递方式

    ①赋值传值

      将一个变量为另外一个变量赋值,传递的是变量a的值

    ②引用传值

四、常量

  define('常量名称', 值)

  const 常量名=值

  1、魔术常量

    php中定义了一组魔术常量

    __FILE__     用于获取当前的文件名,从根目录算起

    __DIR__      根目录/路径

    __LINE__     

      __FUNCTION__    

五、php文件

  配置php命令可以运行php文件,像脚本一样运行

  php -m查询所有php的模块

  php --ini

  php -f 文件名直接运行文件

  php -r 'echo 2333'运行php代码

六、标签语法

  1、php文件可以html代码包含php代码,使用标签语法进行模板的渲染数据

    for标签

<html>
    <table>
        <thead>

        </thead>

        <?php for($i=0;$i<4;$i++){?>
            <tr>
                <td><?php echo $i?></td>
            </tr>
        <?php}?>

    </table>
</html>

  2、if标签

  <?php if()?><?php endif?>

  3、whiel标签语法

  <?php while(){?>

  <?php }?>

七、文件包含

  文件包含html文件或者php文件

  1、require(文件名)  require_noce(文件名)

  2、include(文件名)  include_once(文件名)

  php文件引入一个html文件,html引用其他文件出现路径问题,使用绝对路径(域名)就可以解决,/ww/linux服务器的绝对路径来解决html引用其他文件的问题是不行的,因为html实在浏览器进行解析

  php include 'public/template.html'  php include 'www/wwwroot/'是可以的,因为php代码是在服务器端进行运行的

  区别:include引入文件不存在,报错,程序依然执行,但是require不会执行

八、错误处理

  1、编译错误

    由于书写错误

  2、执行错误

    编译通过,执行阶段发生错误,根据错误的等级,来决定是否中断程序执行

  3、逻辑错误

  4、每一种错误都有一个标识的常量

  5、错误分类:

     系统错误E_ERROR  1,一旦发生程序停止执行

      E_WRRING 警告错误,不会中断程序

      E_NOTICE 提示错误,不会中断程序

      E_PARSE 编译错误

       自定义错误

      E_USER_WRRING 

      trigger_error(msg, type); 生成错误的日志(nigx或者apache日志中)

function listArr($arr){
        if(!is_array($arr)){
            trigger_error('参数错误', E_USER_ERROR);
        }
        for ($i = 0;$i  < count($arr);$i++){
            echo $arr[$i] . '<br>';
        }
    }


    $arr = 1;
    listArr($arr);

  5、错误的控制设置

    php错误控制可以在php.ini中进行。我们可以控制错误的显示,还可以显示哪一类错误

      display_errors=on 显示错误

      error_reporting = E_ALL;  显示全部错误  /E_NOTICE

      ini_set("error_repoting", E_NOTICE | E_WARNGIN)   E_ALL & ~E_NOTICE

    控制错误日志记录的位置,是否记录错误

    log_errors = On

     如果没有设置error_log默认是记录到apache/nginx错误日志中log\error.log

     error_log=syslog 会记录在操作系统中

     error_log=文件名记录到指定的位置

九、php文件上传

  $_GET $_POST $_REQUEST 

  $_FILES用于接收php上传的文件,是一个array

  $_FILES  array(

    'myfile'=>array(

      'name'=>'',

      'type'=>'imgage/jpeg',

      'tmp_name'=>'',  //上传到服务器的临时文件,临时文件在程序执行完进行删除

      'error'=>0,  //UPLOAD_ERR_FORM_SIZE  2上传文件大小超过html表单中MAX_FILE_SIZE选项的值,UPLOAD_ERR_PARTAL  3文件只有部分被上传

      'size'=>3332,

    )

  )

  文件上传的原理:临时文件在程序执行的时候,将临时文件移到的其他位置move_uploaded_file(tmp,dest);

  

  上传配置

    上传限制上传大小  upload_max_filesize = 2M

    上传的临时文件设置,php.ini  upload_tmp_dir = d:/tmp

    设置一次可以上传多少个文件max_file_uploads = 20;

    设置一次提交能上传多大的数据post_max_size = 8M    一定比上传限制文件大小更大

    设置php模块处理文件的接收时间max_input_time

    设置一次php文件所能占用的大小memory_limit = 128M

  前台代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <form action="upload.php" method="post" enctype="multipart/form-data">
 9         <input type="file" name="myfile">
10         <input type="submit" value="提交">
11     </form>
12 
13 </body>
14 </html>

  后台代码

 

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: admin
 5  * Date: 2020/2/13
 6  * Time: 9:31
 7  */
 8 
 9 $mime = ['image/jpeg','image/jpg','image/png'];
10 
11 if(!in_array($_FILES['myfile']['type'], $mime)){
12     exit("文件不合法");
13 }
14 
15 $tmp = $_FILES['myfile']['tmp_name'];
16 
17 $fileName = time();
18 
19 //获取文件的扩展名
20 $ext = pathinfo($_FILES['myfile']['name'], PATHINFO_EXTENSION);
21 
22 $basename = $fileName . '.' . $ext;
23 
24 $path = 'd:/uploads';
25 
26 $dest = $path . '/' . $basename;
27 
28 move_uploaded_file($tmp, $dest);

 十、命名空间

  参考:https://www.runoob.com/php/php-namespace.html

十一、php操作http响应头

   1、设置浏览器的显示编码

    header('Content-type:text/html;charset=utf8');

    content-type 设置相应的数据的格式

    charset  用于设置响应的数据中数据的编码

     通过协议头告诉浏览器,

      1、告诉浏览器是一个程序数

        header('Content-type:application/octet-stream');

      2、发送你的数据作为附件下载

        header('Content-disposition:attachment;filename=game.jpg');

      3、当前发送的文件内容并发送给客户端

        $content = file_get_contents('233.jpg');

        echo $content;

      

    2、用于跳转

      header('Location:url');

十二、网络数据

  Curl应用,开启 exension=php_curul.dll,如果还是无法开启,将php目录中的三个Libeay32.dll,libssh.dll,ssleay32.dll,php5ts.dll;文件复制到apache中bin目录中

   1、初始化资源

    curl_init();返回一个资源

    2、设置URL和相应的选项

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
  $ch 是curl_init返回的资源,第二个参数参数常量形式,
   3、
// 抓取URL并把它传递给浏览器
    curl_exec($ch);
  4、//关闭cURL资源,并且释放系统资源
  curl_close($ch);

十三、session垃圾回收机制
  

2、当禁用cookie,怎么使用session
  设置session.user_only_cookies = 0,默认是1,设置不仅仅使用cookie实现session
  同时开启session.use_trans_sid = 1;
  
  php在启动过程中会检测到session.use_strans_sid=1,session机制会自动检测当前php文件中是否有a链接,在url后面加入PHPSESSION=当前sessionid的值
3、当项目很大,产生很多session文件,可以采用分目录存储session文件,sesssion.save_path = "1;e:/tmp"表示在e:/tmp目录下需要创建a-z,0-9为文件夹的文件夹36个

十四、php与绘画
  1、开启extension=php_gd2.dll;
  2、创建画布
    $img = imagecreatetruecolor(w,h);
  3、分配颜色
    imagecolorallocate($img, 255,0,0);//只是创建了颜色,没有应用

    
 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: admin
 5  * Date: 2020/2/14
 6  * Time: 10:14
 7  */
 8 
 9 $img = imagecreatetruecolor(400,200);
10 $bg = imagecolorallocate($img, 255,0,0);
11 //需要填充颜色
12 imagefill($img, 0,0,$bg);
13 
14 //绘制矩形,$border填充边框的颜色
15 $border = imagecolorallocate($img, 0, 255,0);
16 imagerectangle($img, 50,20,350,180, $border);
17 
18 //绘制直线
19 imageline($img, 40,30,350,180, $border);
20 
21 //绘制文字
22 $color = imagecolorallocate($img, 240,240, 240);
23 $string = 'ITCASE';
24 imagestring($img, 5,150, 40, $string, $color);
25 
26 header("content-type:image/jpeg");
27 //imagejpeg,参数二,默认输出到浏览器
28 imagejpeg($img);

 


posted @ 2019-12-28 12:18  WithSuper  阅读(228)  评论(0)    收藏  举报