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);


浙公网安备 33010602011771号