php學習筆記(全面且適合新手)

以下是專為 PHP 7.4 初學者設計的全面學習文檔,涵蓋基礎語法、細節語法和進階語法,結合 PHP 7.4 新特性與實戰案例,幫助系統掌握 PHP 開發:

為什么特地做7.4的筆記而不做8的?因為公司用的7.4,哈哈

一、基礎語法:構建 PHP 編程基石

1. 變量與數據類型
  • 變量聲明:使用 $ 符號聲明,無需提前指定類型。
$name = "John"; // 字符串
$age = 30;      // 整數
$salary = 5000.5; // 浮點數
  • 數據類型:標量(int, float, string, bool)、復合(array, object)、特殊(resource, NULL)。

  • 類型強制轉換

$num = (int) "123"; // 轉換為整數
$str = (string) 456; // 轉換為字符串
2. 運算符與表達式
  • 算術運算符:+, -, *, /, %。

  • 比較運算符:==, ===, >, <, <=, >=。

  • 邏輯運算符:&&, ||, !。

  • 三元運算符

$status = $isActive ? "Active" : "Inactive";
3. 流程控制
  • 條件語句
if ($age >= 18) {echo "成年人";
} elseif ($age >= 13) {echo "青少年";
} else {echo "兒童";
}
// for 循環
for ($i = 0; $i < 5; $i++) {echo $i;
}// while 循環
$j = 0;
while ($j < 5) {echo $j++;
}
4. 函數基礎
  • 自定義函數
function add($a, $b) {return $a + $b;
}
echo add(3, 5); // 輸出 8
$greet = function($name) {echo "Hello, $name!";
};
$greet("Alice"); // 輸出 Hello, Alice!

二、細節語法:深入 PHP 7.4 特性

1. 類型聲明(PHP 7.4 增強)
  • 標量類型聲明
declare(strict_types=1); // 開啟嚴格模式function multiply(int $a, int $b): int {return $a * $b;
}
echo multiply(3, "4"); // 嚴格模式下報錯
  • 聯合類型(PHP 7.4 新增):
function formatValue(int|string $value): string {return "Value: " . $value;
}
echo formatValue(123); // 輸出 Value: 123
2. 箭頭函數(PHP 7.4 新增)
  • 簡潔語法
$numbers = [1, 2, 3, 4];
$squared = array_map(fn($n) => $n ** 2, $numbers);
print_r($squared); // 輸出 Array([0] => 1, [1] =>4, [2] =>9, [3] =>16)
  • 自動捕獲父作用域變量
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3]);
print_r($nums); // 輸出 Array([0] =>10, [1] =>20, [2] =>30)
3. 類型屬性(PHP 7.4 新增)
  • 類屬性類型聲明
class User {public int $id;public string $name;protected ?string $email = null;
}$user = new User();
$user->id = 1;       // 合法
$user->name = "Bob"; // 合法
$user->email = "bob@example.com"; // 合法
$user->email = null; // 合法(允許 null)
4. 空合并運算符(??)與空合并賦值運算符(??=)
  • 空值處理
$username = $_GET['user'] ?? "Guest"; // 若 $_GET['user'] 不存在,默認 "Guest"
$this->data['comments'] ??= []; // 若 $this->data['comments'] 為 null,賦值為空數組

三、進階語法:提升代碼質量與效率

1. 面向對象編程(OOP)
  • 類與對象
class Car {public string $model;private int $year;public function __construct(string $model, int $year) {$this->model = $model;$this->year = $year;}public function getInfo(): string {return "{$this->model} ({$this->year})";}
}$car = new Car("Toyota", 2020);
echo $car->getInfo(); // 輸出 Toyota (2020)
  • 繼承與多態
class ElectricCar extends Car {public function charge(): void {echo "Charging...";}
}
2. 命名空間與自動加載
  • 命名空間聲明
namespace App\Controllers;class HomeController {// 控制器邏輯
}
  • 自動加載(Composer)
{"autoload": {"psr-4": {"App\\": "src/"}}
}
3. 異常處理
  • 異常捕獲與拋出
try {if (!file_exists("data.txt")) {throw new Exception("文件不存在");}
} catch (Exception $e) {echo "錯誤:" . $e->getMessage();
}
4. 文件操作與安全性
  • 文件讀寫
// 讀取文件
$content = file_get_contents("data.txt");// 寫入文件
file_put_contents("log.txt", "日志信息\n", FILE_APPEND);
  • 安全防護
// 輸入過濾
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);// 輸出轉義
echo htmlspecialchars($username);
5. 數據庫操作(MySQLi 預處理語句)
  • 連接數據庫
$mysqli = new mysqli("localhost", "user", "pass", "db");
if ($mysqli->connect_error) {die("連接失敗:" . $mysqli->connect_error);
}
  • 預處理語句
$stmt = $mysqli->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
$name = "Alice";
$email = "alice@example.com";
$stmt->execute();

四、PHP 7.4 新特性深度解析

