一禽笑、php的歷史
1994年 Rasmus Lerdorf用Perl語(yǔ)言的創(chuàng)造,后用C重寫(xiě)
1995年 以Personal Home Page Tools(PHP Tools)為名發(fā)布PHP1和PHP2
1996年 有15000個(gè)網(wǎng)站使用PHP
1997年 Zeev Suraski 和Andi Gutmans重寫(xiě)PHP解釋器并改稱(chēng)
1998年 正式發(fā)布PHP3
1999年 成立Zend Technology公司
2000年 發(fā)布PHP4
2004年 發(fā)布PHP5
二测砂、PHP的優(yōu)點(diǎn)
1即供、語(yǔ)法簡(jiǎn)單
2感局、學(xué)習(xí)成本低
3、開(kāi)發(fā)效率高
4琐凭、跨平臺(tái)
5芽隆、開(kāi)發(fā)部署方便
6、開(kāi)源框架豐富(ThinkPHP)
7淘正、開(kāi)源CMS(內(nèi)容管理系統(tǒng))系統(tǒng)非常豐富(Joomla摆马、Wordpress【很強(qiáng)大二次開(kāi)發(fā)容易】)
8、開(kāi)源網(wǎng)站系統(tǒng)非常豐富(DiscuszX【一系列網(wǎng)站開(kāi)源系統(tǒng)(被騰訊收購(gòu))】)
三鸿吆、PHP名詞解釋
1囤采、Linux
2、Cygwin(win下模擬Linux環(huán)境)
3惩淳、Apache httpd(外部服務(wù)器)
4蕉毯、Nginx(同上,比上更快但是沒(méi)有上穩(wěn)定插件也沒(méi)有上豐富)
5思犁、MySQL(數(shù)據(jù)庫(kù))
6代虾、XAMPP(集成爆袍,快速部署開(kāi)發(fā)環(huán)境)
7华糖、Eclipse PDT(開(kāi)發(fā)環(huán)境)
8、ZendStudio(開(kāi)發(fā)環(huán)境)
9再悼、PhpStorm(將使用的開(kāi)發(fā)環(huán)境)
10学辱、FTP(傳輸協(xié)議【計(jì)算機(jī)導(dǎo)論講過(guò)的】)
11乘瓤、SSH(命令)
12环形、SCP(命令,上傳和下載文件)
四衙傀、開(kāi)發(fā)PHP所需要的環(huán)境
集成開(kāi)發(fā)環(huán)境抬吟,PHPStorm(使用JAVA開(kāi)發(fā),JAVA虛擬機(jī)運(yùn)行统抬,需要較高的硬件基礎(chǔ))火本。
軟件環(huán)境 XAMPP PhpStorm Firefox(chorme)。
五聪建、將PHP部署到服務(wù)器上
ssh root@主機(jī)地址(或者ip地址)【應(yīng)急修改bug時(shí)】
上傳本地文件到服務(wù)器:
phpStorm內(nèi)置終端:ls
傳一個(gè)密鑰文件钙畔,指定一個(gè)端口,服務(wù)器目錄
上傳多個(gè)文件:
scp -i `/certs/demos_sever_key -p 2203 -r m(傳m內(nèi)所有東西 -r) root@119.254.110.164:/opt/lampp/htdocs/
將PHP部署到SAE【新浪提供的app引擎】上:svn
先安裝:sudo apt -get install subversion
svn co 地址 (也可以自行指明目錄)
提交代碼:/opt/lampp/htdocs/myphpdomains svn ci
將PHP部署到BAE【百度提供的app引擎】上
方法同上
六妆偏、PHP語(yǔ)法基礎(chǔ)
1刃鳄、標(biāo)記符
<?php
?>[可不帶]
例子:(使用html插入php)
<code><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP tag</title>
</head>
<body>
Hello HTML
<?php
echo 'HELLO PHP';
?>
</body>
</html></code>
2盅弛、常量與變量
*如何聲明變量
$a = 10钱骂;
echo $a;
*如何聲明常量
(PHP5中可用const)
const THE_VALUE = 100;
echo THE_VALUE ;
(之前版本采用define)
define('THE_VALUE',200);
echo THE_VALUE;
【常量變量區(qū)別同c艸】
【const和define有些許區(qū)別】
3挪鹏、函數(shù)
<code><?php
function traceHelloPHP()
{
echo 'HELLO PHP
'
echo 'hello Luer
'
}
traceHelloPHP();</code>
【or】
<code>$func = 'traceHelloPHP';
$func();</code>
函數(shù)傳入?yún)?shù)
<code>function sayHelloTo($name)
{
echo 'Hello'.$name.'
';
}
sayHelloTo('ZhangSan');
sayHelloTo('LiSi');
function traceNum($a,$b)
{
echo 'a='.$a.',b='.$b.'
';
}
traceNum(2,3);</code>
【or】
<code>function traceNum($a,$b)
{
echo"a= $a,b=$b";
}
traceNum(2,3);</code>
帶返回值的函數(shù)
<code>function add($a,$b){
return $a+$b;
}
echo add(10,2).'
';</code>
4见秽、流程控制
<code>function getlevel($score){
if($score>90){
return '優(yōu)秀';
}elseif($score>80){
return '良好';
}elseif($score>70){
return '好';
}elseif($score>60){
return '可以';
}else{
return '差'讨盒;
}
echo getlevel(91);</code>
【若出現(xiàn)亂碼解取,在服務(wù)器端指明編碼方式(html)】
【好像和c艸沒(méi)什么區(qū)別】
<code>switch($score/10)
{
case 10:
case 9:
return '優(yōu)秀';
case 8:
return '良好';
case 7:
return '好';
case 6:
return '可以';
default:
return '差';
}</code>
【不加break則跳出方法,加break則跳出switch case 語(yǔ)句(繼續(xù)向下執(zhí)行)】
【好像和c艸也沒(méi)什么區(qū)別】
【若輸入85則結(jié)果為差返顺,為蝦米呢:和c艸不一樣禀苦,這里沒(méi)有轉(zhuǎn)整形啊】
<code>switch(intval($score/10))
{
case 10:
case 9:
return '優(yōu)秀';
case 8:
return '良好';
case 7:
return '好';
case 6:
return '可以';
default:
return '差';
}</code>
【使用intval進(jìn)行類(lèi)型強(qiáng)轉(zhuǎn)】
5、循環(huán)
<code><?php
for($i=0;$i<100;$i++)
{
echo 'Hello'.$i.'
';
}
$i=0
while($i<100)
{
echo 'Hello'.$i.'
';
$i++
}
$i=0;
do
{
echo 'Hello'.$i.'
';
$i++;
}while($i<100);
for($i=0;$i<100;$i++)
{
echo 'Hello'.$i.'
';
if($i==20) break;
}
for($i=0;$i<100;$i++)
{
echo 'Hello'.$i.'
';
if($i==20) continue;
echo 'run here'.$i.'
';
}</code>
【和c艸沒(méi)什么區(qū)別】
6遂鹊、php邏輯運(yùn)算
<code>function treaceNum()
{
for($i=0;$i<=100;$i++)
{
if($i%2==0)
{
echo $i.'
';
}
}
}</code>
【無(wú)非是且&&和或||非振乏!=】
【懶得記了,因?yàn)楹蚦艸真的沒(méi)有什么區(qū)別】
七秉扑、php常用功能
1慧邮、php字符串
<code>$str = 'Hello PHP';
echo $str;
echo strpos($str.'o');//查找字符所在字符串位置;
echo strpos($str.'ph');//查找子字符串梭子字符串位置;
$str = substr($str,2,3);//字符串截取,從2開(kāi)始舟陆,截取3個(gè)字符;
echo $str;//不傳長(zhǎng)度的話(huà)误澳,會(huì)一直截取到末尾;
result = str_split($str,2);
print_r($result);//分割字符串(數(shù)組要用print_r)指定分割長(zhǎng)度。
$str='HELLO PHP JAVA C# C++';
$str1 = substr($str,2);
echo $str1;
$result = explode(' ',$str);
print_r($result);//以空格分割字符數(shù)組秦躯。
$num=100;
$str2 = $str.'
objective-C '.$num;
echo $str2//字符串的連接忆谓;
$str2 = "$str
objective-C $num";字符串內(nèi)直接放入變量;</code>
【啪啪啪踱承,打臉了倡缠,和c艸的區(qū)別體現(xiàn)出來(lái)了】
2米母、php數(shù)組
<code>$arr = arry();
$arr[0] = 'Hello';
$arr[1] = 'World';
$arr[3] = '2';
$arr[4] = '3.14';</code>
用for循環(huán)來(lái)給數(shù)組賦值,省略了毡琉,懶铁瞒。
然后發(fā)現(xiàn)了不一樣的地方,我還是寫(xiě)一些桅滋。
<code>for($i=0;$i<100;$i++)
{
array_push($arr,'Item'.$i);
}
$print_r($arr);</code>
【在這里數(shù)組的聲明使用一個(gè)函數(shù)慧耍,而且不需要指明長(zhǎng)度,方便了不少丐谋,數(shù)組還可以使用字符來(lái)存儲(chǔ)數(shù)據(jù)】
PHP手冊(cè)查詢(xún)地址 php.net
$arr=arry('h'=>'Hello','w'=>'world')//數(shù)組的初始化=>清新脫俗芍碧,挺直觀嘛。
print_r($arr);
echo $arr['h']; //訪問(wèn)數(shù)組的成員号俐。
3泌豆、include與require
如何加載php文件;
file1::
<code><?php
function sayhello()
{
echo 'hello php';
}</code>
file2::
<code><?php
require 'file1.php';
sayhello();</code>
或者include 'file1.php'【有點(diǎn)像頭文件包含】吏饿;
【區(qū)別】
require:是一種依賴(lài)踪危,查找不到會(huì)提示錯(cuò)誤
include:是一種包含,僅提示警告(可以不顯示)猪落。
lib::
<code><?php
function sayhello(){
echo "hello php";
}
echo 'this is a lib file';</code>
index::
<code><?php
require 'lib.php';
require 'lib.php';</code>
【會(huì)提示錯(cuò)誤贞远,方法重復(fù)定義了兩次】
require 每次引用都會(huì)執(zhí)行一次
require_once 同一個(gè)文件只執(zhí)行一次;
三笨忌、如何聲明PHP的類(lèi)
1蓝仲、
<code>
file1::
<?php
class hello{
public function sayHello()
{echo 'hello';}
}
class desktop{
public function work()
{echo 'work';}
}
file2::
<?pho
require_once 'file1.php'
$s=new hello();
$h=new desktop;
$h->work();</code>
四、常用庫(kù)函數(shù)
1官疲、時(shí)間和日期
<code><?php
//echo time();輸出時(shí)間戳
date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s',time());//f2顯示幫助文檔</code>
2袱结、JSON格式數(shù)據(jù)的操作
[1,2,5,7,8,"HELLO",[6,7,8],{"h":"hello"}]
{"h":"hello","w":"world",[1,2,3]}
數(shù)組中可以存放對(duì)象,對(duì)象中可以存放數(shù)組
$arr = array(1,2,5,8,"hello",array('h'=>'hello','name'=>'lu'))
echo json_encode($arr)
$obj = array('h'=>'hello','w'=>'world',array(3,2,1));
echo json_encode($obj);
decode
$jsonstr = '{"h":"hello","w":"world","8":"3,2,1"}';
$obj = json_decode($jsonstr);
//print_r($obj);
//訪問(wèn)h
echo $obj->h;
3途凫、文件操作
<code>//write data
$f = @fopen('data','w');//忽略警告
if($f)
{
fwrite($f,'hello php')
fclose($f);
}
else
{
echo '創(chuàng)建文件失敗'
}
fwrite($f,'hello php');
fclose($f);</code>
<code>//read data
$f = @fopen('data','r');
$content = fgets($f);//只讀取一行
$fclose($f);
echo $content//get content
echo file_get_contents('data');</code>
4垢夹、生成圖片
<code>$ing = imagecreat(400,200);
imagecolorallocate($img,225,225,225);
imageellipse($img,200,200,50,50,imagecolorallocate($img,255,0,0));
header('content-type: image/png')
imagepng($img);</code>
5、圖片打水印實(shí)例
$img = imagecreatfromipeg('name.jpg');
imagestring($Img,2,5,5,'renjialu.com',imagecolorallocate($img,0,255,0))
header('Content-type:image/jpeg')
imagejpeg($img);
五颖榜、html表單的創(chuàng)建與提交
1棚饵、表單與php
<code>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="sever.php">
名字:<input name="name" type="text">
愛(ài)好:<input name="hobby" type="text">
<input type="submit"value="提交">
</form>
</body>
</html>
</code>
2、處理GET請(qǐng)求
//前后端通信
<code>
<body>
<form action="hello.php"method="get">
<input name="name" type="text">
<input type="submit"value="提交">
</form>
</body>
</code>
//服務(wù)器端
<?php
if(isset($_GET['name']&&$_GET['name']))
{echo 'Hello',$_GET['name'];}
else
{echo '請(qǐng)輸入名字'}
3掩完、處理post請(qǐng)求
//add
<code><form action="add.php"method="post">
a:<input type="text" name="a">
b:<input type="text" name="b">
<input type="submit"value="提交">
</form></code>
//服務(wù)器端
<code><?php
if($_POST['a']&&$_POST['b'])
{echo $_POST['a']+$_POST['b'];}
else
{echo '請(qǐng)輸入?yún)?shù)';}</code>
4噪漾、上傳文件
<code><form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交"></code>
//服務(wù)器端
<code>
<?php
$file = $_FILES['file'];
$fileName = $file['name'];
move_upload_file($file['temp_name'],$fileName);
?>