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++的特点是小巧,占用资源较少,非常适合初学者使用。大家先直接用它就可以了
NetBeansZend 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内容混编在一起,所以为了区分HTMLPHP代码,需要使用标记对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

 算术运算符 ( 先乘除后加减 ) > 比较运算符 > 逻辑运算符 > 赋值运算符

运算顺序符合数学规律

感谢老默老师,课程同步在享学微信公众号上,关注公众号,自动回复获取代码笔记资料。

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值