PHP ( 01 基本语法 )
后台-插件-广告管理-内容页头部广告(手机) |
我是dream,我在新课培训学习网安方面的知识,下面是我的第12次上课的内容。
目录
01 WEB技术
什么是web
HTTP协议
URL地址
02 PHP概述
PHP是什么?
PHP发展
PHP受欢迎的原因
基于MVC模式的PHP框架
常用工具
PHP环境搭建
安装phpstudy
1. 启动Apache
2. 创建站点
3. 创建内容
安装vscode
1. 设置背景色
2.调整界面字体大小(Ctrl +/ Ctrl -)
3. 设置语言,安装中文插件
4.打开php所在的文件夹,开始编写代码
03 PHP基本语法
标记
输出语句
注释
标识符
关键字
04 数据与运算
1. 常量
常量定义
define方式定义
const方式定义
预定义常量
2. 变量
编辑
变量赋值
超级全局变量
表达式
3. 数据类型
a. 标量数据类型
bool类型
整型
浮点型
字符串类型
php中字符串拼接:
b. PHP特殊数据类型
c. 数据类型检测
数据类型检测函数
d. 数据类型转换
自动类型转换
强制类转换
其他数据类型自动转换为bool类型情况
4. 运算符
算数运算符:
赋值运算符
比较运算符
逻辑运算符
递增递减运算符
位运算符
位移运算
错误运算符
三元运算符
运算符的优先级:
软件推荐:
开发java后端应用:IDEA、vscode
开发前端(VUE、react):vscode
开发php: vscode、PhpStorm 2020.3.2 x64安装的版本推荐次新,不要选最新的,因为有很多bug没有发现,也不要选太老的,因为功能不全。
01 WEB技术
从程序的结构上来描述:分为两种
C/S架构:Client / Server(客户端/服务器)
指客户端/服务器端的交互
客户端软件是专门开发出来的,如QQ、lol、绝地求生,用户必须安装软件才能使用。
必须下载安装好客户端,并且服务器正在运行,才能够正常地使用。B/S架构:Browser / Server(浏览器/服务器)
指浏览器/服务器端的交互
B/S架构将浏览器作为客户端,用户只需要安装一个浏览器,就可以访问各种网站的服务,如百度搜索、4399(不需要下载客户端,只需要一个浏览器,服务器在运行,就可以使用
PHP运行于服务器端,既可以在C/S架构中维客户端提供服务器接口,也可以作为B/S架构来搭建动态网站。这里主要基于B/S架构进行讲解。
什么是web
含义:Web的本意是蜘蛛网,在计算机领域中称为网页。
构成:它是一个由很多互相链接的超文本文件组成的系统。
资源:系统中每人有用的文件都称为"资源",并由"通用资源标识符”(URI)进行定位,这些资源通过超文本传输协议(Hypertext Transfer Protocol,HTTP)传送给用户,用户单击链接即可获得资源。
HTTP协议
含义:浏览器与Web服务器之间的数据交互需要遵守一些规范
发布者:HTTP就是其中的一种规范,它是由W3C组织推出的
作用:专门用于定义浏览器与Web服务器之间数据交换的格式,HTTP在Web开发中有着大量的应用
URL地址
传输数据所使用的协议
协议://主机IP地址:端口/资源名称
协议://域名:端口/资源名称
例如: http://127.0.0.1:80/helloworld/index.php
由于80是Web服务器的默认端口号,因此可以省略URL中的":80"
127.0.0.1:指向本机的网卡地址,通俗的来讲就是访问自己本机!(回环)
80:端口,80为默认端口
目前市面上常用的编程语言
C++:运行速度快、编写程序代码量大、开发周期长 (2个月)
java:运行速度较快、编码程序代码量适中、开发周期较短(1个月)
python:运行速度慢、编码程序代码量非常少、开发周期较短(一周)
php:开发web程序特别方便(所有内容都写在页面)
02 PHP概述
PHP是什么?
PHP:Hypertext Preprocessor(超文本预处理器)是一种通用开源脚本语言。
它是全球网站使用最多的脚本语言之一,全球前100万的网站中,有超过70%的网站是使用PHP开发的,这就是我们为什么要学php的原因,我们希望看懂php的代码好挖漏洞。
PHP脚本在服务器上执行,默认文件扩展名是".php"
PHP发展
PHP有Rasmus Lerdorf雷斯莫斯·勒道夫开发
PHP受欢迎的原因
开源免费、面向对象、快捷性、跨平台性、支持多种数据库、PHP中可嵌入HTML,编辑简单、实用性强、程序开发快
到目前为止市面上仍然没有出现比PHP更简单易用的编程语言,就连全球著名的网站都在使用PHP
请看下表:
基于MVC模式的PHP框架
目前有很多流行的基于MVC模式的PHP框架,可以提高开发速度。例如,国外的有Zend FrameWork、Laravel、Yii、Symfony、Codelgniter等;
国内也有比较流行的框架,如ThinkPHP。
常用工具
Notepad++的特点是小巧,占用资源较少,非常适合初学者使用。大家先直接用它就可以了
NetBeans和Zend Studio功能强大(相当于python pycharm),但占用较多资源,使用较为复杂,适合专业的开发人员使用。
PHP环境搭建
数据库: mysql、oracle、SQLserver
Web服务器:Apache、Nginx
环境:PHP7.x环境
使用PHP需要先安装环境,安装环境比较麻烦,需要安装Web服务、PHP应用服务器、MySQL管理系统。
Web服务:apache 和 nginx PHP:多版本 MySQL:多版本
因为多环境、多版本、多系统,集成包就出现了。集成包(phpStudy、Xampp、宝塔面板、wdcp面板),安装很方便。
这里课堂上推荐使用phpStudy
只要在您的web自录中创建.php文件即可,服务器将自动为您解析这些文件。
不需要编译任何软件,或安装额外的工具。
由于PHP是免费的,大多数的Web主机都提供对PHP的支持。
安装phpstudy
1. 启动Apache
2. 创建站点
在浏览器中输入http:// 127.0.0.1,会提示站点创建成功。
如果不成功,则回到小皮,找到小皮所在的物理地址
然后再浏览器上输入:http://127.0.0.1/index.html ,就可以创建站点了。
3. 创建内容
phpstudy的网页内容都在www的目录下,所以,现在www的目录下创建一个文件夹“studyphp”(名字可以随意取),再在刚创建好的文件夹“studyphp”下创建以“php”为拓展名的文件“index.php”。
用右键选择“记事本”的打开方式,编写文件内容并保存
访问自己创建的网站http://127.0.0.1/studyphp/index.php
由于记事本写代码比较麻烦,于是继续安装软件
安装vscode
1. 设置背景色
2.调整界面字体大小(Ctrl +/ Ctrl -)
3. 设置语言,安装中文插件
安装好后自动跳出下图谭庄,单击蓝色框框,改变语言,自动重启
文字转换成功
4.打开php所在的文件夹,开始编写代码
勾选信任
刚才用记事本写的代码在vscode里面,语法和内容有了很好的区分
并且在编写代码时,忘记了单词,会自动提示补全
03 PHP基本语法
标记
由于PHP是嵌入式脚本语言,它在实际开发中经常会与HTML内容混编在一起,所以为了区分HTML与PHP代码,需要使用标记对PHP代码进行标识
当解析一个文件时,PHP会寻找起始和结束标记,也就是告诉PHP开始和停止解析二者之间的代码。此种解析方式使得PHP可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被PHP解析器忽略。
标记类型 | 开始标记 | 结束标记 | 开启项 |
标准标记 | <?php | ?> | 无 |
短标记 | <? | ?> | short_open_tag |
ASP式标记 | <% | %> | asp_tags |
Script标记 | 无 |
示例
ctrl + s 保存所写的代码
输出语句
使用很简单,它不仅可以输出各种类型的数据,还可以在学习和开发中进行简单的调试。
常用输出语句
echo:可将紧跟其后的一个或多个字符串、表达式、变量和常量的值输出到页面中,多个数据之间使用逗号","分隔
print:与echo的用法相同,唯一的区别是print只能输出一个值
print_r():PHP的内置函数,它可输出任意类型的数据,如字符串、数组等
var_dump():不仅可以打印一个或多个任意类型的数据,还可以获取数据的类型和元素个数
示例:
ps:为了排版好看,我多加了一些标点符号。
只要保证语法部分是英文格式就好,内容可以是中文。
编辑完成后记得按Ctrl+S键,保存后,才有内容。
注释
注释:在PHP开发中,为了便于对代码的阅读和维护,可以使用注释来进行解释和说明。它在程序解析时会被PHP解释器忽略。
分类 | 风格 | 注释使用示例 |
单行注释 | C++风格的单行注释 “//” | //输出一句话 |
Shell脚本语言风格的注释 “#” | # 输出一句话 | |
多行注释 | C风格的多行注释 “/……/” | /* echo 'Hello, PHP'; echo 100 + 200; */ |
标识符
标识符可以认为就是名字(变量的名字、常量的名字、函数的名字、类型的名字……)
标识符:PHP程序开发中,经常需要自定义一些符号来标记一些名称,如变量名、函数名、类名等,这些符号被称为标识符。
标识符的定义需要遵循一定的规则,具体如下:
1、标识符只能由【字母(A-Z、a-z)、数字(0-9)、下划线(_)】组成,且不能包含空格 AK47、M416、M_416、M-416(这个不行,只能由_下划线的符号)
2、标识符只能以字母或下划线开头的任意长度的字符组成(不包含数字)AK_47、_m416、 98K(这个不行,数字不能开头)
3、标识符用做变量名时,区分大小写 $a,$A
4、如果标识符由多个单词组成,那么应使用下划线进行分隔(例如:user_name)student_name
5、合法标识符:wangan、wangan88、_wangan、username、password等。
6、非法标识符:66wangan、wang an、123、@wangan等。
关键字
关键字:是编程语言里事先定义好并赋予特殊含义的单词,也称作保留字。和其他语言一样,PHP中保留了许多关键字,例如class、public等。
关键字:这些东西不能用作标识符
04 数据与运算
1. 常量
常量就是在脚本运行过程中值始终不变的量。是一旦被定义就不能被修改或重新定义。
比如数学中的圆周率π就是一个常量,其值就是固定且不能被改变的。
常量遵循标识符的命名规则,默认大小写敏感,习惯上常量名称总是使用大写字母表示。
常量定义
在内存条中开辟一个空间,存放数据
常量定义方式有两种
define函数
const关键字
define方式定义
首个参数定义常量的名称
第二个参数定义常量的值
可选的第三个参数规定常量名是否对大小写不敏感。默认是false
如果设置为true,该常量则大小写不敏感。默认是大小写敏感的。
const方式定义
预定义常量
2. 变量
概念:变量是用于存储信息的“容器”;
组成:在PHP中,变量是由$符号和变量名组成的。
规则:变量名的命名规则与标识符相同。
举例:如$number、$_it为合法的变量名,而$123、$*math为非法变量名。
变量赋值
PHP、javascript 弱类型语言
java、c#
由于PHP是一种弱语言,变量不需要事先声明,就可以直接进行赋值使用。
实现方式:一种是默认的传值赋值,另一种是引用赋值。
传值赋值:变量默认总是传值赋值,将"="右边的数据赋值为左边的变量。
引用赋值:所谓引用赋值就是在要赋值的变量前添加“&“符号。
两种实现方式的区别:传值赋值方式当一个变量值发生改变时,不影响另一个变量;而引用赋值的方式,另一个变量会随之变化。
示例:
超级全局变量
PHP中预定义了几个超级全局变量(superglobals),这意味着它们在一个脚本的全部作用域中都可用。你不需要特别说明,就可以在函数及类中使用。
PHP超级全局变量列表
预定义的 $_GET变量用于收集来自 method="get"的表单中的值。
从带有GET方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。预定义的$_POST变量用于收集来自method="post"的表单中的值。
从带有POST方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。预定义的 $REQUEST 变量包含了 $GET、$POST和 $COOKIE的内容。
$_REQUEST变量可用来收集通过GET和POST方法发送的表单数据也许也碰到过这样的需求:传递某人参数时,如果表单POST来,就用$POST的值,如果没有,就获取$GET里的值。很多人就会想到$REQUEST,因为当$GET和$POST同时有同名的参数时,$REQUEST里的就是$POST,满足了$POST优先的需求(这个谁优先其实是在php.ini里配置的,默认POST是比GET优先的。
为什么__FILE__被称为常量而 $_GET称为变量呢?因为.__FILE__代表了当前文件名是不会变化的
$_GET请求随着请求的不同它的值是不一样的。
表达式
在PHP中,任何有值的内容都可以理解为表达式。
3. 数据类型
PHP中支持3类数据类型
标量数据类型
复合数据类型
特殊数据类型
在PHP中所讲的数据类型指的是变量所保存的数据本身。
a. 标量数据类型
bool类型
布尔型是PHP中较常用的数据类型之一,通常用于逻辑判断。
表示事物的"真“和"假",并且不区分大小写。
输出结果为:
整型
整型可以由进制、进制和十六进制数指定,用来表示整数
1.在它前面加上“-"符号,可以表示负数。
2.八进制数使用0~7表示,前缀为0
3.十六进制数使用0~9与A~F表示,以0x为前缀
浮点型
浮点数是程序中表示小数的一种方法,或是指数形式。
通常使用标准格式和科学计数法格式表示。
字符串类型
概念:字符串是由连续的字母、数字或字符组成的字符序列。
表示方式:分别为单引号、双引号、heredoc语法结构和nowdoc语法结构。
注意:双引号里面可以解析变量单引号输出学符串,看下面例子:
单引号跟双引号的区别
php中字符串拼接:
PHP中可以使用字符串连接符 . 来拼接字符串,它可以把两个或两个以上的字符串拼接成一个新的字符串。
学符串拼接有两种形式,分别是直接使用学符串连接符.和赋值运算符.=。具体语法格式如下:
以上两种表达输出内容都相同。一个是直接引用其他变量,一个是字符串的拼接。
b. PHP特殊数据类型
NULL 值表示变量没有值。NULL是数据类型为 NULL的值。
NULL值指明一个变量是否为空值。同样可用于数据空值和NULL值的区别。
可以通过设置变量值为NULL来清空变量数据:
在下列情况下一人变量被认为是NULL:
1.被赋值为NULL。
2.尚未被赋值。
3.被unset()。
c. 数据类型检测
PHP中变量的数据类型通常不是开发人员设定的,而是根据该变量使用的上下文在运行时决定的。
数据类型检测函数
PHP中提供了许多检测数据类型的函数,但大致可以分为两种:gettype()函数和is*()类函数括号里的参数为待要检测的值。
is* ()如果检测的值符合检测的数据类型,则返回true,否则返回false。
gettype()函数
is_ ()类函数
d. 数据类型转换
时机:在PHP中,对两个变量进行操作时,若其数据类型不相同,则需要对其进行数据类型转换。
分类:通常情况下,数据类型转换分为自动类型转换和强制类型转换。
自动类型转换
指的是当运算需要或与期望的结果类型不匹配时,PHP将自动进行类型转换,无需开发人员做任何操作。
分类:最常见的有3种,分别为转换成布尔型、转换成整型和转换成字符串型。
强制类转换
就是在编程时手动转换数据类型,在要转换的数据或变量之前加上“(目标类型)”即可。
其他数据类型自动转换为bool类型情况
这个自动转换我们不需要去记忆,平时在写代码的过程中尽量去避免这些问题
下面的情况是布尔值判断时自动进行类型转换
1.整形的0为假 其他的整形为真
2.浮点0.0为假 小数点后只要有一位非0的值结果就为真
“空学符串为假” 只要里面有一个空格都为真 比如'a'为真,如果是空格字符串那么' '也为真
字符串的0也看作为假 其他的都为真
空数组也将其看作为假 只要里面有一个值都为真
空也为假(null)
未声明成功的资源也为假
4. 运算符
运算符,专门用于告诉程序执行特定运算或逻辑操作的符号。根据运算符的作用,可以将PHP语言中常见的运算符分为9类。
算数运算符:
是用来处理加减乘除运算的符号
也是最简单和最常用的运算符号
+ - * /
后两个纯属娱乐,不需要掌握。
赋值运算符
赋值运算符
1. 是一个二元运算符,即它有两个操作数
2. 它将运算符右边的值 赋给左边的变量
①将5赋值给变量$c
②再把变量$c的值赋值给变量$b
③把变量$b的值赋值变量$a,表达式赋值完成
比较运算符
是用来对两个变量或表达式进行比较
其结果是布尔类型的true或false
大于>、小于<
用注释掉的方法会什么都不显示,为了显示是否成立,所以用var_dump这个语法。
大于或等于>=
等于==
恒等于===
不等于!=
逻辑运算符
是在程序开发中用于逻辑判断的符号
真返回值类型是布尔类型
1. and和&&
2.or 或 ||
3. xor异或
4. !非
递增递减运算符
也称作自增自减运算符
可被看作是一种特定形式的复合赋值运算符
"++"或"--"放在操作数的前面,则先进行自增或自减运算,再进行其他运算。
"++"或"--"放在操作数的后面,则先进行其他运算,再进行自增或自减运算。
位运算符
是针对二进制数的每一位进行运算的符号
它专门针对数学0和1进行操作
按位与
1 10 11 100 101 110 -- 6
1 10 11 100 101 110 111 1000 1001 1010 1011 -- 11
0: false
1: true
按位或
按位非
按位异或
位移运算
左移:
00001011
00010110
右移:
00001011
00000101
错误运算符
PHP的错误控制运算符使用@符号来表示,把它放在一个PHP表达式之前,将忽略该表达式可能产生的任何错误信息。如:echo@(4/0);
三元运算符
对 expr1求值为 TRUE时的值为 expr2,在 expr1求值为 FALSE时的值为 expr3。
自PHP5.3起,可以省略三元运算符中间那部分。表达式expr1?:expr3在expr1求值为TRUE时返回
expr1, 否则返回 expr3。
PHP_EOL 是一个换行符,兼容更大平台。
运算符的优先级:
指的是在表达式中各人运算符是有参与运算的先后顺序的
例如:先乘除,后加减
同一行的运算符具有相同的优先级
左结合方向表示同级运算符的执行顺序为从左到右
右结合方向则表示执行顺序为从右到左
补充:圆括号()优先级别最高。例如,4+3*2的输出结果为10,(4+3)*2的输出结果为14
算术运算符 ( 先乘除后加减 ) > 比较运算符 > 逻辑运算符 > 赋值运算符
运算顺序符合数学规律
感谢老默老师,课程同步在享学微信公众号上,关注公众号,自动回复获取代码笔记资料。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |