PHP基础

学习PHP的基本概念和第一个程序

什么是PHP?

PHP(全称:PHP: Hypertext Preprocessor,即"PHP:超文本预处理器")是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。

特点: PHP语法吸收了C语言、Java和Perl的特点,易于学习,使用广泛,主要适用于Web开发领域。

PHP的主要特点

  • 开源免费: PHP是开源软件,可以免费使用
  • 跨平台: 可以在Windows、Linux、Unix等多种操作系统上运行
  • 简单易学: 语法简单,入门门槛低
  • 强大的数据库支持: 支持多种数据库,如MySQL、PostgreSQL、Oracle等
  • 面向对象: 支持面向对象编程
  • 丰富的函数库: 内置大量函数,方便开发

PHP的历史

PHP最初由Rasmus Lerdorf于1994年创建,最初只是一组用于维护个人主页的Perl脚本。后来用C语言重新编写,可以访问数据库,并能够构建简单的动态Web应用程序。

PHP的应用场景

  • 网站开发: 创建动态网站和Web应用程序
  • 命令行脚本: 编写命令行脚本执行系统任务
  • 桌面应用程序: 使用PHP-GTK等工具开发桌面应用
  • API开发: 创建RESTful API和Web服务

PHP环境搭建

要运行PHP程序,需要搭建PHP运行环境。主要有以下几种方式:

1. 集成环境(推荐新手)

  • XAMPP: 包含Apache、PHP、MySQL的集成环境
  • WAMP: Windows下的Apache、MySQL、PHP集成环境
  • MAMP: Mac OS X下的Apache、MySQL、PHP集成环境
  • Laragon: 轻量级的Windows PHP开发环境

2. 单独安装

可以分别安装Apache/Nginx、PHP和MySQL,适合有经验的开发者。

3. 在线环境

使用在线PHP编辑器,如PHP Sandbox、3v4l等,无需本地安装。

4. 使用Docker

使用Docker容器化部署PHP环境,便于环境管理和部署。

注意: PHP是服务器端脚本语言,需要在服务器环境中运行,不能直接在浏览器中打开PHP文件。

验证PHP安装

安装完成后,可以通过以下方式验证PHP是否正常工作:

info.php
<?php
phpinfo();
?>

将上述代码保存为info.php文件,放置在Web服务器的文档根目录中,然后通过浏览器访问该文件。如果显示PHP配置信息,说明PHP安装成功。

第一个PHP程序

让我们编写第一个简单的PHP程序,输出"Hello, World!"。

hello.php
<?php
// 这是我的第一个PHP程序
echo "Hello, World!";
?>

代码解释

  • <?php?> 是PHP的起始和结束标签
  • // 表示单行注释
  • echo 是PHP的输出语句,用于向浏览器输出内容
  • 每条PHP语句以分号;结尾

PHP标签类型

PHP支持多种标签格式:

PHP标签类型
// 标准标签(推荐)
<?php echo "Hello World"; ?>

// 短标签(需要开启short_open_tag)
<? echo "Hello World"; ?>

// 短标签带echo(需要开启short_open_tag)
<?= "Hello World" ?>

// ASP风格标签(不推荐,已弃用)
<% echo "Hello World"; %>

PHP文件结构

一个典型的PHP文件包含HTML和PHP代码的混合。

example.php
<!DOCTYPE html>
<html>
<head>
    <title>PHP示例</title>
</head>
<body>
    <?php
    // PHP代码块
    $name = "PHP学习者";
    echo "<h1>欢迎, " . $name . "!</h1>";
    ?>
    
    <p>这是一个包含PHP代码的HTML页面。</p>
</body>
</html>

纯PHP文件

如果文件中只包含PHP代码,可以省略结束标签?>,这有助于避免意外输出空白字符。

pure.php
<?php
// 这是一个纯PHP文件
$message = "Hello World";
echo $message;
// 注意:这里没有结束标签

PHP注释

注释是代码中不会被执行的文本,用于解释代码的功能。PHP支持三种注释方式:

注释示例
<?php
// 这是单行注释

# 这也是单行注释(不常用)

/*
这是多行注释
可以跨越多行
*/

/**
 * 文档注释
 * 通常用于函数和类的说明
 */
?>

注释的最佳实践

  • 为复杂的算法或业务逻辑添加注释
  • 注释应该解释"为什么"而不是"什么"
  • 保持注释的更新,与代码同步
  • 避免过度注释显而易见的代码

PHP输出方式

PHP有多种输出内容的方式:

1. echo

最常用的输出语句,可以输出一个或多个字符串。

echo示例
<?php
echo "Hello World!";
echo "Hello", " ", "World!"; // 输出多个参数
?>

2. print

与echo类似,但只能输出一个字符串,且返回值为1。

print示例
<?php
print "Hello World!";
$result = print "Hello"; // $result的值为1
?>

3. printf

格式化输出函数,类似于C语言的printf。

printf示例
<?php
$name = "张三";
$age = 25;
printf("姓名:%s,年龄:%d", $name, $age);
?>

4. print_r 和 var_dump

用于调试的输出函数,可以显示变量的结构信息。

调试输出示例
<?php
$array = ["apple", "banana", "orange"];

// print_r - 以易于理解的方式打印变量
print_r($array);

// var_dump - 显示变量的类型和值
var_dump($array);
?>

输出缓冲

PHP支持输出缓冲,可以在发送内容到浏览器之前捕获输出。

输出缓冲示例
<?php
// 开启输出缓冲
ob_start();

echo "Hello ";
echo "World!";

// 获取缓冲区内容并清空缓冲区
$content = ob_get_clean();

echo "捕获的内容: " . $content;
?>

PHP基本语法规则

大小写敏感性

  • 变量名区分大小写
  • 函数名、类名、关键字不区分大小写
大小写示例
<?php
// 变量区分大小写
$name = "张三";
$Name = "李四";
echo $name; // 输出 "张三"
echo $Name; // 输出 "李四"

// 函数不区分大小写
echo("Hello");
ECHO("World"); // 同样有效
?>

语句和分号

PHP中每条语句必须以分号;结尾,但PHP结束标签?>前的最后一条语句可以省略分号。

分号示例
<?php
echo "第一行";
echo "第二行";
echo "最后一行" // 这里可以省略分号
?>

实践练习

尝试编写一个PHP程序,输出以下内容:

我的个人信息

姓名:李明

年龄:28

职业:Web开发者

今天是:2023年11月15日

提示: 可以使用多个echo语句,或者使用HTML标签格式化输出。可以使用date()函数获取当前日期。
练习参考代码
<!DOCTYPE html>
<html>
<head>
    <title>我的个人信息</title>
</head>
<body>
    <?php
    $name = "李明";
    $age = 28;
    $job = "Web开发者";
    $today = date("Y年m月d日");
    ?>
    
    <h1>我的个人信息</h1>
    <p>姓名:<?php echo $name; ?></p>
    <p>年龄:<?php echo $age; ?></p>
    <p>职业:<?php echo $job; ?></p>
    <p>今天是:<?php echo $today; ?></p>
</body>
</html>

常见错误和调试

常见语法错误

  • 忘记分号;
  • 忘记美元符号$
  • 引号不匹配
  • 括号不匹配
  • 使用未定义的变量

错误报告设置

错误报告设置
<?php
// 开发环境 - 显示所有错误
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 生产环境 - 关闭错误显示
error_reporting(0);
ini_set('display_errors', 0);
?>