2. PHP基础语法:从第一行代码开始
好,咱们正式开始写PHP代码了。说实话,每次带新人,我都是从这一章讲起。基础语法就像盖房子的砖头,看着简单,但砌不好后面全得塌。我见过太多人因为分号漏了、引号错了,debug到怀疑人生。
别急,咱们一步步来。先搞定最基础的几个东西:标记、注释、输出、变量、常量、数据类型。这些你玩熟了,后面写项目就跟喝水一样自然。
2.1 PHP标记风格
PHP代码要跑起来,首先得告诉服务器:「嘿,这里开始是PHP了!」。这个「告诉」的动作,就是靠标记完成的。
最常用的就是标准标记:<?php ... ?>。我个人习惯一直用这个,兼容性最好,没有之一。
<?php
// 这里是PHP代码
echo "Hello, World!";
?>
还有一种短标记 <? ... ?>,但我不推荐你用。为什么?因为有些服务器没开启 short_open_tag 配置,代码直接白屏。我曾经在迁移项目时吃过这个亏,几十个文件挨个改,那叫一个酸爽。
?>。这样可以避免意外输出空白字符,很多框架都是这么干的。
2.2 PHP注释
注释是写给「人」看的,不是给机器看的。我见过两种极端:一种一行注释都不写,三个月后自己都看不懂;另一种每行都写注释,代码比注释还短。
PHP支持三种注释风格:
| 类型 | 写法 | 适用场景 |
|---|---|---|
| 单行注释 | // |
解释某一行代码的作用 |
| 多行注释 | /* ... */ |
大段说明或临时屏蔽代码 |
| 文档注释 | /** ... */ |
函数、类的说明,配合IDE自动提示 |
<?php
// 这是单行注释,我习惯用它做简单说明
/*
这是多行注释
可以写好几行
适合临时注释掉一大段代码
*/
/**
* 这是文档注释
* @param string $name 用户名
* @return string 问候语
*/
function sayHello($name) {
return "你好," . $name;
}
?>
2.3 PHP输出语句:echo 与 print
输出是调试的第一手段。PHP里最常用的就是 echo 和 print。说实话,我几乎只用 echo,因为它更快,而且能一次输出多个值。
<?php
echo "Hello"; // 输出字符串
echo "Hello", " ", "World"; // 输出多个值,用逗号分隔
print "Hello"; // print也能输出,但只能输出一个值
?>
你可能会问:echo 和 print 到底有啥区别?
echo没有返回值,print返回1(可以用在表达式中)echo可以输出多个参数,print只能一个echo比print稍微快那么一丢丢
嗯,这里要注意:echo 后面可以不加括号,直接跟字符串。很多人写 echo("Hello"),其实 echo "Hello" 就够了。少打两个字符,多一分清爽。
2.4 变量与常量
变量就是装数据的盒子。PHP的变量用 $ 开头,这点跟其他语言不太一样。我第一次学的时候老忘加 $,结果报错报得我怀疑人生。
<?php
$name = "张三"; // 字符串
$age = 25; // 整数
$price = 19.99; // 浮点数
$isActive = true; // 布尔值
?>
变量命名规则其实很简单:
- 以
$开头,后面跟字母或下划线 - 只能包含字母、数字、下划线,不能以数字开头
- 区分大小写,
$name和$Name是两个不同的变量
$userName 或 $user_name。选一种,然后整个项目保持一致。
常量跟变量不同,一旦定义就不能改。定义常量用 define() 或 const 关键字。
<?php
define("SITE_NAME", "我的网站");
const VERSION = "1.0.0";
echo SITE_NAME; // 输出:我的网站
echo VERSION; // 输出:1.0.0
?>
常量名通常全大写,用下划线分隔。这不是强制要求,但大家都这么写,你最好也这么干。我曾经接手过一个项目,常量名大小写混用,看得我脑壳疼。
const 是语言结构,编译时更快;define() 是函数,可以在条件语句中使用。如果你确定常量不会变,用 const 就对了。
2.5 数据类型
PHP是弱类型语言,意思是你不必声明变量类型,PHP会自动判断。但这不代表你可以乱来。我见过有人把字符串当数字用,结果算出来的结果莫名其妙。
PHP支持8种基本数据类型:
| 类型 | 说明 | 示例 |
|---|---|---|
| String(字符串) | 一串字符 | "Hello" |
| Integer(整型) | 整数 | 42 |
| Float(浮点型) | 带小数点的数 | 3.14 |
| Boolean(布尔型) | true 或 false | true |
| Array(数组) | 一组数据 | [1, 2, 3] |
| Object(对象) | 类的实例 | new stdClass() |
| NULL | 没有值 | null |
| Resource(资源) | 外部资源(如数据库连接) | fopen() 返回值 |
你可以用 var_dump() 来查看变量的类型和值,这是调试神器。
<?php
$name = "张三";
$age = 25;
$price = 19.99;
$isActive = true;
var_dump($name); // 输出:string(6) "张三"
var_dump($age); // 输出:int(25)
var_dump($price); // 输出:float(19.99)
var_dump($isActive);// 输出:bool(true)
?>
== 而不是 ===,结果 "1" == true 返回了 true,导致逻辑全乱套。记住:== 只比较值,=== 比较值和类型。能用 === 就别用 ==。
说到类型转换,PHP有两种方式:自动转换和强制转换。
<?php
// 自动转换
$result = "5" + 3; // 输出 8,字符串"5"自动转成整数5
// 强制转换
$num = (int)"42"; // 字符串转整数
$str = (string)100; // 整数转字符串
$bool = (bool)1; // 整数转布尔值
?>
自动转换虽然方便,但容易出问题。我建议你在关键地方用强制转换,明确告诉PHP你要什么类型。代码写清楚,bug少一半。
2.6 本章小结
好了,这一章的内容就这些。你想想看,其实PHP基础语法并不复杂:标记告诉服务器开始解析,注释帮你记住思路,echo输出结果,变量存数据,常量存固定值,数据类型决定怎么处理这些值。
下一章我们会深入数组和字符串操作,那才是真正开始玩花样的时候。先把这些基础打牢,别急着往下赶。我当年就是太着急,结果基础不牢,后面写项目各种踩坑。
记住:写代码就像盖房子,地基越稳,楼盖得越高。加油!