1. 箭頭函數的應用場景
  • 數組處理
$users = [["name" => "John", "age" => 30],["name" => "Jane", "age" => 25]
];$names = array_map(fn($user) => $user['name'], $users);
print_r($names); // 輸出 Array([0] => John, [1] => Jane)
2. 類型屬性的注意事項
  • 默認值設置
class Product {public float $price = 0.0; // 非空類型需設置默認值public ?string $description = null; // 允許 null
}
3. 協變返回與逆變參數(PHP 7.4 新增)
  • 協變返回
interface Animal {public function makeSound(): string;
}class Dog implements Animal {public function makeSound(): string {return "Woof!";}
}class Cat implements Animal {public function makeSound(): string {return "Meow!";}
}function getAnimal(): Animal {return new Dog(); // 協變返回更具體的類型
}

五、學習資源推薦

  1. 官方文檔:PHP 官方手冊

  2. 在線教程:PHP 中文網、W3Schools

  3. 書籍:《PHP 和 MySQL Web 開發》、《PHP: The Right Way》

  4. 實戰項目:GitHub PHP 項目

六、學習路線建議

  1. 階段一(基礎):掌握變量、運算符、流程控制、函數。

  2. 階段二(進階):學習面向對象、命名空間、異常處理。

  3. 階段三(實戰):結合數據庫操作、文件處理、安全性開發完整項目。

  4. 階段四(優化):深入 PHP 7.4 新特性,提升代碼效率與可維護性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79476.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79476.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79476.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源分布式數據庫(TiDB)

TiDB是由PingCAP 開發的開源分布式數據庫&#xff0c;兼容 MySQL 協議&#xff0c;集成了 HTAP&#xff08;混合事務和分析處理&#xff09;的能力&#xff0c;能夠同時處理在線事務和實時分析任務。 2015 年&#xff0c;TiDB 在 GitHub 創建&#xff0c;2025 年&#xff0c;Ti…

SpringBoot+Mybatis通過自定義注解實現字段加密存儲

&#x1f60a; 作者&#xff1a; 一恍過去 &#x1f496; 主頁&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社區&#xff1a; Java技術棧交流 &#x1f389; 主題&#xff1a; SpringBootMybatis實現字段加密 ?? 創作時間&#xff1a; 2025年04月…

Windows 10系統中找回MySQL 8的root密碼

以下是 在Windows 10系統中找回MySQL 8的root密碼 的詳細步驟&#xff1a; 步驟1&#xff1a;停止MySQL服務 按 Win R 輸入 services.msc&#xff0c;打開「服務」管理器。找到 MySQL80&#xff08;或其他自定義服務名&#xff09;&#xff0c;右鍵選擇 停止。 步驟2&#xf…

【計網】互聯網的組成

回顧&#xff1a; 互聯網(Internet)&#xff1a;它是一個專有名詞&#xff0c;是一個特定的互連網&#xff0c;它是指當下全球最大的、最開放的、由眾多網絡相互連接而形成的特定的的互連網&#xff0c;采用TCP/IP協議族作為通信規則。 一、互聯網的組成部分 從互聯網的工作方…

【vue3】黑馬程序員前端Vue3小兔鮮電商項目【八】

黑馬程序員前端Vue3小兔鮮電商項目【八】登錄頁面 登錄頁面的主要功能就是表單校驗和登錄登出業務。 賬號密碼 accountpasswordcdshi0080123456cdshi0081123456cdshi0082123456cdshi0083123456cdshi0084123456cdshi0085123456cdshi0086123456cdshi0087123456cdshi0088123456 …

C++學習:六個月從基礎到就業——C++11/14:右值引用與移動語義

C學習&#xff1a;六個月從基礎到就業——C11/14&#xff1a;右值引用與移動語義 本文是我C學習之旅系列的第三十九篇技術文章&#xff0c;也是第三階段"現代C特性"的第一篇&#xff0c;主要介紹C11/14中引入的右值引用和移動語義。查看完整系列目錄了解更多內容。 引…

基于Qlearning強化學習的電梯群控系統高效調度策略matlab仿真

目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1 Q-learning強化學習原理 2.2 基于Q-learning的電梯群控系統建模 3.MATLAB核心程序 4.完整算法代碼文件獲得 1.算法仿真效果 matlab2022a仿真結果如下&#xff08;完整代碼運行后無水印&#xff09;&#xff1a; 仿真操作…

31.軟件時序控制方式抗干擾

軟件時序控制方式扛干擾 1. 軟件時序控制抗干擾的時間邏輯2. 應用案例 1. 軟件時序控制抗干擾的時間邏輯 &#xff08;1&#xff09;將受軟件控制的功能或軟件檢測到的狀態一一羅列&#xff1b; &#xff08;2&#xff09;將其中的潛在干擾和敏感信號分開&#xff1b; &#x…

Ubuntu環境下使用uWSGI服務器【以flask應用部署為例】

