PHP光速教程
日期:2010-07-29 | 来源:redice's Blog | 作者:redice | 182 人围观 | 0 人鼓掌了! // by redice 2010.07.29// redice@163.com
为公司实习生写的PHP学习提纲,根据自己的学习及项目开发经验总结了PHP语言最核心的知识点。可以作为PHP快速入门的教程。
1 客户端脚本和服务端脚本
客户端:VBscript(对IE依赖性很强,放弃)、Javascript
服务端:ASP、PHP、Perl
JSP(服务端,非脚本)
Python(可用服务端,非脚本)
2 学习一门语言的要点/顺序
功能、特点、语法、变量、运算符、流程控制、函数、数据结构
3 学习服务端语言的要点
数据输入输出、数据库操作、session和cookie的使用
4 PHP的功能
支持与众多服务器软件(Apache,IIS ISAPI/FastCGI,Nginx等)结合进行数据处理
5 PHP的特点
跨平台、内置函数库非常丰富(写得少做得多)、语法简洁、参考资料非常多
6 PHP的语法
// 这是注释行,注释行以//开始
phpinfo(); // 语句以;结束
?>
7 PHP的变量
松散类型,自动声明,强制转换
PHP变量以$开头(从钱开始,很实惠的一种语言)
$txt = "Hello World!"; // 字符串用""包围,转义",\
$number = 16;
?>
松散类型语言:VB,VBscript,ASP,PHP,Python
强类型语言:C(C++),JSP
8 PHP的运算符
算术运算:+,-,*,/,%(取余),++(自增1),--(自减1)
赋值运算:=,+=,-=,*=,/=,.=,%=
比较运算符:==,===,!=,>,=,
逻辑运算符:&&,||,!
其它运算符:.(字符串连接)
$i=10;
$i+=1;
echo $i; // echo 数据输出函数,还可以用print
echo ++$i; // ?
echo $i++; // ?
?>
*两等号与三等号
== 只比较值是否相等,会将两侧值进行类型转换
=== 比较值和类型是否相同,不会进行类型转换,类型和值都相同才为真
例如:
$a="2"; // 字串型2
$b=2; // 数值型2
$a==$b, 是对的,都是2
$a===$b,是不对的,因为$a是字符型$b是数值型,值虽一样,但类型不一样
9 PHP流程控制
顺序语句
分支语句:if else,Switch
// if else语句
if (condition)
code to be executed if condition is true;
elseif (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;
// switch语句
switch (expression)
{
case label1:
code to be executed if expression = label1;
break;
case label2:
code to be executed if expression = label2;
break;
default:
code to be executed
if expression is different
from both label1 and label2;
}
循环语句:while,for,foreach
// while循环
while (condition)
code to be executed;
// for循环
for (initialization; condition; increment)
{
code to be executed;
}
// foreach循环,遍历数组
foreach (array as value)
{
code to be executed;
}
// foreach循环的示例
$arr=array("one", "two", "three");
foreach ($arr as $value)
{
echo "Value: " . $value . "
";
}
?>
*结束PHP程序的执行:
exit($str); // 结束PHP执行并输出$str
die(); // 仅结束PHP执行
10 PHP函数
内置函数:
http://php.chinaunix.net/manual/en/
(1)数据输出:echo,print,print_r(输出数组)
(2)字符串操作:
// 返回$string的长度
int strlen ( string $string )
// 删除$str两端的空格或其它字符
string trim ( string $str [, string $charlist ] )
$str=" xiao ping ni hao! ";
echo trim($str);
echo "
";
echo trim($str," x!")
?>
// 字符串转大小写
string strtolower ( string $str )
string strtoupper ( string $string )
// 寻找字串
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
返回值:返回找到的子串的位置,没有找到返回false
注意:
如果子串$needle在$haystack串首出现将返回0
因此判断是否找到字串应该用===而不能用==
$str="redicecn.com";
// 下面是错误的判断
if(strpos($str,"redice")==false)
{
echo "没有找到子串!";
}
else
{
echo "找到了子串!";
}
?>
// 字符串截取
string substr ( string $string , int $start [, int $length ] )
// 字符串替换
string str_replace ( mixed $search , mixed $replace , mixed $subject)
string str_ireplace ( mixed $search , mixed $replace, mixed $subject) // 不区分大小写
(3)时间日期:
// time() 函数返回当前时间的 Unix 时间戳
time(void)
// date() 函数格式化一个本地时间/日期
// 默认是格林威治时区
date(format,timestamp)
// 设置为东8区
date_default_timezone_set('Etc/GMT-8');
echo date("Y-m-d H:i:s",time());
?>
自定义函数:
$sitename="电子工程社区";
function welcom($user)
{
global $sitename; // 引用全局变量
// 返回值
return $user.",欢迎您的光临".$sitename."!";
}
// 函数调用
echo welcom("redice");
?>
11 PHP的数据结构
数组
// 数值数组的定义
(1) 自动分配key
$names = array("芙蓉姐姐","凤姐","犀利哥");
(2) 手动分配key
$names[0]="芙蓉姐姐";
$names[1]="凤姐";
$names[2]="犀利哥";
// 关联数组的定义
$ages = array("芙蓉姐姐"=>32, "凤姐"=>29, "犀利哥"=>42);
也可以这样
$ages["芙蓉姐姐"] = 32;
$ages["凤姐"] = 29;
$ages["犀利哥"] = 42;
// 多维数组
$students = array
(
"0911120688"=>array
(
"姓名"=>"齐鹏",
"年龄"=>24,
"性别"=>"男"
),
"0911120699"=>array
(
"姓名"=>"宋玉伟",
"年龄"=>22,
"性别"=>"女"
),
"0911120670"=>array
(
"姓名"=>"陈素芳",
"年龄"=>22,
"性别"=>"女"
)
);
12 PHP输入(获取客户端输入)
(1)$_GET 变量
$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。
(2)$_POST 变量
$_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值。
(3)$_REQUEST 变量
PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。
13 SESSION和COOKIE的使用
(1)SESSION
保存在服务端,服务器通过COOKIE中的SESSIONID判断,常用来进行身份验证。
使用SESSION前需要用session_start()启动会话,
由于session_start()需要修改HTTP应答报文的COOKIE头(存SESSIONID),
因此session_start()必须在HTTP应答正文输出之前被调用。
// 创建session
session_start();
$_SESSION['user']="redice";
?>
// 读取session
session_start();
echo $_SESSION['user'];
?>
删除SESSION
unset($_SESSION['user']);
?>
或
session_destroy(); // 将删除所有的session
?>
(2)COOKIE
保存在客户端,随请求报文一起被发送到服务端,
常用来存储用户自定义设置、浏览记录等与安全无关的数据。
*COOKIE在客户端存储,可被用户修改,因此不能存储敏感数据。
// 创建cookie
setcookie(name, value, expire);
setcookie()也需要修改HTTP应答头,因此需要在输出任何正文之前被调用
setcookie("user", "redice", time()+3600);
?>
// 读取cookie
echo $_COOKIE["user"];
?>
// 删除cookie
// 设置立即过期,客户端(浏览器)会自动删除
setcookie("user", "", time()-3600);
?>
14 数据库操作
操作流程:
连接数据库->选择库->设置采用的字符集
->操作数据(查询,更新,删除,插入)->关闭数据库
$conn=0;
$conn = mysql_connect("localhost","root","redice2009");
if (!$conn)
{
die("不能打开数据库连接,错误: " . mysql_error());
}
// 选择数据库
mysql_select_db("thymall", $conn);
// 设置mysql数据库输出数据的字符集
mysql_query("set names 'gbk'");
$sql="select * from thym_goods LIMIT 5";
// 执行查询
$result=mysql_query($sql,$conn);
// 遍历查询结果
while($result && $row=mysql_fetch_array($result))
{
}
// 关闭数据库
mysql_close($conn);
?>
15 其它
良好的程序风格:缩进,注释
开发工具的选取原则:代码关键字高亮,自动完成

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

在PHP中,trait適用於需要方法復用但不適合使用繼承的情況。 1)trait允許在類中復用方法,避免多重繼承複雜性。 2)使用trait時需注意方法衝突,可通過insteadof和as關鍵字解決。 3)應避免過度使用trait,保持其單一職責,以優化性能和提高代碼可維護性。

依賴注入容器(DIC)是一種管理和提供對象依賴關係的工具,用於PHP項目中。 DIC的主要好處包括:1.解耦,使組件獨立,代碼易維護和測試;2.靈活性,易替換或修改依賴關係;3.可測試性,方便注入mock對象進行單元測試。

SplFixedArray在PHP中是一種固定大小的數組,適用於需要高性能和低內存使用量的場景。 1)它在創建時需指定大小,避免動態調整帶來的開銷。 2)基於C語言數組,直接操作內存,訪問速度快。 3)適合大規模數據處理和內存敏感環境,但需謹慎使用,因其大小固定。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

JavaScript中處理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。 1.??返回第一個非null或非undefined的操作數。 2.??=將變量賦值為右操作數的值,但前提是該變量為null或undefined。這些操作符簡化了代碼邏輯,提高了可讀性和性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器