PHP是一门广泛使用的服务器端脚本语言特别适合Web开发。
据统计互联网上超过80%的网站都在用PHP。包括Facebook维基百科WordPress等等知名的网站都是用PHP开发的。
PHP 7.2已经发布一段时间了性能和安全性都有很大提升。PHP 7.3也即将在今年年底发布目前已经有RC版本可以提前体验新特性。
很多零基础的朋友想学PHP但是不知道从哪里开始。今天我写这篇入门指南从零开始教大家学习PHP 7.2/7.3。
希望通过这篇文章大家能快速入门PHP开始自己的Web开发之旅。
一、PHP简介
先简单介绍一下PHP。
PHP全称是Hypertext Preprocessor超文本预处理器是一门开源的服务器端脚本语言。
PHP的特点:
- 简单易学:PHP的语法比较简单和,C语言类似有编程基础的人很容易上手。零基础的人也能快速入门。
- 开发效率高:PHP有丰富的内置函数和,扩展能快速开发各种Web应用。而且有很多成熟的框架,比如LaravelSymfonyThinkPHP等等能进一步提升开发效率。
- 跨平台:PHP能在WindowsLinuxmacOS等多种操作系统上运行。
- 支持多种数据库:PHP支持几乎所有的主流数据库,比如MySQLPostgreSQLOracleSQLiteMongoDB等等。
- 开源免费:PHP是开源的免费的不需要付费就能使用。
PHP 7是PHP的一个重大版本性能比PHP 5提升了很多据说快了2-3倍。PHP 7.2和即将发布的PHP 7.3在PHP 7的基础上进一步优化了性能增加了新特性也移除了一些过时的功能。
二、环境搭建
学PHP第一步就是搭建开发环境。
对于初学者推荐用集成环境,比如phpStudyXAMPPWAMP等等一键安装Apache/Nginx+PHP+MySQL很方便。
我自己用的是phpStudy在Windows上很好用。下面以phpStudy为例介绍环境搭建。
1. 下载phpStudy:
去phpStudy官网下载最新版的phpStudy安装包。
2. 安装phpStudy:
运行安装包选择安装路径注意路径不要有中文和空格,然后下一步安装完成。
3. 启动环境:
打开phpStudy点击启动按钮启动Apache和MySQL。
启动成功之后,打开浏览器访问http://localhost如果能看到phpStudy的默认页面就说明环境搭建成功了。
4. 选择PHP版本:
phpStudy支持多个PHP版本切换。在phpStudy的界面上可以选择PHP 7.2或者PHP 7.3的版本。
如果想体验PHP 7.3的新特性可以下载PHP 7.3的RC版本放到phpStudy的PHP目录里,然后切换。
5. 测试PHP:
在phpStudy的网站根目录一般是WWW目录下创建一个文件叫phpinfo.php内容如下:
<?php
phpinfo();然后在浏览器访问http://localhost/phpinfo.php如果能看到PHP的信息页面就说明PHP正常工作了。
在这个页面上能看到PHP的版本扩展配置等等信息。
三、基础语法
环境搭建好之后,就可以开始学PHP的基础语法了。
1. PHP标记:
PHP代码需要放在<?php 和 ?>之间。比如:
<?php
echo "Hello, World!";
?>如果文件,只有PHP代码建议省略结尾的?>避免多余的空格,或者换行导致问题。
2. 输出:
PHP中用echo或者print来输出内容。
<?php
echo "Hello, World!";
print "Hello, PHP!";echo可以输出多个字符串用逗号分隔print只能输出一个字符串。
3. 注释:
PHP支持三种注释:
<?php
// 单行注释
# 单行注释(另一种写法)
/*
多行注释
可以写多行
*/4. 变量:
PHP的变量以$符号开头后面跟变量名。
<?php
$name = "张三";
$age = 25;
$height = 1.75;
$isStudent = true;
echo $name;PHP是弱类型语言变量不需要声明类型赋值的时候,自动确定类型。
变量名区分大小写$name和$Name是两个不同的变量。
5. 常量:
PHP中用define函数,或者const关键字来定义常量。
<?php
define("PI", 3.14159);
const SITE_NAME = "我的网站";
echo PI;
echo SITE_NAME;常量一旦定义就不能修改也不能删除。常量名默认区分大小写约定俗成用大写。
6. 数据类型:
PHP支持多种数据类型:
- String(字符串):用单引号,或者双引号包裹
- Integer(整型):整数
- Float(浮点型):小数
- Boolean(布尔型):true或false
- Array(数组):一组数据
- Object(对象):类的实例
- NULL(空):表示变量没有值
<?php
$str = "Hello"; // 字符串
$int = 123; // 整型
$float = 3.14; // 浮点型
$bool = true; // 布尔型
$arr = array(1, 2, 3); // 数组
$null = null; // 空可以用var_dump函数来查看变量的类型和值:
<?php
$name = "张三";
var_dump($name); // string(6) "张三"7. 运算符:
PHP支持常见的运算符:
- 算术运算符:+-*/%++--
- 赋值运算符:=+=-=*=/=%=.=
- 比较运算符:=====!=!==><>=<=
- 逻辑运算符:&&||!
- 字符串运算符:.拼接字符串
<?php
$a = 10;
$b = 3;
echo $a + $b; // 13
echo $a - $b; // 7
echo $a * $b; // 30
echo $a / $b; // 3.333...
echo $a % $b; // 1
$a++; // $a = 11
$b--; // $b = 2
$str = "Hello" . " " . "World"; // "Hello World"注意==是松散比较会自动转换类型===是严格比较不会转换类型建议尽量用===。
8. 条件语句:
PHP支持ifelseelseifswitch等条件语句。
<?php
$age = 18;
if ($age < 18) {
echo "未成年";
} elseif ($age < 60) {
echo "成年人";
} else {
echo "老年人";
}
// switch
$day = "Monday";
switch ($day) {
case "Monday":
echo "星期一";
break;
case "Tuesday":
echo "星期二";
break;
default:
echo "其他";
}9. 循环语句:
PHP支持forwhiledo-whileforeach等循环语句。
<?php
// for循环
for ($i = 0; $i < 10; $i++) {
echo $i . " ";
}
// while循环
$i = 0;
while ($i < 10) {
echo $i . " ";
$i++;
}
// do-while循环
$i = 0;
do {
echo $i . " ";
$i++;
} while ($i < 10);
// foreach循环(遍历数组)
$arr = array("苹果", "香蕉", "橙子");
foreach ($arr as $fruit) {
echo $fruit . " ";
}
// 带键的foreach
$arr = array("name" => "张三", "age" => 25);
foreach ($arr as $key => $value) {
echo $key . ": " . $value . " ";
}10. 数组:
数组是PHP中非常重要的数据类型。
PHP的数组分为索引数组和关联数组。
<?php
// 索引数组
$fruits = array("苹果", "香蕉", "橙子");
echo $fruits[0]; // 苹果
// 关联数组
$person = array(
"name" => "张三",
"age" => 25,
"city" => "北京"
);
echo $person["name"]; // 张三
// 短数组语法(PHP 5.4+支持)
$fruits = ["苹果", "香蕉", "橙子"];
$person = ["name" => "张三", "age" => 25];常用的数组函数:
- count($arr):获取数组长度
- array_push($arr, $value):向数组末尾添加元素
- array_pop($arr):删除数组末尾的元素
- array_shift($arr):删除数组开头的元素
- array_unshift($arr, $value):向数组开头添加元素
- array_merge($arr1, $arr2):合并数组
- in_array($value, $arr):检查值是否在数组中
- array_keys($arr):获取数组的所有键
- array_values($arr):获取数组的所有值
四、函数
函数是一段可复用的代码块。
1. 定义函数:
<?php
function functionName($param1, $param2) {
// 函数体
return $result;
}2. 调用函数:
<?php
function add($a, $b) {
return $a + $b;
}
echo add(1, 2); // 33. 默认参数:
<?php
function greet($name = "World") {
echo "Hello, " . $name . "!";
}
greet(); // Hello, World!
greet("张三"); // Hello, 张三!4. 可变长度参数:
PHP 5.6+支持可变长度参数用...表示。
<?php
function sum(...$numbers) {
$total = 0;
foreach ($numbers as $n) {
$total += $n;
}
return $total;
}
echo sum(1, 2, 3, 4); // 105. 匿名函数:
PHP支持匿名函数也叫闭包。
<?php
$add = function($a, $b) {
return $a + $b;
};
echo $add(1, 2); // 36. 常用内置函数:
PHP有很多内置函数常用的有:
- 字符串函数:strlenstrpossubstrstr_replacetrimexplodeimplode等等
- 数学函数:absroundceilfloorrandmaxmin等等
- 日期函数:datetimestrtotimemktime等等
- 数组函数:上面已经介绍了
五、面向对象
PHP支持面向对象编程。
1. 定义类:
<?php
class Person {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function sayHello() {
echo "Hello, 我叫" . $this->name . "今年" . $this->age . "岁。";
}
}2. 创建对象:
<?php
$person = new Person("张三", 25);
$person->sayHello(); // Hello, 我叫张三今年25岁。3. 继承:
<?php
class Student extends Person {
public $school;
public function __construct($name, $age, $school) {
parent::__construct($name, $age);
$this->school = $school;
}
public function study() {
echo $this->name . "在," . $this->school . "学习。";
}
}
$student = new Student("李四", 20, "北京大学");
$student->sayHello();
$student->study();4. 访问控制:
PHP有三种访问控制符:
- public:公开的任何地方都能访问
- protected:受保护的,只有自己和子类能访问
- private:私有的,只有自己能访问
5. 接口:
<?php
interface Animal {
public function makeSound();
}
class Dog implements Animal {
public function makeSound() {
echo "汪汪汪";
}
}6. 抽象类:
<?php
abstract class Shape {
abstract public function area();
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function area() {
return pi() * $this->radius * $this->radius;
}
}六、数据库操作
PHP最常用的场景就是操作数据库特别是MySQL。
PHP操作MySQL有三种方式:MySQL(已废弃)MySQLiPDO。
推荐用PDO因为它支持多种数据库,而且更安全支持预处理语句防止SQL注入。
1. 连接数据库:
<?php
$dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4";
$username = "root";
$password = "root";
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}2. 查询数据:
<?php
$stmt = $pdo->query("SELECT * FROM users");
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user) {
echo $user["name"] . " - " . $user["email"] . "<br>";
}3. 预处理语句(防止SQL注入):
<?php
$id = 1;
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
echo $user["name"];4. 插入数据:
<?php
$name = "张三";
$email = "zhangsan@example.com";
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$name, $email]);
echo "插入成功ID: " . $pdo->lastInsertId();5. 更新数据:
<?php
$name = "李四";
$id = 1;
$stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?");
$stmt->execute([$name, $id]);
echo "更新了" . $stmt->rowCount() . "条记录";6. 删除数据:
<?php
$id = 1;
$stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([$id]);
echo "删除了" . $stmt->rowCount() . "条记录";七、PHP 7.2/7.3新特性
最后简单介绍一下PHP 7.2和PHP 7.3的新特性。
PHP 7.2新特性:
- 新的对象类型:可以用object作为参数类型和返回值类型。
- 通过名称加载扩展:PHP.ini中加载扩展不再需要写文件扩展名。
- 允许分组命名空间中的尾部逗号:use语句的最后可以加逗号。
- 密码哈希算法扩展:password_hash支持更多算法。
- 移除了一些过时的功能:比如create_functioneach等等。
PHP 7.3新特性(即将发布可提前体验RC版):
- 更灵活的Heredoc和Nowdoc语法:闭合标记可以缩进也可以不换行。
- 数组解构中支持引用:list和[]解构中支持引用。
- JSONTHROWONERROR:jsonencode和,json_decode支持抛出异常而不是返回false。
- is_countable函数:检查变量是否可计数避免count警告。
- arraykeyfirst和arraykeylast:获取数组的第一个和最后一个键。
- 性能进一步提升:PHP 7.3在PHP 7.2的基础上进一步优化了性能据说快了10-20%。
PHP 7.3预计在2018年12月正式发布现在已经有RC版本可以下载体验新特性。
八、学习资源推荐
最后推荐一些PHP学习资源:
1. 官方文档:PHP的官方文档写得很详细是最好的学习资料。有中文版本。
2. 《PHP和MySQL Web开发》:经典的PHP入门书籍适合初学者。
3. 《Modern PHP》:介绍现代PHP开发最佳实践适合有一定基础的人。
4. Laravel框架:最流行的PHP框架文档完善社区活跃适合进阶学习。
5. PHP The Right Way:一个网站介绍PHP最佳实践编码标准安全等等很值得看。
九、写在最后
以上就是PHP 7.2/7.3的入门指南。
PHP是一门简单易学开发效率高的语言特别适合Web开发。对于零基础的初学者来说PHP是一个很好的入门语言。
当然这篇文章只是入门介绍PHP的内容,还有很多,比如会话Cookie文件上传图像处理正则表达式错误处理异常命名空间Composer框架等等需要大家继续深入学习。
学习编程最重要的是多动手多练习。不要只看不练要边学边写代码才能真正掌握。
希望这篇入门指南能帮大家快速入门PHP。如果有什么问题,或者不懂的地方欢迎在评论区留言我们一起交流。
最后用一句话结束这篇文章:"PHP是世界上最好的语言(之一)。"
愿大家都能学好PHP成为优秀的PHP开发者。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录