0、前置內容說明 首先要知道WSGI是什么&#xff0c;關于WSGI服務器的介紹看這篇&#xff1a;WSGI&#xff08;Web Server Gateway Interface&#xff09;服務器 由于從Python 3.11開始限制了在系統級 Python 環境中使用 pip 安裝第三方包&#xff0c;以避免與系統包管理器&am…

d3_v7繪制折線圖

<!DOCTYPE html> <html><head><meta charsetutf-8><title>需求</title><script src"https://d3js.org/d3.v7.min.js"></script><style>* {margin: 0;padding: 0;}html, body {width: 100%;height: 100%;displ…

Hotspot分析(1):單細胞轉錄組識別信息基因(和基因模塊)

這一期我們介紹一個常見的&#xff0c;高分文章引用很高的一個單細胞轉錄組分析工具Hotspot&#xff0c;它可針對單細胞轉錄組數據識別有意義基因或者基因module&#xff0c;類似于聚類模塊。所謂的”informative "的基因是那些在給定度量中相鄰的細胞之間以相似的方式表達…

爬蟲準備前工作

1.Pycham的下載 網址&#xff1a;PyCharm: The only Python IDE you need 2.Python的下載 網址&#xff1a;python.org&#xff08;python3.9版本之后都可以&#xff09; 3.node.js的下載 網址&#xff1a;Node.js — 在任何地方運行 JavaScript&#xff08;版本使用18就可…

基于Springboot旅游網站系統【附源碼】

基于Springboot旅游網站系統 效果如下&#xff1a; 系統登陸頁面 系統主頁面 景點信息推薦頁面 路線詳情頁面 景點詳情頁面 確認下單頁面 景點信息管理頁面 旅游路線管理頁面 研究背景 隨著互聯網技術普及與在線旅游消費習慣的深化&#xff0c;傳統旅游服務模式面臨效率低、…

利用KMP找出模式串在目標串中所有匹配位置的起始下標

問題關鍵&#xff1a;完成首次匹配之后需要繼續進行模式匹配。 到這一步后&#xff0c;我們不能直接將j 0然后開始下一輪匹配&#xff0c;因為已經匹配過的部分&#xff08;藍色部分&#xff09;中仍然可能存在與模式串重疊的子串&#xff1a; 解決辦法&#xff1a; 找到藍…

RR(Repeatable Read)級別如何防止幻讀

在 MySQL 數據庫事務隔離級別中&#xff0c;RR&#xff08;可重復讀&#xff09; 通過 MVCC&#xff08;多版本并發控制&#xff09; 和 鎖機制 的組合策略來避免幻讀問題。 一、MVCC機制&#xff1a;快照讀與版本控制 快照讀&#xff08;Snapshot Read&#xff09; 每個事務啟…

Android運行時ART加載類和方法的過程分析

目錄 一,概述 二,ART運行時的入口 一,概述 既然ART運行時執行的都是翻譯DEX字節碼后得到的本地機器指令了&#xff0c;為什么還需要在OAT文件中包含DEX文件&#xff0c;并且將它加載到內存去呢&#xff1f;這是因為ART運行時提供了Java虛擬機接口&#xff0c;而要實現Java虛…

Javase 基礎加強 —— 02 泛型

本系列為筆者學習Javase的課堂筆記&#xff0c;視頻資源為B站黑馬程序員出品的《黑馬程序員JavaAI智能輔助編程全套視頻教程&#xff0c;java零基礎入門到大牛一套通關》&#xff0c;章節分布參考視頻教程&#xff0c;為同樣學習Javase系列課程的同學們提供參考。 01 認識泛型…

Oracle VirtualBox 在 macOS 上的詳細安裝步驟

Oracle VirtualBox 在 macOS 上的詳細安裝步驟 一、準備工作1. 系統要求2. 下載安裝包二、安裝 VirtualBox1. 掛載安裝鏡像2. 運行安裝程序3. 處理安全限制(僅限首次安裝)三、安裝擴展包(增強功能)四、配置第一個虛擬機1. 創建新虛擬機2. 分配內存3. 創建虛擬硬盤4. 加載系…

RAGFlow 接入企業微信應用實現原理剖析與最佳實踐

背景 近期有醫美行業客戶咨詢我們智能客服產品&#xff0c;期望將自己企業的產品、服務以及報價信息以企微應用的方式給到客戶進行體驗互動&#xff0c;提升企業運營效率。關于企業微信對接&#xff0c;我們分享下最佳實踐&#xff0c;拋磚引玉。效果圖如下&#xff1a; 這里也…

【心海資源】子比主題新增注冊與會員用戶展示功能模塊及實現方法

內容改寫&#xff1a; 本次分享的是子比主題頂部展示注冊用戶與會員信息的功能模塊及其實現方式。 你可以通過兩種方式啟用該功能&#xff1a; 直接在后臺進入“外觀 → 小工具”啟用該展示模塊&#xff0c;操作簡便&#xff1b;也可將提供的代碼覆蓋至子比主題目錄中&#…