第一篇:php學習總結
調試/*………*/ //…….#..........插入時考慮清楚字段類型避免插入后出現缺值,亂碼
@ 屏蔽錯誤or die 條件顯示
以前學習php類的總結:
1.php中不能重載,但是能用子類覆蓋父類的方法名稱來實現新的重載
1.1 在子類中調用父類的覆蓋部分可以使用 父類名稱::方法名稱();
2.final 只能定義類和方法,不能使用final定義成員屬性,因為final是常量的意思,在php里定義常量使用的是define函數
2.1 final關鍵字標記的類不能被繼承
2.2 final關鍵字標記的方法不能被子類重寫
3.const是一個定義常量的關鍵字,在php中定義常量使用的是define()函數,但是在類里定義常量使用的是“const” 這個關鍵字
3.1在程序中不能修改它的值。
3.2 訪問const 修飾的成員屬性要使用類名,在本類的方法里使用“self”關鍵字,但不使用“$”符號,也不能使用對象來訪問。
4.static關鍵字可以描述類中的成員屬性和成員方法
4.1 static 的成員屬于類,而不屬于任何對象,4.2 static的成員是在類第一次被加載的時候分配的空間,其他類無法訪問的,只對類的實例共享,能一定程度對類該成員形成保護
4.3 靜態成員放到了“初始化靜態段”,在類第一次加載的時候放入的,可以讓堆內存里的每個對象共享。所以在靜態方法里,可以使用這個方法所在的類的“類名”,也可以使用“self”來訪問其他靜態成員。“self”代表這個靜態方法所在的類。
4.3.1 在類里的靜態方法是不能訪問類的非靜態成員的。
4.3.2 在類的非靜態方法里可以訪問靜態成員:”self:成員屬性“;
4.4類的靜態變量,非常類似全局變量,能夠被所有類的實例共享,類的靜態方法也是一樣,類似于全局函數。
4.5 在類內函數訪問靜態變量時前面加self::靜態函數
4.6 靜態變量可以在類外直接訪問,訪問方法是類名::靜態變量
4.7 靜態函數可以在類外直接訪問,訪問方式是類名::靜態函數
4.8 在類內靜態函數訪問另一個靜態函數時使用 類名::靜態函數名
4.8.1 靜態函數在類內訪問靜態變量時,訪問方式是類名::靜態變量
4.8.2 靜態函數在類內訪問靜態變量時,訪問方式除了是類名::靜態變量外,還可以使用self::靜態變量
4.9 在類內靜態函數訪問另一個靜態函數時除了使用 類名::靜態函數名外,還可以使用self::靜態函數名,也可以直接調用靜態函數
4.10 靜態函數內不能訪問非靜態變量
4.11 在類內靜態函數不能使用$this->非靜態函數名訪問非靜態函數,可以使用self::非靜態函數名
4.12
5.類里的”$this“,在php里面提供了一個本對象的引用$this,每個對象里面都有一個對象的引用$this來代表這個對象,完成對象內部成員的調用。
5.1 $this 就是對象內部代表這個對象的引用。
6.類里“self”,self 和$this相似,只不過self是代表這個靜態方法所在的類,所以在靜態方法里,可以使用這個方法所在的類的”類名“,也可以使用“self”來訪問其他的靜態成員,通常使用后者”self::成員屬性“。
7.類里”__“開頭的函數名
7.1類里”__“開頭的函數名都是在某一時刻不同情況下自動調用執行的方法。
7.2__toString()方法也是自動被調用,是直接輸出對象引用時自動調用的。比如“$p = new Person()”,直接用echo輸出$p會產生錯誤,如果在類里定義了__toString()方法,再用echo直接輸出對象引用的時候就不會產生錯誤了
8.對象串行化
8.1 __sleep()方法,在對象串行化的時候,會調用一個__sleep()方法來完成一些睡前的事情,__sleep()函數不接受任何參數,但返回一個數組,其中包含需要串行化的屬性。未被包含的屬性降在串行化時被忽略,如果沒有__sleep()方法,php將保存所以屬性.8.2 __wakeup()方法,在重新醒來時,即由二進制串重新組成一個對象的時候,則會自動調用__wakeup(),做一些對象醒來就要做的動作。
8.3 有時你可能需要一個對象在反串行化后立即執行.為了這樣的目的,PHP會自動尋找__sleep和__wakeup方法.9.protected 成員能被同個類中的所有方法和繼承出的類的中所有方法訪問到,不能被父類的實例直接訪問。protected and public 可以動態綁定
10.private 大部分private屬性仍然可以被外部代碼共享.解決方法是用一對public方法,一個是get(獲取屬性的值),另一個是set(設置屬性的值).10.1private 不可以動態綁定。Private成員只存在于它們所在的類內部.不像public和protected成員那樣,PHP模擬靜態綁定.10.2 什么時候用到private?private成員只有當你不想讓子類繼承改變或特殊化父類的行為時才用到,這種情況比你想像的要少,通常來說,一個好的對象分層結構應當允許絕大多數功能被子類特殊化,改進,或改變—這是面向對象編程的基礎之一。一定的情況下需要private方法或變量,例如當你確信你不想允許子類改變父類中的某個特定的部份。
11.抽象類:抽象方法是就像子類中一般的方法的占位符(占個地方但不起作用),它與一般方法不同—沒有任何代碼.如果類中存在一個或更多抽象方法, 那么這個類就成了抽象類.你不能實例化抽象類.你必須繼承它們,然后實例化子類.你也可以把抽象類看成是子類的一個模板.如果你覆寫所有的抽象方法, 子類就變成一個普通的類.如果沒有覆寫所有方法, 子類仍是抽象的.如果一個類中中包含有抽象方法(哪怕只有一個), 你必須聲明這個類是抽象的, 在class關鍵字前加上abstract.聲明抽象方法的語法與聲明一般方法不同.抽象方法的沒有像一般方法那樣包含在大括號{}中的主體部份,并用分號;來結束.12.接口:如果你建立了一個只有抽象方法的類,你就定義了一個接口(interface).為了說明這種情況, PHP中有interface 和implements關鍵字.你可以用interface來代替抽象類, 用implements來代替extends來說明你的類定義或使用一個接口.例如, 你可以寫一個myClass implements myIterface.這兩種方法可以依個人偏愛來選擇.12.1 如果接口中出現非抽象方法.會報錯
12.2 接口中的方法默認是public 型的.其它類型的修飾符,不能修飾接口中的抽象方法.12.3 即使接口中所有的方法都是抽象方法,也不能使用 abstract 修飾.也不能用final
12.4 即使接口中所有的方法都是抽象方法,在接口中,可以聲明靜態方法.12.5 在接口中可以有常量,e.g.:
interfaceUser{
const MAX_GRADE = 99;
function getName();
function setName($_name);
}
?>
13.Namespace關鍵字給一塊代碼命名.在這個代碼塊外部,腳本必須用操作符::加上命名空間的名稱來引用這個代碼塊.引用靜態的類成員也是用相同的方法.在命名空間內代碼不需要聲明命名空間, 它本身就是默認的.這種方法比添加前綴的方法好.你的代碼可由此變得更加緊湊和可讀.你可能想知道是否可以建立分層的(嵌套的)命名空間.答案是不可以.但你可以在命名空間名稱后加上冒號, 你可以再次調用在名稱中不包含冒號的變量,函數和類.命名空間允許存在冒號,只要不是第一個字符和最后一個字符或接著另一個冒號.命名空間的名稱中的冒號對于PHP來說沒有任何意義, 但如果你用他們來區分邏輯上的區塊, 他們可以很好地說明你的代碼中的父子(parent-child)關系.14.__toString()打印對象會調用它的__toString方法.15.不能實例化的類
//
//當__construct()為public時可以實例化
class A{
private function __construct(){}
}
$a = new A();//fail
?>
15.1
//static的方法留給外部訪問.
class A{
private function __construct(){}
static function getClassA(){
return “這里是后門,可以通過這里進入類內部..”;
}
}
echo A::getClassA();
?>
15.2
//不能用new實例化的類.
//static的方法留給外部訪問.
//在方法內部返回實例.
class A{
private function __construct(){
echo “this is construction
n”;
}
static function getClassA(){
$a = new A();
return $a;
}
}
// 看到這里確實返回的是 A 的實例.但不是同一個對象.$a1 = A::getClassA();
$a2 = A::getClassA();
echo “$a1 的類是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){
echo “
$a1 $a2 指向同一對象.”;
}else{
echo “
$a1 $a2 不是一個對象.”;
}
//this is construction
//this is construction
//$a1 的類是 A , $a2 是 A
//$a1 $a2 不是一個對象.?>
15.3
//不能用new實例化的類.
//static的方法留給外部訪問.
//在方法內部返回實例.
//定義靜態屬性保證這個實例能被靜態方法調用.
//增加判斷部分.
class A{
private static $a = null;
private function __construct(){}
static function getClassA(){
if(null == self::$a){
self::$a = new A();
}
return self::$a;
}
}
// 看到這里確實返回的是 A 的實例.但不是同一個對象.$a1 = A::getClassA();
$a2 = A::getClassA();
echo “$a1 的類是 ”.get_class($a1).“ , $a2 是 ”.get_class($a1);if($a1 === $a2){
echo “
$a1 $a2 指向同一對象.”;
}else{
echo “
$a1 $a2 不是一個對象.”;
}
//$a1 的類是 A , $a2 是 A
//$a1 $a2 指向同一對象.?>
第二篇:PHP學習推薦
PHP學習推薦
PHP,是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,現在越來越多的人加入到了php的大家庭中,其中很多人只是淺嘗輒止,為何會如此呢?最大的障礙莫過于學習的過程枯燥乏味,從而失去學習興趣,那么小編就自己的經驗來說說怎樣學習php吧。
學習方法之視頻教程
相對于讀書來說,我更喜歡看視頻學習,可能小編我對影像比文字記憶更加深刻吧。每看完一個視頻教程,我都會閉上眼睛休息一會,把剛才看的內容消化消化,然后再開始練習剛才看過的內容,盡可能不邊看邊做,因為這樣學的快同樣也忘得快,如果實在想不起來的話,可以再打開教程看一遍,切記不可囫圇吞棗,好高騖遠,要穩扎穩打,把你看過的教程切切實實的記在心里。只有一步一個腳印,你的學習之路才能走的更遠,否則的話,你走的越遠,越會覺的道路是如此艱辛,或許你就會放棄學習。那么都有哪些視頻教程能幫我們學習php呢,小編我就為大家介紹幾個吧:
php100
LAMP兄弟連
李炎恢的php
學習方法之看書: 1.《PHP與MySQL程序設計(第4版)》
2.《PHP Web 2.0 開發實戰》
3.《PHP高級程序設計:模式、框架與測試》
4.《PHP 5 高級應用開發實踐》
5.《細說php》
學習過程中不要死記語法,要多動手,多練習,當你遇到問題的時候,首先嘗試自己解決。多用google,baidu,網絡是一個大知識庫,是最好的老師,你遇到的問題,別人也遇到過,多去搜索一下吧.多閱讀別人的源代碼,要看懂別人的設計思想,不斷融為已用.
第三篇:PHP學習總結的一些經驗
其實我也是一樣很新的新手,上PHP100學習視頻并在論壇里學習其實也就是一個月前的事.雖然早在8月份花過一個星期看完w3school的PHP教 程,了解了許多PHP知識.但始終是缺乏一個與眾多朋友學習和交流的平臺,所以一下子在幾周后又把PHP又忘得七七八八了,有幸在10月尾了解到了 PHP100視頻和論壇,不僅可以系統地學習下PHP,更可以和很多朋友一起學習成長這更是件好事.在php100視頻中學到了許多,而 論壇中看帖和回帖也更讓我鞏固了學習的知識并讓我學到了很多,這不僅不會讓我又把PHP知識快速忘記(因為工作中用是ASP,而PHP不會在工作中用,所 以忘得快),反而在取得進步的同時,我也能幫助一些人,這也是一樣是學習勝利的過程,我喜歡并享受其中.以下是我上論壇以來的回復總結,將不斷持續總結.希望有利于與我一樣的新手一起成長.首先來個,題前語:
任何的學習,都需要自信,再新的新手也應該拋棄心中的恐懼,有時關鍵在于你心平下來,踏入學習后,你將慢慢化開迷惑,獲得信心,贏取自信!讓我們共同進步.----------
==========
Undefined index問題
是運行的時候出現類似:Notice: Undefined index: action in D:wampwww.tmdps.cn/read.php?tid=15843&page=1#138857
是 php 配置的事情
這個錯誤是因為 php 頁面中的變量沒有初始化而導致的!
可以通過設置PHP.INI搞好,也可以在變量前面 加上一個 @ 就可以解決這個地方的問題了!
如這里指示第三行
Notice: Undefined index: action in D:wampwww.tmdps.cn/2009/0617/6463.php
----------
==========
遇到頁面明確提示你錯誤的,并有顯示如何錯的,建議先把語句復制部分重點詞句或全部語句到百度或
google,更快速讓在你排查錯誤找到方法.其實這也是一種高效有益的學習方法,畢竟在工作中,遇到些沒
遇過的新問題,有時都需要借助網上的資源給自己靈感和助力,本人就一天不下幾十次用百度搜索.如程序中遇到諸如含提示:
顯示的錯誤為:
Parse error: syntax error, unexpected $end in D:wampwwwtestlist.php on line 21
那么你就可以把 syntax error, unexpected $end 作為關鍵詞到百度搜索,那么你即刻可以得到助力甚
至答案.以上那句舉例的錯誤是因為:短標簽沒有打開.解決方法是打開php.ini把short_open_tag短標簽
打開,重啟服務即可
----------
==========
提示的時候,有時順便把代碼帖上帖子是必要的,這樣才能快速地在別人的幫助下問題得到解決
----------
==========
對單引號和雙引號有迷惑,大家可以看這篇文章解下惑:
----------
==========
在調試程序時,經常要用到echo 你的sql語句來,檢查傳值后,sql變成了什么樣的情況,以便排查錯誤.----------
==========
向數據庫表插入數據
INSERT INTO 語句用于向數據庫表添加新紀錄。
語法
INSERT INTO table_name VALUES(value1, value2,....)--此種情況是需要按你表中所有字段的順
序全部value填上!
您還可以規定希望在其中插入數據的列:
INSERT INTO table_name(column1, column2,...)VALUES(value1, value2,....)--張老師明確建
議用此種方法!
----------
==========
有人疑惑,$_POST或$GET取得時的引號問題:其實是要不要引號,單引號或雙引號都是沒有問題的.如, $_POST[name]和$_POST['name']和$_POST[“name”]都是在windows下一樣的,在linux下情況具體沒
用過,不知道,還望高手告知.----------
==========
針對多數人的留言板課程中許多問題(如,insert into存不進數據問題)的總結:
1.檢查你數據庫表的結構是否正確,如id是否設為自增
2.insert into語句是否正確,如單詞是否正確,insert into...values...3.是否將`(反斜點,在1鍵前)號和'(引號)是否使用位置正確,正確的方法是:`應該放在表和字段邊,而'
是放在字符串型(或者說是非數字型)的值邊上
4.檢查你的各語句,是否在結尾將分號(;)正確結束
5.檢查你的submit表單項的name值是否你判斷的取值,如
value=“提交”>時,你的判斷是否提交應是 if($_POST[submit]){...};當你的是
type=“submit” name=“othername” value=“提交”>時,你的判斷是否提交應是 if($_POST
[othername]){...}
6.檢查你的$_POST是否大寫,當你寫成$_post是不行的,因為$_GET,$_POST等,都是PHP系統環境的硬性用
法
7.用echo 輸出你的sql檢查傳值情況
8.檢查你的短標簽是否打開
9.注意你的method是get還是post
10.檢查你的表單相關單詞或引號是否書寫正確.很多莫名其妙的問題,多是細節問題.要小心查對才能看
出來.----------
sql語句中表名和字段名在windows的情況下是可以不加小斜點(鍵盤左上角1鍵前的那個點鍵)的,但聽說
在linux中不加會引出些問題,兼容的寫法是有小斜點.如:windows下:
$sql=“select * from table ”
和
$sql=“select * from `table` ”
是效果一樣的再次重點提示是:
`(反斜點,在1鍵前)號和'(引號)使用位置,正確的方法是:`應該放在表和字段邊,而'是放在字符串型(或
者說是非數字型)的值邊
----------
==========
php100第十三講的page.PHP中的翻頁顯示信息有問題的解決方法:
因為頁面沒有取值到URL值的page,所以在函數內的page會一直是1,所以會一直是第1頁的數據
解決方法,就是在調用函數前把page取得就好了!函數里會把取到的page值作為全局變量傳入函數使用的了!
include(“conn.php”);
$nump=mysql_query(“SELECT * FROM `test`”);
$total=mysql_num_rows($nump);
//調用pageft(),每頁顯示10條信息(使用默認的20時,可以省略此參數),使用本頁URL(默認,所
以省略掉)。
$page=$_GET[page];//------------------------------在這里加入這行就OK了!
_PAGEFT($total,5);
echo $pagenav;
$query=mysql_query(“SELECT * FROM `test` limit $firstcount,$displaypg ”);//---見下面 while($row=mysql_fetch_array($query)){
echo “
”.$row[name].“ | ”.$row[sex];
}
以上的調試方法,其實你只要學下張老師把sql語句輸出來看下,你就知道是怎么回事了!
echo $sql=“SELECT * FROM `test` limit $firstcount,$displaypg ”;
$result=mysql_query($sql);
----------
==========
分頁有問題的朋友,不妨看下如下:
關于分頁,這有一篇論壇朋友的學習心得,學習下,你也許有所得:
另有一篇本人轉發上去的分頁講解:
----------
==========
關于:mysql_fetch_array
mysql_fetch_array 調用一次會把指針指向的記錄放入數據,并指向下一條記錄
======================....回復的太多了,總結又需較多時間,暫時總結到此,總結未完,待續.....
第四篇:php mysql學習總結剖析
php 字符串
反引號里面的字符必須是命令 如`pwd` 是查看當前目錄
轉移字符:
符號
含義
”
雙引號
反斜線
n
換行
t
跳位(Tab)
常量和變量 _FILE_ 這個默認常量是php程序文件名 _LINE_ 這個默認常量是php程序行數 E_ERROR 這個常量指到最近的錯誤處 E_WARNING 這個常量指到最近的警告處 E_PARSE 本常量為解析語法有何潛在問題處 自定義常量define(“
“,”
“);第一空格為常量,第二個為定義 或
define(‘
‘,);同上
有$為變量,無為常量 object為類變量,如 class foo{ function do-foo(){ echo”Doing foo”;} } $bar=new foo;
//建立變量,其他語言有(),php語言沒有。// $bar->do-foo();
//調用變量的方式。//->為調用類函數用的符號
變量區分大小寫
Php變量可以不用定義直接使用。局部變量和全局變量的區別見第二章,第21分鐘處圖。
全局變量必須用$GLOBALS數組和global聲明。配置文件的globals函數須打開
是什么????
$PHP_SELF
//php文件名,全局變量 echo $GLOBALS[“PHP_SELF”];或 globals $PHP_SELF;不能echo $PHP_SELF;
函數不區分大小寫
靜態變量static variable
老語法$foo直接用
新語法$_GET[‘foo’]
$_POST[‘foo’]
$_SESSION[‘foo’]
位運算符:
&與
|或
~非
^異或
<< 向左移位乘法
>> 向右移位除法 邏輯運算:
&& 而且AND
||或者OR
Xor異或
!不Not
符號
意義 $
變量
&
變量的地址(加在變量前)->
類的方法或屬性 =>
數組的元素值
? :
三元運算符
數組
數組的下標可以是整數,也可以是字符串
如$user[0]=”張三”;
$user[‘zs’]=”張三”;
$user[“zs”]=”張三”;或$user=array(“張三”,//下標0
echo $user[0];‘is’=>”李四”,//下標is
echo $user[is];或echo $user[‘is’];“ww”=>”王五”
//下標ww);
echo sizeof($user);
//記錄數
多維數組 $user=array(array(‘張三’,88), array(‘李四’,95), array(‘王五’,99));函數
函數不區分大小寫 函數原型:
返回類型 函數名稱(類型 參數1, 類型 參數2…..);
數學函數
number abs(number)取絕對值|x| float sin(float)
正弦計算sin(x)float cos(float)
余弦計算cos(x)float sqrt(float)
開平方根計算 float log(float)
自然對數計算lnx float log10(float)
lgx float exp(float)
e的x次方
float pow(float x,float y)
x的y次方
double pi()
圓周率
void srand(int)
配置隨機種子
int rand([int min],[int max])
取得隨機數
string strtolower(string str)
字符串全轉為小寫 string strtoupper(string str)
字符串全轉換為大寫 string trim(string str)
截去字符串首尾的空格 string substr(stringstring,int start,int[length])
取子串
下標從0開始。從第start位取出length個字符,start為負數,從尾端算起,length為負數表示取倒數length個字符。第三章第七分鐘 int strlen(string str)取得字符串長度
int strpos(string母串,string待查字符,int[offset])
尋找字符串中的某個字符最先出處 int strcmp(string str1,string str2)字符串比較
string md5(string str)計算字符串的MD5哈希值 fopen(“C: mpa.txt”,”r”);fopen(http://www.tmdps.cnmit
//提交,缺省自動提交 set autocommit=0
//取消自動提交 rollback
//回滾
事物可以用start transaction定義
有些語句自動提交,無法回滾,如DDL語句 save point //回滾點 鎖
lock tables 表名[read][write], 表名[read][write],… 解鎖
unlock tables
fulltext(title,body)
//在標題和主體上建立全文索引
select * from articles where match(title,match)against(‘database’);
select * from articles where match(title,match)
against(‘+mysql-yoursql’ in boolean mode);
包含mysql不包含yoursql 邏輯全文索引 against:匹配串:
apple banana
//找至少包含上面詞中的一個的記錄行 +apple+juice
//兩個詞均被包含在內
+apple macintosh
//包含詞”apple”,但是如果同時包含”macintosh”,它的排列將更高一點 + apple-macintosh
//包含”apple”但不包含” macintosh”
“some words”
//可以包含”some words of wisdom”但不是”some noice words”
grant
//授權
grant select,insert,update,delete on *.* to ‘test_user’@’%’ identified by ‘123’;%
//任何主機
*.*
//任何數據庫上的任何對象,*表示任何 123
//密碼
test_user
//用戶名
grant all privileges on *.* to admin@localhost identified by ‘123’ with grant option;
//創建本地的完全超級用戶”admin,口令’123’” all privileges //完全的權限
with grant option
//授權給其他用戶
刪除用戶
revoke all on *.* from ‘test_user’@ localhost;revoke all
//收回所有權限 flush privileges
//刷新內存授權表
delete from user where user=’test_user’;
// 刪除用戶
delete from user where host=’localhost’ and user=’’;
//刪除匿名用戶
mysqladmin-uroot password 123
//添加密碼123 mysqladmin –uroot-p123 password 456
或
set password for root=password(“456”);
或
update user set password=password(‘456’)where user=’root’;
//再改密碼為456 mysqladmin –uroot –p456 password’’
optimize table 表1,表2…;
//mysql優化
load data infile ‘路徑’ into table teacher;
或 mysqlimport school 路徑(如C:/a/b.txt)
//導入
mysqldump –opt school > school_2004_9.sql
//將數據庫school中的表全備份到school_2004_9.sql文本文件
mysqldump –opt school teacher student > school_2004_9.sql //僅備份表teacher和student mysqldump –databases school test > school_2004_9.sql
//備份多個數據庫
source school_2004_9.sql;
//從備份文件恢復數據
select * from emp limit(2,5);
//查第3到第7號員工的信息
select * from emp order by sal limit 0,5;= select * from emp order by sal limit 5;
mysql_data_seek(resource,int row_number)將指定的結果標識所關聯的mysql結果內部的行指針移動到指定的行號。接著用 mysql_fetch_row()將返回那一行,row_num從0開始
if(!($supername==$supervisor)||!($superpass==$superpsw))//如果用戶名和密碼有一個錯
action='$php_self’
//自身執行
相對路徑是:../(表示當前文件的上一級目錄);../../(表示當前文件的上一級目錄的再上一級目錄);./(表是當前目錄);/(表示根目錄)
$result=mysql_query(“update vote set $select_result='{$number}',total='{$total}' where id=$id”,$db);//當用$select_result表示某個字段(如result1到result9)傳遞$number,值等可用此表示法(當字段為變量)
路徑:
$tempdir = str_replace(“",”/“,substr(dirname(__FILE__),0,-6));//這樣做可以避免在虛擬空間站找不到路徑的問題,require $tempdir.”/include/config.inc.php";
解決亂碼
1選定代碼片段
2選定修改----頁面屬性----標題/編碼 3選擇編碼類型
4重新載入(這步不能省)
不懂 可直接用教程中文件名直接在百度提問,肯定有人和我學一樣的東西
第五篇:快速學習php
Php參考手冊介紹
html css 試題
試題1: 請編寫如下一個html頁面
試題2: 請使用(div+css)盒子經典布局編寫如下界面
試題3: 請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關函數對一個url【http://www.tmdps.cn
(2)PHP函數
PHP函數的基本介紹、如何自定義函數、PHP頁面調用函數、require()、require_once()、include()和include_once()的區別、從內存分析PHP函數調用過程、函數使用需要注意的細節、函數值傳遞和引用傳遞的區別。
函數是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎,掌握好函數可以提高代碼的復用性、可讀性和可維護性。
(3)數組、排序和查找
數組的基本概念、數組的引用方式、數組引用陷阱、與PHP數組相關的函數(count、is_array、print_r、explode等)遍歷數組的三種方式、刪除數組元素和數組運算符、數組使用細節總結、內部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數組介紹和使用。
依據我的經驗,我們去找工作的時候,一定會一道關于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數。在項目開發中,數組是銜接變量和函數的重要數據類型,在MVC開發中,往往需在控制器中將數組分配給視圖去顯示,在算法中,數組也是變化最為靈活的。
(4)面向對象編程
面向對象編程基本概念、類和對象的關系、如何定義類、成員屬性(變量)、如何創建對象實例及如何訪問對象屬性、對象在內存中存在的形式、棧、堆、全局區、常量區和代碼區的關系、成員方法(函數)及使用細節、構造方法(函數)、默認構造方法(函數)、this的基本概念和使用、析構方法(函數)、PHP的對象垃圾回收器、靜態變量(類變量)的概念和使用、靜態方法(類方法)的概念和使用、面向對象編程的三大特征介紹、面向對象編程-封裝、面向對象編程-繼承、面向對象編程-多態、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術函數(__set __get __construct __destruct __call等)和魔術常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區別、關鍵字final的使用、常量關鍵字const 的作用和使用注意事項、面向對象編程之強大的反射機制、面向對象編程之動態代理。
面向對象編程已經成為PHP編程的主流,面向對象編程讓程序變得更加強大和靈活,更利于項目的開發和維護。關于面向對象編程 在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向對象思想,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設置頂級異常處理器、異常使用的規則。
在編寫php web 應用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業,也為安全風險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預定義超全局數組
預定義超全局數組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數據存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區別。
Cookie(小甜餅)是客戶端技術,服務器把每個用戶的數據以cookie的形式 寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶著各自的數據去。
Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用 戶的瀏覽器創建一個其獨享的session文件,當用戶再去訪問服務器中的其它web資源時,可以從用戶各自的session 中取出數據為用戶服務。Session和Cookie是最重要的用戶行為跟蹤技術,尤其是電商,sns項目中運用廣泛,因此是我們學習的重點和難點,也是面試筆試的重點。關于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數匯總介紹、最常用的13個文件函數、使用文件完成網站計數器、文件上傳下載操作-mini版音樂共享網、無限級文件掃描器。
文件最主要的作用就是保存數據,它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節要求同學們掌握文件的各種操作和上傳下載,動態創建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發非常重要。
(9)PHP繪圖技術
php繪圖坐標系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數、繪圖技術的實際運用—人口分布餅狀統計圖、專業的報表開發--JpGraph、JpGraph的安裝和配置、JpGraph實際應用-網民支持情況統計圖、JpGraph中文亂碼處理。
如果你使用過財務軟件,那你一定看見過各種對財務數據進行統計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態顯示數據。而這些圖表的顯 示都要使用到PHP的繪圖技術,繪圖技術要求熟練的使用PHP的繪圖函數完成項目的需求。能開發一些統計圖,非常有實用價值。比如:
推薦學習傳智播客 php視頻教程
下載地址 http://php.itcast.cn
如何檢驗自己的學習效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學到還不錯。
練習1: 簡述echo(),print(),print_r()的區別?
練習2: 說出PHP的超級全局變量數組,共九種
練習3: 如何在一個php函數中使用具有全局屬性的變量,說出兩種方式
練習4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績取掉一個最高分,去掉一個最低分,剩下的6個分數的平均分就是最后得分。使用一維數組實現打分功能。
4.2.請把打最高分的評委和最低分的評委找出來。4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習5: include和require都能把另外一個文件包含到當前文件中,他們有什么區別?Include和include_once又有什么區別?
練習6: 寫出一個能創建多級目錄的PHP函數
練習7: 寫出一個函數,能遞歸列出某個目錄下的所有文件夾和文件名.練習8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉義,需要用到哪個函數 練習9: 寫出插入排序法和快速排序法代碼
練習10: 二分查找的原理是什么? 請寫出二分查找函數
練習11: 寫出php的public、protected、private三種訪問控制模式的區別 練習12: 請寫出一個完整的嚴謹的單例模式
練習13: __set 和 __get 魔術函數是做什么的,在什么時候被觸發 練習14: 如何防止對象克隆, 對象克隆會復制 static屬性嗎? 練習15: 說說strip_tags的作用和用法?
練習16: 如果需要原樣輸出用戶輸入的內容,在數據入庫前,要用哪個函數處理? 練習17: 如何控制多個進程去并發刪除,插入和更新數據庫的某張表? 練習18: PHP的安全模式和非安全模式的區別
(轉載請注明 傳智播客php學院-韓順平http://php.itcast.cn)
當然,有些學員還給我寫信說這樣一個問題,如何去檢驗第一階段: PHP前端網頁開發基礎,學習情況, 學習到怎樣的水平,再學習下一個階段比較好, 大家可以做一下下面的測試題,如果你能將下面的題都完成,說明你已經有一定基礎,可以學習下一個階段:(注意:需要獨立完成)
html css 試題
試題1:
請編寫如下一個html頁面
試題2:
請使用(div+css)盒子經典布局編寫如下界面
試題3:
請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關函數對一個url 【http://www.tmdps.cn、163.com 等)
練習5:計算一個js整數數組的所有元素的和。
練習6:計算一個字符串 , 比如 “abcde中國,你好hello,12345”, 中含有多少個中文字,多少個字母,多少個數字?
練習7:將一個js字符串數組的元素的順序進行反轉。(“3”,“a”,“8”,“haha”)轉換為(“haha”,“8”,“a”,“3”)。提示:第i個和第length-i-1個進行交換。不能使用js的reverse()函數。
好,現在我們談談第二個階段應該學習什么內容,如何學習的問題。第二階段 PHP核心編程
(1)PHP基本語法加強 Apache--directory配置段、一個IP和多個域名綁定的兩種方式、HTTP協議入門介紹、Apache邏輯組件介紹、Apache生命周期、PHP運行之時序圖、PHP數據類型加強、PHP各種運算符加強、PHP三大流程控制加強、位運算(按位與、按位或、按位異或、按位非、位左移、位右移)、二進制(原碼、反碼、補碼)、PHP版本在線貸款計算器。
這里,我想說明一下: PHP基礎語法看似簡單,但是也不可大意,有些PHP程序員工作了2年,對PHP運行的原理都不清楚,對Apache的一些重要調優配置也不了解,這樣的程序員,在公司是不行的,很難得到提升。所以就一直是一個編碼工人,薪資也上不去。
比如面試中經常問到: PHP中一個整數的范圍是多少, 小數的能表示的范圍是多少? 再比如如何在Apache中配置一個404錯誤頁面,如何給一個主機配置一個域名,具體怎樣操作?這樣一些基礎的問題都必須在這個階段搞定。推薦大家看 傳智播客php視頻教程 23講-45講 ,有詳細到位的講解。
(2)PHP函數
PHP函數的基本介紹、如何自定義函數、PHP頁面調用函數、require()、require_once()、include()和include_once()的區別、從內存分析PHP函數調用過程、函數使用需要注意的細節、函數值傳遞和引用傳遞的區別。
函數是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎,掌握好函數可以提高代碼的復用性、可讀性和可維護性。
(3)數組、排序和查找 數組的基本概念、數組的引用方式、數組引用陷阱、與PHP數組相關的函數(count、is_array、print_r、explode等)遍歷數組的三種方式、刪除數組元素和數組運算符、數組使用細節總結、內部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數組介紹和使用。依據我的經驗,我們去找工作的時候,一定會一道關于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數。在項目開發中,數組是銜接變量和函數的重要數據類型,在MVC開發中,往往需在控制器中將數組分配給視圖去顯示,在算法中,數組也是變化最為靈活的。
(4)面向對象編程
面向對象編程基本概念、類和對象的關系、如何定義類、成員屬性(變量)、如何創建對象實例及如何訪問對象屬性、對象在內存中存在的形式、棧、堆、全局區、常量區和代碼區的關系、成員方法(函數)及使用細節、構造方法(函數)、默認構造方法(函數)、this的基本概念和使用、析構方法(函數)、PHP的對象垃圾回收器、靜態變量(類變量)的概念和使用、靜態方法(類方法)的概念和使用、面向對象編程的三大特征介紹、面向對象編程-封裝、面向對象編程-繼承、面向對象編程-多態、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術函數(__set __get __construct __destruct __call等)和魔術常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區別、關鍵字final的使用、常量關鍵字const 的作用和使用注意事項、面向對象編程之強大的反射機制、面向對象編程之動態代理。
面向對象編程已經成為PHP編程的主流,面向對象編程讓程序變得更加強大和靈活,更利于項目的開發和維護。關于面向對象編程 在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向對象思想,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設置頂級異常處理器、異常使用的規則。
在編寫php web 應用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業,也為安全風險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預定義超全局數組
預定義超全局數組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)
(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數據存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區別。
Cookie(小甜餅)是客戶端技術,服務器把每個用戶的數據以cookie的形式 寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶著各自的數據去。Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用 戶的瀏覽器創建一個其獨享的session文件,當用戶再去訪問服務器中的其它web資源時,可以從用戶各自的session 中取出數據為用戶服務。Session和Cookie是最重要的用戶行為跟蹤技術,尤其是電商,sns項目中運用廣泛,因此是我們學習的重點和難點,也是面試筆試的重點。關于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數匯總介紹、最常用的13個文件函數、使用文件完成網站計數器、文件上傳下載操作-mini版音樂共享網、無限級文件掃描器。
文件最主要的作用就是保存數據,它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節要求同學們掌握文件的各種操作和上傳下載,動態創建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發非常重要。
(9)PHP繪圖技術
php繪圖坐標系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數、繪圖技術的實際運用—人口分布餅狀統計圖、專業的報表開發--JpGraph、JpGraph的安裝和配置、JpGraph實際應用-網民支持情況統計圖、JpGraph中文亂碼處理。如果你使用過財務軟件,那你一定看見過各種對財務數據進行統計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態顯示數據。而這些圖表的顯 示都要使用到PHP的繪圖技術,繪圖技術要求熟練的使用PHP的繪圖函數完成項目的需求。能開發一些統計圖,非常有實用價值。比如:
如何檢驗自己的學習效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學到還不錯。
練習1: 簡述echo(),print(),print_r()的區別?
練習2: 說出PHP的超級全局變量數組,共九種
練習3: 如何在一個php函數中使用具有全局屬性的變量,說出兩種方式
練習4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績取掉一個最高分,去掉一個最低分,剩下的6個分數的平均分就是最后得分。使用一維數組實現打分功能。4.2.請把打最高分的評委和最低分的評委找出來。
4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習5: include和require都能把另外一個文件包含到當前文件中,他們有什么區別?Include和include_once又有什么區別?
練習6: 寫出一個能創建多級目錄的PHP函數
練習7: 寫出一個函數,能遞歸列出某個目錄下的所有文件夾和文件名.練習8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉義,需要用到哪個函數
練習9: 寫出插入排序法和快速排序法代碼
練習10: 二分查找的原理是什么? 請寫出二分查找函數
練習11: 寫出php的public、protected、private三種訪問控制模式的區別
練習12: 請寫出一個完整的嚴謹的單例模式
練習13: __set 和 __get 魔術函數是做什么的,在什么時候被觸發
練習14: 如何防止對象克隆, 對象克隆會復制 static屬性嗎?
練習15: 說說strip_tags的作用和用法?
練習16: 如果需要原樣輸出用戶輸入的內容,在數據入庫前,要用哪個函數處理?
練習17: 如何控制多個進程去并發刪除,插入和更新數據庫的某張表?
練習18: PHP的安全模式和非安全模式的區別