PHP入门这篇文章主要从零开始学习PHP,首先了解了什么是PHP以及用PHP实现最基本的Hello World。后续学习
1.1 初识PHP
什么是PHP
- 是一种编程语言,也是一个安装程序 (运行环境)
- 用于服务器端动态Web编程
- 用于服务器后台API接口开发
- 是一种解释型脚本编程语言
PHP能做什么
- 服务端脚本
- 命令行脚本
- 编写桌面应用程序 (用得不多)
优势
- 简单易学
- 实用性强
- 跨平台
- 函数库(类库) 丰富
1.2 PHP代码的两种运行方式 Hello,PHP World!
PHP运行环境
- 电脑,操作系统 (Windows,MacOS,Linux)
- PHP程序
- 数据库 (MySQL,PostgreSQL)
- Web容器 (Nginx,Apache)
新手去一个一个安装和配置的话会比较麻烦,php有集成化的运行环境
集成化的运行环境
WAMP(Windows中的集成环境) AppServ
MAMP(Mac中的集成环境) phpStudy
LAMP(Linux中的集成环境) phpnow ... ...
PHP编程
//php代码的开始标记
<?php
//中间写真正的php程序在中间
//php代码的结束标记
?>
用php写第一个Hello World代码,创建一个文件名为:hello.php
<?php
//输出字符 并且在最后加上换行符
echo "Hello,PHP World!" . PHP_EOL;
?>
解释: 在上方代码中的 “ . ” 表示 连接符,PHP中有许多的预定义常量,像这里的PHP_EOL代表的是 兼容各个平台的换行符,因为每个操作系统的换行符不同,这样写让代码有更好的兼容性。
第一种方式运行php代码
在命令行中运行:
php 路径/hello.php
第二种方式运行php代码
在Web容器中运行,这边只能打个比方,如果是在Windows环境中,可以在WAMP集成环境中,将我们写的.php代码放入Web服务器的根目录中,在Web服务器运行后,在配置的路径后加上.php代码的名字就可以查看页面,例:
127.0.0.1:8888/hello.php
同样可以使用HTML标记语法来写php文件:
//标识这是一个html文档
<!DOCTYPE html>
<html>
<head>
<title>第一行PHP代码</title>
</head>
<body>
<?php echo "Hello,PHP World!;" ?>
</body>
</html>
1.3 PHP动态Web开发
基本流程
- 浏览器或postman等向Web容器发送请求 (HTTP GET/POST)
- Web容器向php程序求助
- php脚本解释执行:连接数据库,操作数据库,断开连接(释放资源)
- 处理完数据后返回给Web容器
- Web容器收到数据后返回HTML文档
PHP操作MySQL常见的两种方法
1. MySQLi 扩展
MySQL增强版扩展,专用于与MySQL数据库的操作。
2.PDO (PHP Data Object) 兼容性更好
PHP数据对象,用在与十多种不同的主流数据库的操作。
MySQLi 代码演示
下面是一个用MySQLi操作数据库的例子:
<?php
echo "Mysqli操作数据库演示 <br/>"
//【连接数据库基本信息】
$db_host = "127.0.0.1"; //数据库服务器的ip地址
$db_user = "root"; //数据库的用户名
$db_password = "root"; //数据库的密码
$db_name = "php_mysql"; //数据库的名字
$db_port = 8889; //数据库的端口
//【mysqli连接数据库】
$mysqli = new mysqli($db_host,$db_user,$db_password,$db_name,$db_port);
//如果连接不成功的代码处理
if($mysqli->connect_error) {
echo "数据库连接失败";
echo "<br/>";
echo "错误编号: ".$mysqli->connect_errno;
echo "<br/>";
echo "错误描述: ".$mysqli->connect_error;
exit(); //退出脚本
}
//数据库连接成功
echo "数据库连接成功<br/>";
//【操作数据库】
//假设:查询php_mysql数据库中的数据表tb_data
//使用prepared statement预编译方式查询,虽然复杂但是安全
$query = "SELECT * FROM tb_data ORDER BY id ASC";
$stmt = $mysqli->prepare($query);
$stmt->execute();
$result = $stmt->get_result();
$query_rows = $result->fetch_all(MYSQLI_ASSOC);
//断开数据库连接
$mysqli->close();
?>
这样就可以拿到数据了,拿到的数据我们同样可以用HTML标记语法来展示:
<?php
//...此处省略与上面一样的代码
?>
<!DOCTYPE html>
<html>
<head>
<title>遍历展示我的数据</title>
</head>
<body>
<h1>Mysqli操作数据库演示</h1>
<h2>共查询出<?php echo $result->num_rows;?>条数据</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>url</th>
</tr>
</thead>
<tbody>
<?php foreach($query_rows as $row):?>
<tr>
<td><?php echo $row['id'] ?></td>
<td><?php echo $row['name'] ?></td>
<td>
<a href = "<?php echo $row['content'] ?>" target="_black" />
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</body>
</html>
PDO 代码演示
下面是一个用PDO操作数据库的例子:
<?php
echo "PDO操作数据库演示 <br/>"
//【连接数据库基本信息】
$db_host = "127.0.0.1"; //数据库服务器的ip地址
$db_user = "root"; //数据库的用户名
$db_password = "root"; //数据库的密码
$db_name = "php_mysql"; //数据库的名字
$db_port = 8889; //数据库的端口
$charset = "utf8";
try{
//DSN => Data Source Name 数据源名称
//例:$dsn = 'mysql:host=127.0.0.1;dbname=mysql;port=8889;charset=utf8';
$dsn = 'mysql:host='.$db_host.';dbname='.$db_name.';port='.$db_port.';charset='.$charset;
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
];
$pdo = new PDO($dsn,$db_user,$db_password,$options);
echo "数据库连接成功<br/>";
}
catch(PDOException $e){
echo '数据库连接失败<br/>';
echo $e->getMessage();
//断开连接
$pdo = null;
exit();
}
//【操作数据库】 与mysqli会有略微不同
//假设:查询php_mysql数据库中的数据表tb_data
//使用prepared statement预编译方式查询,虽然复杂但是安全
$query = 'SELECT * FROM tb_data ORDER BY id ASC';
$stm = $pdo->prepare($query);
$stm->execute();
$query_rows = $stm->fetchAll();
//断开数据库连接
$pdo = null;
?>
PHP服务器端API接口开发
核心
服务器端通过 将内存变量(对象、数组)进行序列化为JSON字符串,将其发送给客户端。
客户端将JSON字符串发送给服务器端,服务器端接收到后会进行反序列化的操作,将JSON字符串变回内存变量(对象、数组)。
接下来是模拟API接口返回数据到前端的展示:
<?php
//模拟获取到了数据
$data = [
'id' => 1,
'name' => '名字',
'author' => '作者'
];
$result = [
'success' => true,
'msg' => '获取数据成功',
'data' => $data
];
http_response_code(200);
header("Content-type:application/json;charset=UTF-8");
//json_encode序列化 echo返回给客户端
echo json_encode($result);
?>
1.4 列举 一些预定义常量
- PHP_VERSION:表示当前PHP的版本号。
- PHP_OS:表示当前PHP运行的操作系统。
- PHP_INT_MAX:表示整型的最大值。这个常量在进行大数运算或者进行整型转换时非常有用。
- _LINE_:表示当前代码所在的行数。这个常量在调试代码时非常有用,可以方便定位出错的位置。
- _FILE_:表示当前代码所在的文件名。这个常量常用于获取当前文件的绝对路径。
- _DIR_:表示当前文件所在的目录。这个常量常用于包含其他文件时,指定相对路径。
- _FUNCTION_:表示当前函数的名称。这个常量用于输出函数名。
- _CLASS_:表示当前类的名称。这个常量通常用于输出类名。
- _METHOD_:表示当前方法的名称。这个常量常用于输出方法名。
- PHP_EOL:表示换行符。这个常量在不同的操作系统上有不同的值,可以方便地进行换行操作。
- PHP_BINDIR:表示PHP的安装路径。
- PHP_SELF:表示当前执行脚本的文件名。这个常量通常用于生成URL链接,方便在同一个脚本中进行页面跳转。
- PHP_SAPI:表示当前PHP运行的API类型,这个常量可以用于判断当前PHP是运行在命令行模式还是Web服务器模式。
- PHP_EXTENSION_DIR:表示PHP扩展的安装路径。
- PHP_SHLIB_SUFFIX:表示PHP扩展的文件后缀。
- PHP_WINDOWS_VERSION_MAJOR:表示Windows操作系统的主版本号。这个常量可以用于判断当前运行的操作系统是哪个版本。
- PHP_WINDOWS_VERSION_MINOR:表示Windows操作系统的次版本号。
转载自:https://juejin.cn/post/7390620343013163060