PHP基础-语法变量
什么是 PHP?
PHP(Hypertext Preprocessor)是一种广泛使用的 开源服务器端脚本语言,专为Web 开发设计。
-
最初是 Personal Home Page 的缩写,后来演变为递归缩写:PHP: Hypertext Preprocessor
-
可以嵌入 HTML 中执行,生成动态网页内容。
-
代码在服务器上运行,返回的是纯 HTML 给用户浏览器。
PHP 最核心的用途是开发服务器端的 Web 应用程序,即用户访问网站时,在服务器上处理业务逻辑、数据库、接口等。
PHP 的特点
特性 | 说明 |
---|---|
脚本语言 | 不需要编译,解释执行,开发效率高 |
嵌入 HTML | 可以直接嵌在 HTML 页面中使用 |
跨平台 | 支持 Windows、Linux、macOS 等平台 |
与数据库结合紧密 | 内置支持 MySQL、PostgreSQL、SQLite 等数据库 |
支持面向对象 | 从 PHP5 开始引入完善的 OOP 特性 |
有丰富的生态 | 拥有 Laravel、Symfony、ThinkPHP 等众多框架 |
社区庞大 | 海量教程、资源,问题解决方便 |
环境准备
学习环境我们这边就选择直接使用Kali Linux 自带的环境进行学习就够用了。Kali Linux镜像下载地址:
夸克网盘「Kali Linux 」 链接:夸克网盘分享
自行创建并开启Kali Linux 虚拟机后,切换到管理员权限,命令如下:
sudo su
接着开启Kali 中自带的Apache服务:
systemctl start apache2.service #启动apache服务
systemctl enable apache2.service #apache服务开机自启动(可选)
在开启服务后,我们可以使用如下命令查看服务是否正常运行:
systemctl status apache2.service
cd /var/www/html/
命令输出上述内容时表示服务正常运行。这个时候我们就可以进入网站根目录,该目录就是我们学习PHP的工作目录。
php语法
基础 PHP 语法
PHP 脚本以 <?php
开头,以 ?>
结尾:
<?php // 此处是 PHP 代码 ?>
<?php
// 此处是 PHP 代码
?>
PHP 脚本可放置于文档中的任何位置,文件扩展名是 ".php"。PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。(注意: html js css可以写在php文件里运行,但php不能写在html js css文件里运行。)
接下来我们就来写一张PHP页面(在学习PHP的过程中不可避免地需要用到一些Html、CSS或者JS的知识,这些内容笔者在前面的文章已经有进行一个比较详细的描述,大致过一遍即可。)
在Kali中我们使用vim命令创建我们的第一个.php程序。
vim hello.php
并将如下代码敲入文件中,值得注意的是PHP 语句以分号结尾(;),建议学习过程中养成良好的编码规范。
<!DOCTYPE html>
<html>
<body>
<h1>我的第一张 PHP 页面</h1>
<?php
echo "Hello maoshu!";
?>
</body>
</html>
接着使用ifconfig
命令查看当前kali Linux 的IP地址。
接着在浏览器中进行访问即可;路径为http://IP地址/{文件路径}/文件名。(如果是在Kali Linux中进行访问,则IP地址使用127.0.0.1即可)
输出方法:echo 和 print
不同点:
-
echo - 能够输出一个以上的字符串,英文逗号隔开
-
print - 只能输出一个字符串,并始终返回 1
-
echo 比 print 稍快,并且开销低
<!DOCTYPE html>
<html>
<body>
<h2>echo OR print</h2>
<?phpecho "<h2>风铃123!</h2>";echo "Hello world!<br>";echo "风铃", " string", 1, " 2 "; #使用逗号“,”作为分隔符
?>
</body>
</html>
print的特点
<!DOCTYPE html>
<html>
<body>
<h2>echo OR print</h2>
<?phpecho print "<h2>风铃123!</h2>";
?>
</body>
</html
第一行是 <h2>风铃123!</h2>
被解释成了标题。
第二个是 1
—— 这是因为 print
返回了 1,然后 echo
把它输出了。
注释
注释不会被作为程序来读取和执行。它唯一的作用是供代码编辑者阅读(让别人阅读明白,提醒自己做过什么,特别是一些函数方法的用途等)
<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
随意换行没问题
echo '风铃';
*/
?>
变量
变量是存储信息的容器,有点类似初中数学里的代数 x=1,y=2
$a=5;
$_a = 5;
$b=6;
$c=$a+$b;
echo $c;
=号并不是真实的等号,而是叫赋值
变量命名规则
-
变量以 $ 符号开头,其后是变量的名称
-
变量名称必须以字母或下划线开头
-
变量名称不能以数字开头,不能有空格
-
变量名称只能包含字母 数字 字符和 下划线(A-z、0-9 以及 _)
-
变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
注释:PHP 变量名称对大小写敏感!
推荐的几种命名方法:
-
下划线命名法
$first_name = 'zhang';
-
小驼峰命名法
$firstName = 'zhang';
-
大驼峰命名法
$FirstName = 'zhang';
$txt="Hello world!";
$a=5;
$b=8.5;
不必告知 PHP 变量的数据类型,php会根据它的值,自动把变量转换为正确的数据类型,变量也有作用域之分,等到后面函数的时候再说。
空白符
<!DOCTYPE html>
<html>
<body>
<h2>Hello PHP</h2>
<?php
echo 'wolven
你在干什么
?
';
?>
</body>
</html>
浏览器默认不会渲染换行符 \n
,所以实际输出为:
Hello PHP
wolven 你在干什么 ?
如果你想要在页面中保留换行格式,用 <br>
标签手动换行:
<!DOCTYPE html>
<html>
<body>
<h2>Hello PHP</h2>
<?php
echo 'wolven
<br>
你在干什么
<br>
?
<br>
';
?>
</body>
</html>
大小写敏感
所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感(这可以作为我们在渗透时绕过一些程序检测的依据) 但是所有变量都对大小写敏感,看如下例子:
ECHO "Hello Wolven!<br>";
echo "Hello Wolven!<br>";
EcHo "Hello Wolven!<br>";
PRint "Hello Wolven!<br>";
输出:
可以看到不关echo和print大小写如何变化,都能够成功输出后面的字符串。
$color="red";
echo "My car is " . $color . "<br>";
echo "My house is " . $COLOR . "<br>";
可以看到变量$COLOR
并不会输出内容,因为在PHP解释器眼中$color
和$COLOR
是不一样的变量。
命令行的使用
PHP语言可以像python一样在命令行里运行php代码
例子:可以获取用户输入的内容
$input = readline("请输入内容:");
echo "您输入的内容是: " . $input;
echo "请输入内容:";
$input = fgets(STDIN);
echo "您输入的内容是: " . $input;
数据类型
字符串、整数、浮点数、逻辑(布尔型)、数组、NULL、资源类型
用var_dump() 会返回变量的数据类型和值,一般用于开发调试时使用,只获取数据类型 echo gettype($a);
字符串
字符串是字符序列,比如 "Hello world!",字符串可以是引号内的任何文本,可以使用单引号或双引号。
<!DOCTYPE html>
<html>
<body>
<h2>Hello php</h2>
<?php
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
var_dump($x);
?>
</body>
</html>
单引号和双引号的区别
双引号:会解析变量。
单引号:不会解析变量,变量会被当作普通字符串输出。
<?php
$name = "风铃";
echo "你好,$name\n"; // 输出:你好,风铃(变量被解析)
echo '你好,$name\n'; // 输出:你好,$name\n(纯文本)
?>
整数
和数学里的整数有些区别
-
整数必须有至少一个数字(0-9)
-
整数不能包含逗号或空格
-
整数不能有小数点
-
整数正负均可
-
可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
$x = 5985;
var_dump($x);
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
浮点数
浮点数是有小数点或指数形式的数字
$x = 10.365;
var_dump($x);
echo "<br>";
$x = 2.4e3;
var_dump($x);
echo "<br>";
$x = 8E-5;
var_dump($x);
逻辑(布尔值)
$x=true;
$y=false;
数组
在一个变量中存储多个值,分为一维数组和多维数组,后面会针对数组专门写一篇内容。
$cars=array("Volvo","BMW","SAAB");
$_cars=["Volvo","BMW","SAAB"];
var_dump($cars);
var_dump($_cars);
Null
特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值 注意:可以通过设置变量值为 NULL 来清空变量数据
$x="Hello world!";
var_dump($x);
$x=null;
var_dump($x);
结束语
总结而言,掌握 PHP 的基础语法是迈入后端开发的重要一步。希望本文能为你的学习之路打下坚实的基础。后续我们将继续深入探讨 PHP 的函数、面向对象、数据库操作等内容,敬请期待!