第一篇:PHP程序員必須掌握的知識
PHP5的優(yōu)點
PHP5的最大特點是引入了面向?qū)ο蟮娜繖C(jī)制,并且保留了向下的兼容性。程序員不必再編寫缺乏功能性的類,并且能夠以多種方法實現(xiàn)類的保護(hù)。另外,在對象的集成等方面也不再存在問題。使用PHP5引進(jìn)了類型提示和異常處理機(jī)制,能更有效的處理和避免錯誤的發(fā)生。
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的區(qū)別
實例代碼
$link=mysql_connect('localhost','root',”);mysql_select_db('abc',$link);$sql = “select * from book”;
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)){
echo $row['cid'].'::'.$row[1].'
';}
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo $row['cid'].'::'.$row[1].'
';}
$result = mysql_query($sql);
while($row = mysql_fetch_object($result)){
echo $row->cid.'::'.$row->title.”
”;}
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
echo $row['cid'].'::'.$row[1].'
';}
?>
詳細(xì)解釋:
mysql_fetch_row,這個函數(shù)是從結(jié)果集中取一行作為枚舉數(shù)據(jù),從和指定的結(jié)果標(biāo)識關(guān)聯(lián)的結(jié)果集中取得一行數(shù)據(jù)并作為數(shù)組返回。每個結(jié)果的列 儲存在一個數(shù)組的單元中,偏移量從 0 開始。注意,這里是從0開始偏移,也就是說不能用字段名字來取值,只能用索引來取值,所以如下代碼是取不到值的:
while($row = mysql_fetch_row($res)){
echo $row['cid'].'::'.$row[1].”;
} //這里的$row['cid'] 取不到值。
mysql_fetch_array,從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有,除了將數(shù)據(jù)以數(shù)字索引方式儲存在數(shù)組中之外,還可以將數(shù)據(jù)作為關(guān)聯(lián)索引儲存,用字段名作為鍵名。也就是說他得到的結(jié)果像數(shù)組一樣,可以用key或者索引來取值,所以
while($row = mysql_fetch_array($res)){ echo $row['cid'].'::'.$row[1].”;
}//這里$row['cid'],$row[1]都能得到相應(yīng)的值。
mysql_fetch_object,顧名思義,從結(jié)果集中取得一行作為對象,并將字段名字做為屬性。所以只有這樣才能取到值
while($row = mysql_fetch_object($res)){ echo $row->cid.'::'.$row->title.”";
}
mysql_fetch_assoc,從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,也就是說這個函數(shù)不能像mysql_fetch_row那樣用索引來取值,只能用字段名字來取,所以
while($row = mysql_fetch_assoc($res)){ echo $row['cid'].'::'.$row[1].”;} //$row[1]這樣是取不到值的補(bǔ)充一點:
mysql_fetch_array函數(shù)是這樣定義的:array mysql_fetch_array(resource result [, int result_type]),返回根據(jù)從結(jié)果集取得的行生成的數(shù)組,如果沒有更多行則返回 FALSE。
mysql_fetch_array()中可選的第二個參數(shù) result_type 是一個常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。其中:
1、mysql_fetch_assoc($result)==mysql_fetch_array($result,MYSQL_ASSOC);
2、mysql_fetch_row($result)==mysql_fetch_array($result,MYSQL_NUM);
所 以mysql_fetch_array()函數(shù)在某種程度上可以算是mysql_fetch_row()與 mysql_fetch_assoc()的集合。另外,mysql_fetch_array()另外還有MYSQL_BOTH參數(shù),將得到一個同時包含關(guān) 聯(lián)和數(shù)字索引的數(shù)組。
在來說句 $row = $db->fetch_array($query);
$db是人數(shù)據(jù)庫操作 類,$db->fetch_array($query),fetch_array($query)是那個db類里的方法,$row = $db->fetch_array($query)這句的意思是從記錄集$query中得到數(shù)據(jù)庫中的一行記錄。
實例代碼:
$conn=@mysql_connect($host,$user,$pass);@mysql_select_db($database,$conn);$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){ $rows[]=$row;}
索引(詳解)
索引的優(yōu)點:加快查詢速度。
(如果你總結(jié)下索引的用途,其實也就這一點了,若是你的面試官說有其他的優(yōu)點,那你完全可以告訴他,請你回去自己總結(jié)下索引這個到底是干什么的吧)
索引類型:
根據(jù)數(shù)據(jù)庫的功能,可以在數(shù)據(jù)庫設(shè)計器中創(chuàng)建四種索引:唯一索引、非唯一索引、主鍵索引和聚集索引。盡管唯一索引有助于定位信息,但為獲得最佳性能結(jié)果,建議改用主鍵或唯一約束。
唯一索引:
唯一索引是不允許其中任何兩行具有相同索引值的索引。
當(dāng)現(xiàn)有數(shù)據(jù)中存在重復(fù)的鍵值時,大多數(shù)數(shù)據(jù)庫不允許將新創(chuàng)建的唯一索引與表一起保存。數(shù)據(jù)庫還可能防止添加將在表中創(chuàng)建重復(fù)鍵值的新數(shù)據(jù)。例如,如果在 employee 表中職員的姓(lname)上創(chuàng)建了唯一索引,則任何兩個員工都不能同姓。
非唯一索引:
非唯一索引是相對唯一索引,允許其中任何兩行具有相同索引值的索引。
當(dāng)現(xiàn)有數(shù)據(jù)中存在重復(fù)的鍵值時,數(shù)據(jù)庫是允許將新創(chuàng)建的索引與表一起保存。這時數(shù)據(jù)庫不能防止添加將在表中創(chuàng)建重復(fù)鍵值的新數(shù)據(jù)。
主鍵索引:
數(shù)據(jù)庫表經(jīng)常有一列或列組合,其值唯一標(biāo)識表中的每一行。該列稱為表的主鍵。
在數(shù)據(jù)庫關(guān)系圖中為表定義主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當(dāng)在查詢中使用主鍵索引時,它還允許對數(shù)據(jù)的快速訪問。
聚集索引(也叫聚簇索引):
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引。
如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數(shù)據(jù)訪問速度。
第二篇:PHP初級程序員應(yīng)該掌握的知識
PHP初級程序員應(yīng)該掌握的知識
很多PHP初學(xué)者不知道該怎么學(xué)好它,不知道從何下手,這里分享的PHP初級程序員應(yīng)該掌握的知識,幫助你理清思路,為未來的學(xué)習(xí)鋪好路。
1.Linux:
基本命令、操作、啟動、基本服務(wù)配置(包括rpm安裝文件,各種服務(wù)配置等);會寫簡單的shell腳本和awk/sed 腳本命令等。
2.Nginx:
做到能夠安裝配置nginx+php,知道基本的nginx核心配置選項,知道 server/fastcgi_pass/access_log 等基礎(chǔ)配置,目標(biāo)是能夠讓nginx+php_fpm順利工作。
3.MySQL:
會自己搭建mysql,知道基本的mysql配置選項;知道innodb和myisam的區(qū)別,知道針對InnoDB和MyISAM兩個引擎的不同 配置選項;知道基本的兩個引擎的差異和選擇上面的區(qū)別;能夠純手工編譯搭建一個MySQL數(shù)據(jù)庫并且配置好編碼等正常穩(wěn)定運(yùn)行;核心主旨是能夠搭建一個可 運(yùn)行的MySQL數(shù)據(jù)庫。
4.PHP:
基本語法數(shù)組、字符串、數(shù)據(jù)庫、XML、Socket、GD/ImageMgk圖片處理等等;熟悉各種跟MySQL操作鏈接的api(mysql /mysqli/PDO),知道各種編碼問題的解決;知道常規(guī)熟練使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf 等);了解基本MVC的運(yùn)行機(jī)制和為什么這么做,稍微知道不同的PHP框架之間的區(qū)別;能夠快速學(xué)習(xí)一個MVC框架。能夠知道開發(fā)工程中的文件目錄組織,有基本的良好的代碼結(jié)構(gòu)和風(fēng)格,能夠完成小系統(tǒng)的開發(fā)和中型系統(tǒng)中某個模塊的開發(fā)工作。
5.前端:
如果條件時間允許,可以適當(dāng)學(xué)習(xí)下 HTML/CSS/JS 等相關(guān)知識,知道什么web標(biāo)準(zhǔn),p+css的web/wap頁面模式,知道 HTML5和HTML4的區(qū)別;了解一些基本的前端只是和JS框架(jQuery之類的);了解一些基本的JavaScript編程知識;(本項不是必須 項,如果有時間,稍微了解一下是可以的,不過不建議作為重點,除非個人有強(qiáng)烈興趣)
6.系統(tǒng)設(shè)計:
能夠完成小型系統(tǒng)的基本設(shè)計,包括簡單的數(shù)據(jù)庫設(shè)計,能夠完成基本的:瀏覽器-> Nginx+PHP-> 數(shù)據(jù)庫 架構(gòu)的設(shè)計開發(fā)工作;能夠支撐每天幾十萬到數(shù)百萬流量網(wǎng)站的開發(fā)維護(hù)工作。
北大青鳥蘭州校區(qū)與上百家IT知名企業(yè)簽訂用人協(xié)議,學(xué)員入學(xué)即可簽訂就業(yè)協(xié)議,就業(yè)方面全方位保障學(xué)員更好的就業(yè)。畢業(yè)時,學(xué)員可以獲得全國免費推薦工作。
更多有關(guān)學(xué)習(xí)IT的問題,請點擊咨詢。
第三篇:Java程序員必須掌握的線程知識
Java程序員必須掌握的線程知識 Callable和Future Callable和Future出現(xiàn)的原因
創(chuàng)建線程的2種方式,一種是直接繼承Thread,另外一種就是實現(xiàn)Runnable接口。
這2種方式都有一個缺陷就是:在執(zhí)行完任務(wù)之后無法獲取執(zhí)行結(jié)果。如果需要獲取執(zhí)行結(jié)果,就必須通過共享變量或者使用線程通信的方式來達(dá)到效果,這樣使用起來就比較麻煩。
而自從Java 1.5開始,就提供了Callable和Future,通過它們可以在任務(wù)執(zhí)行完畢之后得到任務(wù)執(zhí)行結(jié)果。
Callable和Future介紹
Callable接口代表一段可以調(diào)用并返回結(jié)果的代碼;Future接口表示異步任務(wù),是還沒有完成的任務(wù)給出的未來結(jié)果。所以說Callable用于產(chǎn)生結(jié)果,F(xiàn)uture用于獲取結(jié)果。
Callable接口使用泛型去定義它的返回類型。Executors類提供了一些有用的方法在線程池中執(zhí)行Callable內(nèi)的任務(wù)。由于Callable任務(wù)是并行的(并行就是整體看上去是并行的,其實在某個時間點只有一個線程在執(zhí)行),我們必須等待它返回的結(jié)果。
java.util.concurrent.Future對象為我們解決了這個問題。在線程池提交Callable任務(wù)后返回了一個Future對象,使用它可以知道Callable任務(wù)的狀態(tài)和得到Callable返回的執(zhí)行結(jié)果。Future提供了get()方法讓我們可以等待Callable結(jié)束并獲取它的執(zhí)行結(jié)果。
Callable與Runnable
java.lang.Runnable吧,它是一個接口,在它里面只聲明了一個run()方法:
publicinterfaceRunnable{
publicabstractvoid run();}
由于run()方法返回值為void類型,所以在執(zhí)行完任務(wù)之后無法返回任何結(jié)果。
Callable位于java.util.concurrent包下,它也是一個接口,在它里面也只聲明了一個方法,只不過這個方法叫做call():
publicinterfaceCallable
/**
* Computes a result, or throws an exception if unable to do so.*
* @return computed result
* @throws Exception if unable to compute a result
*/
V call()throwsException;}
可以看到,這是一個泛型接口,call()函數(shù)返回的類型就是傳遞進(jìn)來的V類型。
那么怎么使用Callable呢?
一般情況下是配合ExecutorService來使用的,在ExecutorService接口中聲明了若干個submit方法的重載版本:
第一個submit方法里面的參數(shù)類型就是Callable。
暫時只需要知道Callable一般是和ExecutorService配合來使用的,具體的使用方法講在后面講述。
一般情況下我們使用第一個submit方法和第三個submit方法,第二個submit方法很少使用。
Future
Future就是對于具體的Runnable或者Callable任務(wù)的執(zhí)行結(jié)果進(jìn)行取消、查詢是否完成、獲取結(jié)果。必要時可以通過get方法獲取執(zhí)行結(jié)果,該方法會阻塞直到任務(wù)返回結(jié)果。
Future類位于java.util.concurrent包下,它是一個接口:
publicinterfaceFuture
boolean cancel(boolean mayInterruptIfRunning);
boolean isCancelled();
boolean isDone();
V get()throwsInterruptedException,ExecutionException;
V get(long timeout,TimeUnit unit)
throwsInterruptedException,ExecutionException,TimeoutException;}
在Future接口中聲明了5個方法,下面依次解釋每個方法的作用:
cancel方法用來取消任務(wù),如果取消任務(wù)成功則返回true,如果取消任務(wù)失敗則返回false。參數(shù)mayInterruptIfRunning表示是否允許取消正在執(zhí)行卻沒有執(zhí)行完畢的任務(wù),如果設(shè)置true,則表示可以取消正在執(zhí)行過程中的任務(wù)。如果任務(wù)已經(jīng)完成,則無論mayInterruptIfRunning為true還是false,此方法肯定返回false,即如果取消已經(jīng)完成的任務(wù)會返回false;如果任務(wù)正在執(zhí)行,若mayInterruptIfRunning設(shè)置為true,則返回true,若mayInterruptIfRunning設(shè)置為false,則返回false;如果任務(wù)還沒有執(zhí)行,則無論mayInterruptIfRunning為true還是false,肯定返回true。isCancelled方法表示任務(wù)是否被取消成功,如果在任務(wù)正常完成前被取消成功,則返回 true。
isDone方法表示任務(wù)是否已經(jīng)完成,若任務(wù)完成,則返回true;
get()方法用來獲取執(zhí)行結(jié)果,這個方法會產(chǎn)生阻塞,會一直等到任務(wù)執(zhí)行完畢才返回;
get(long timeout, TimeUnit unit)用來獲取執(zhí)行結(jié)果,如果在指定時間內(nèi),還沒獲取到結(jié)果,就直接返回null。
也就是說Future提供了三種功能:
1)判斷任務(wù)是否完成;
2)能夠中斷任務(wù);
3)能夠獲取任務(wù)執(zhí)行結(jié)果。
因為Future只是一個接口,所以是無法直接用來創(chuàng)建對象使用的,因此就有了下面的FutureTask。FutureTask
FutureTask實現(xiàn)了RunnableFuture接口,這個接口的定義如下:
publicinterfaceRunnableFuture
void run();}
可以看到這個接口實現(xiàn)了Runnable和Future接口,接口中的具體實現(xiàn)由FutureTask來實現(xiàn)。這個類的兩個構(gòu)造方法如下 :
publicFutureTask(Callable
if(callable ==null)
thrownewNullPointerException();
sync =newSync(callable);
}
publicFutureTask(Runnable runnable, V result){
sync =newSync(Executors.callable(runnable, result));
} 如上提供了兩個構(gòu)造函數(shù),一個以Callable為參數(shù),另外一個以Runnable為參數(shù)。這些類之間的關(guān)聯(lián)對于任務(wù)建模的辦法非常靈活,允許你基于FutureTask的Runnable特性(因為它實現(xiàn)了Runnable接口),把任務(wù)寫成Callable,然后封裝進(jìn)一個由執(zhí)行者調(diào)度并在必要時可以取消的FutureTask。
FutureTask可以由執(zhí)行者調(diào)度,這一點很關(guān)鍵。它對外提供的方法基本上就是Future和Runnable接口的組合:get()、cancel、isDone()、isCancelled()和run(),而run()方法通常都是由執(zhí)行者調(diào)用,我們基本上不需要直接調(diào)用它。
一個FutureTask的例子
publicclassMyCallableimplementsCallable
privatelong waitTime;
publicMyCallable(int timeInMillis){
this.waitTime=timeInMillis;
}
@Override
publicString call()throwsException{ Thread.sleep(waitTime);
//return the thread name executing this callable task
returnThread.currentThread().getName();
}
}
publicclassFutureTaskExample{
publicstaticvoid main(String[] args){
MyCallable callable1 =newMyCallable(1000);// 要執(zhí)行的任務(wù)
MyCallable callable2 =newMyCallable(2000);
FutureTask
FutureTask
ExecutorService executor =Executors.newFixedThreadPool(2);// 創(chuàng)建線程池并返回ExecutorService實例
executor.execute(futureTask1);// 執(zhí)行任務(wù)
executor.execute(futureTask2);
while(true){
try{
if(futureTask1.isDone()&& futureTask2.isDone()){// 兩個任務(wù)都完成System.out.println(“Done”);
executor.shutdown();// 關(guān)閉線程池和服務(wù)
return;
}
if(!futureTask1.isDone()){// 任務(wù)1沒有完成,會等待,直到任務(wù)完成 System.out.println(“FutureTask1 output=”+futureTask1.get());
}
System.out.println(“Waiting for FutureTask2 to complete”);
String s = futureTask2.get(200L,TimeUnit.MILLISECONDS);
if(s!=null){
System.out.println(“FutureTask2 output=”+s);
}
}catch(InterruptedException|ExecutionException e){
e.printStackTrace();
}catch(TimeoutException e){
//do nothing
}
} }}
運(yùn)行如上程序后,可以看到一段時間內(nèi)沒有輸出,因為get()方法等待任務(wù)執(zhí)行完成然后才輸出內(nèi)容.輸出結(jié)果如下:
FutureTask1 output=pool-1-thread-1WaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeFutureTask2 output=pool-1-thread-2Done
第四篇:PHP程序員
**的個人簡歷
個人資料
姓名: **電子郵件: ******@qq.com
名族: 漢出生日期: 1991/1/3
學(xué)歷: 本科居住地址: 深圳福田
性別: 男手機(jī)號碼: 186***7739
4求職意向
到崗時間:即時
期望職位:php程序員
工作性質(zhì):全職
專業(yè)技能
1、熟練掌握PHP,HTML,DIV+CSS,Javascript,Ajax,jQuery等Web開發(fā)技術(shù)。
2、熟練使用PDO、MySQL方式操作MySQL數(shù)據(jù)庫系統(tǒng),熟悉MySQL事物及存儲過程。
3、熟悉HTML,DIV+CSS前臺頁面技術(shù)和XML的使用。
4、熟悉網(wǎng)頁靜態(tài)化、Smarty緩存,thinkPHP緩存,掌握Web防SQL注入。
5、孰悉MVC架構(gòu)開發(fā)思想模式,熟練使用Smarty模板,ThinkPHP框架,ZendFramework框架。
6、熟練掌握Zend Studio, Dreamweaver,Notepad++, EclipsePHP等常用Web開發(fā)工具;
7、了解Linux基本操作。
項目經(jīng)驗? 項目一
項目名稱:地球新聞網(wǎng)
軟件環(huán)境:
開發(fā)工具:
項目描述: linux+apache+mysql+php Zend Studio 1.該項目是一個集各種新聞的網(wǎng)站。2.前臺采用div+css,javascript等
技術(shù)進(jìn)行頁面布局,Javascript和Jquery技術(shù)制作下拉菜單、表單驗證、復(fù)選框等效果。3.后臺采用全面向?qū)ο箝_發(fā),良好的運(yùn)用了MVC三層架
構(gòu)模式。
責(zé)任描述:獨立開發(fā)
項目體會:通過開發(fā)這次項目,使我對制作一個網(wǎng)站有了一個全面的了解,也同時增
加了我的技術(shù)能力;通過該網(wǎng)站使我了解只有想不到,沒有做不到。同時
也想到在這個發(fā)展迅速的社會,我們只有不斷努力學(xué)習(xí)新的技術(shù)才能滿足
客戶的要求。
? 項目二
項目名稱:聚焦購物商城
軟件環(huán)境:
開發(fā)工具:
項目描述: windows+apache+mysql+php Zend Studio 8.0 該項目是一個大型的網(wǎng)站商城,采用thinkPHP主流框架開發(fā)。
前臺包括:商品列表、搜索、商品詳細(xì)頁、注冊、登錄、購物車、會員
中心、評論等。后臺有:商品管理、訂單管理、會員管理、商家管理等。
滿足用戶購物流程的各種需求
責(zé)任描述: 負(fù)責(zé)完成了MySQL數(shù)據(jù)表、字段、索引的分析與創(chuàng)建,主頁的圖片輪換,商品詳細(xì)
頁,購物車模塊,登錄注冊等功能,以及后臺商品管理模塊。
項目體會:通過此次項目的實戰(zhàn),讓我對thinkPHP的掌握更加深刻,同時給我感覺的是使用模板的開發(fā)速度之快,更實現(xiàn)的HTML的代碼與PHP代碼的分
離,使得擁有更好的擴(kuò)展以及維護(hù)。
工作經(jīng)驗
2012/8—2013/4業(yè)聚醫(yī)療器械(深圳)有限公司技術(shù)員 工作感想
之前的公司主要是生產(chǎn)和研發(fā)介入性醫(yī)療器械的一家公司,我的工作任務(wù)主要從事公司導(dǎo)管支架的研發(fā),研發(fā)多種不同尺寸型號的球囊擴(kuò)張導(dǎo)管。在我的工作中,使我學(xué)到了很多東西,讓我變得更加細(xì)心,做事情更加注重細(xì)節(jié),更有時間觀念等等。
教育經(jīng)歷
? 2013/4—2013/8達(dá)內(nèi)PHP培訓(xùn)php程序員主要學(xué)習(xí)了:linux系統(tǒng)常用操作命令,HTML/CSS,Javascript/Jquery/Ajax的前臺技術(shù),學(xué)習(xí)了用Linux系統(tǒng)和Windows系統(tǒng)開發(fā)項目,學(xué)習(xí)了Smarty模板,Zendframework,thinkPHP框架的使用,學(xué)習(xí)了DEDECMS二次開發(fā)。
在學(xué)習(xí)的過程中,自己獨立完成了一個小項目《地球新聞網(wǎng)》,和同學(xué)合作完
成了一個商城網(wǎng)站《聚焦購物》,通過這兩個項目的實戰(zhàn),為我以后的工作打
下了堅實的基礎(chǔ)。
? 2008/9—2012/7湖北信息工程專修學(xué)院電子商務(wù)本科主要學(xué)習(xí)了:計算機(jī)應(yīng)用基礎(chǔ),管理學(xué),電子商務(wù)概論,網(wǎng)頁設(shè)計與制作,電子商務(wù)法,商務(wù)溝通與談判及商業(yè)職業(yè)道德專業(yè)課程,安全教育等課程。
通過這些課程的學(xué)習(xí),使我對電子商務(wù)系統(tǒng)建設(shè)與管理打下了良好的基礎(chǔ),同時也使我擁有較強(qiáng)的溝通能力和職業(yè)道德水準(zhǔn)。
個人評價 1.本人細(xì)心,樂觀積極心態(tài),吃苦耐勞,勇于挑戰(zhàn)自我,熱愛學(xué)習(xí),喜歡總結(jié);
2.具備良好的團(tuán)隊精神,能很好的與團(tuán)隊協(xié)作開發(fā),有良好的溝通能力,喜歡交朋友;
3.性格開朗,陽光,喜歡籃球,游泳,羽毛球等體育運(yùn)動。
第五篇:PHP程序員應(yīng)掌握的5個基本概念
PHP程序員應(yīng)掌握的5個基本概念
PHP程序員應(yīng)掌握的基本概念都有哪些呢?下面由中公優(yōu)就業(yè)的老師給大家揭秘一下。
1.框架
框架可以說是php開發(fā)中的一個最重要的問題。用php開發(fā)web應(yīng)用程序時有很多方法,有很多開源的框架可以使用,可以幫助快速的開發(fā),保持更高的一致性和有效性。其中比較好的框架包括cakephp,Symfony和CodeIgniter。很多框架還按照MVC設(shè)計模式。
2.模板引擎
如果您使用的不是一個框架來執(zhí)行一個具體的設(shè)計模式,那么您想要使用的是模板引擎。不論你是自己創(chuàng)建或是使用現(xiàn)有的模板(如 Smarty),模板引擎都會使你的邏輯代碼從HTML頁面中獨立出來(以及相關(guān)的CSS / js /等)。
3.代碼重用
正如我先前提過的,php是所用語言中代碼重用性最好的。從多中小的文檔到整個數(shù)據(jù)庫類,php開發(fā)者需要的時候可以隨意的選擇重用現(xiàn)有的代碼。其實,你幾乎可以不用編寫一行代碼就能建立起整個應(yīng)用程序。
4.不重新開發(fā)現(xiàn)有的東西
很明顯的一件事,只有少數(shù)的php開發(fā)者知道php本身有很多可用之處。忘記新的圖書館,或復(fù)雜的代碼例程-先看看PHP手冊。例如,你們有沒有聽過number_format(), parse_url(), wordwrap()或bbcode_parse()?看一下整個函數(shù)參考,選擇一個類別,瀏覽一下。
5.IRC 是令人愉快的事
當(dāng)你有個復(fù)雜的問題不能解決的時候,可以到IRC上。PHP非官方的支持頻道,很多經(jīng)驗豐富的開發(fā)者陶醉其中。你需要一個IRC客戶端,如果你用的Firefox,ChatZilla是一個很好的插件,當(dāng)你需要幫助時,以irc://irc.freenode.net/php做為頭部粘貼你的代碼。張貼您的問題,并耐心等待;某種熱心人(或多個)會給你答案。當(dāng)你得到答案后,考慮一下其他需要幫助人的問題。
更多知識干貨分享,盡在中公優(yōu)就業(yè),>>>點擊進(jìn)入。
點擊查看>>>中公I(xiàn)T優(yōu)就業(yè)封閉式培訓(xùn),包食宿,學(xué)費貸款,交通補(bǔ)貼,推薦就業(yè)