『壹』 學習php需要掌握哪些東西
3、工具:必須至少熟練使用一種IDE的開發工具,例如:Eclipse、Netbeans、zend或者editplus,ultraedit,包括進行工程管理、常用選項的設置、PHP插件的安裝配置以及進行調試。 4、API:PHP的核心API是非常龐大的,但是有一些內容筆者認為是必須熟悉的,否則不可能熟練的運用PHP,包括: ◆ 文件目錄處理函數包80%以上的函數的功能的靈活運用。 ◆ 日期時間函數中的80%以上的函數的功能的靈活運用 ◆ 數學函數庫中的100%的內容。 ◆ 網路庫中的60%以上的內容,對各個函數的功能比較熟悉。 ◆ 字元串處理函數下的60%以上的內容,特別是各種處理函數。 ◆ 正則表達式函數下的90%以上的內容,特別是各種正則處理 ◆ 一些安全庫下的40%以上的內容,如果對於安全沒有接觸的話根本就不可能掌握PHP ◆ XML處理,熟悉SAX、DOM以及JDOM的優缺點並且能夠使用其中的一種完成XML的解析及內容處理。 ◆ 圖形圖像函數庫下的80%以上的內容,特別是一些圖像生成和處理 ◆ MySQL 資料庫函數下的90%以上的內容,特別是處理各種數據的函數 ◆ 數組處理函數下的90%以上的內容,特別是各種操作處理函數 ◆ 其它PEAR,PECL,和一些擴展類庫中的80%以上的內容,特別是一些常用的類的處理 ◆ 針對不同的需求,查找不同的函數庫。 5、測試:必須熟悉使用phpunit編寫測試用例完成代碼的自動測試。 6、管理:必須熟悉使用xinc, phing等完成工程管理的常用任務,例如工程編譯、生成phpdoc、生成、版本控制、自動測試。 7、排錯:應該可以根據異常信息比較快速的定位問題的原因和大致位置。 8、思想:必須掌握OOP的主要要求,這樣使用PHP開發的系統才能是真正的PHP系統。 9、規范:編寫的代碼必須符合流行的編碼規范,這樣程序的可讀性才比較好。 10、博學:掌握OOA、OOD、MS SQL Server、Oracle 、Zendframework、cakephp、symfony、模板技術等流行技術,掌握軟體架構設計思想、搜索引擎優化、緩存系統設計、網站負載均衡、系統性能調優等實用技術。 浮躁的人容易問:PHP和Java,C#,VB.NET哪個好;--告訴你吧,都好--只要你學好就行; 浮躁的人容易問:PHP有錢途嗎:--建議你去搶銀行作者:朱志兵
『貳』 什麼樣的測試用例是好的測試用例
1、用例覆蓋程度
毫無疑問,這一點應該是最重要的,無需多說,覆蓋率最大化是一套測試用例的最重要評價標准,如果漏測就杯具了。2、用例是否已經達到工作量最小化
在滿足用例覆蓋程度最大化的前提下,應該盡量減小執行用例所需要的工作量。這些方面的方法有不少,如條件覆蓋,分支覆蓋,正交覆蓋等方法。面對不同的測試對象,也有不同的方法來保證:對於網頁背後的php邏輯,可以通過在網頁上測試後,用一些工具比如xdebug來統計代碼覆蓋率;對於向外提供介面的server
,採用的方式就是分析在外面暴露的介面設計用例,大致的通過介面參數來估計一下分支判斷的情況。
3、用例的分類以及描述是否足夠清晰
用例的分類,在這里是指相同類型的用例是否放在一起了。例如:介面類的用例,參數的取值范圍是1-3,但是現在卻傳入4;數據類用例,狀態機現在位於狀態2,卻要求狀態跳轉到無法到達的4;邏輯類用例,正常功能的產出等。將相同類型的用例放在一起,有助於理清思路,清楚了解用例設計是否完備。
用例的描述,是指描述的清晰程度是否能夠形成文檔。例如上面參數取值范圍的例子,用例這樣寫:「傳入錯誤的值」或者「傳入非1-3的值」,明顯沒有寫成「傳入值4」有效。這與寫程序一樣,總是寫閉區間的范圍而不是開區間。4、用例是否表明了測試目的
寫明用例的測試目的,對文檔的易於理解性和工作交接的好處不言而喻,現代軟體工程不可能只有一個人在做事情,項目於人員的變動也是難免的。在過程中留下足夠的信息,可以在後續工作提高很多效率。5、測試用例的易於維護性
如果被測對象有所升級,測試用例的說明或者腳本是不是容易維護呢?例如在有狀態機的情況下,測試用例之間是相互依賴的(即需要一定的執行順序),這樣被依賴的用例修改後,後端不需要同步根據修改。而如果用例之間沒有相互依賴關系(如用例是自己造的數據,不是依賴於前端的產出),可能一旦有變化,就需要修改這兩個。當然,這兩種情況不能絕對的說哪種好,是需要看實際使用時候的情況進行取捨的。
『叄』 PHP程序員需要具備哪些技能
一名合格的php程序員,他一方面需要掌握php基礎知識,也即常用的命令與選項,另一方面,程序員需熟知MySQL的知識,對於HTML+CSS+JavaScript+Ajax等等,能看懂就行。從長遠發展來看,php程序員需熟知主流產品,也即php框架,如Discuz/ShopEx/ECShop/ThinkPHP,進而深入學習、掌握php架構設計思想,搜索引擎的優化以及網站的負載均衡等知識。 因此,php的學習不僅要掌握眼前所需技能,還要從職業發展前景角度進一步深入對php知識的學習。由此可以看出,深圳達內php的課程就真正做到了對學員進行整個php知識體系的全面、系統的培訓。 深圳達內php整個課程的學習具體從6個階段進行,即包含Linux操作系統、Nigix、XHTML技術核心、CSS技術核心的Web開發基礎;以PHP技術核心、MySQL基礎、PHP核心函數庫、PHP面向對象編程為主的PHP開發技術 ;Web 2.0 RIA技術,如JavaScript基礎、JavaScript高級、jQuery框架、MySQL高級;PHP高級應用(Smarty模板、PHP框架技術);PHP項目實踐(T-Shop項目、T-CMS項目)以及互聯網高級技術 (SEO、負載均衡、網路安全、HTML5&CSS3、緩存與靜態化)等等,由淺入深,逐步深入,對於php程序員理性規劃其職業生涯也具有重要意義。
『肆』 php多重數組疊加其中的值
(1)利用php提供的函數,array_unique和array_diff_assoc來實現
.代碼如下:
<?php
function FetchRepeatMemberInArray($array) {
// 獲取去掉重復數據的數組
$unique_arr = array_unique ( $array );
// 獲取重復數據的數組
$repeat_arr = array_diff_assoc ( $array, $unique_arr );
return $repeat_arr;
}
// 測試用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );
?>
(2)自己寫函數實現這個功能,利用兩次for循環
.代碼如下:
<?php
function FetchRepeatMemberInArray($array) {
$len = count ( $array );
for($i = 0; $i < $len; $i ++) {
for($j = $i + 1; $j < $len; $j ++) {
if ($array [$i] == $array [$j]) {
$repeat_arr [] = $array [$i];
break;
}
}
}
return $repeat_arr;
}
// 測試用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );
?>
『伍』 php判斷數組重復,並把重復的數據相加
遍歷一次就搞定了
既然你要把單號相同的加起來,就可以認為單號是唯一的,所以單號可以做key
$sourceArr=array();//這里就是你原始數據的數組
$newArr=array();//這里是相加後處理過的數組,以單號為key
foreach($sourceArras$v){
if(array_key_exists($v['id'],$newArr)){
$newArr[$v['id']]['fund']+=$v['fund'];
}else{
$newArr[$v['id']]=$v;
}
}
大概就是這么個意思,不過交易類型、賬務類型你可能還要再處理下。
如果最後想得到一個下標從0開始的,非關聯數組,再用array_values()函數處理下就OK了
『陸』 thinkphp 怎麼用phpunit 做單元測試
thinkphp使用phpunit的時候,創建一個bootstrap.php文件,大致如下
<?php
define('APP_NAME', 'App');
define('ROOT_PATH', dirname(__DIR__) . '/');//根據測試用例的目錄,做相應修改
define('APP_PATH', ROOT_PATH . 'App/');
define('APP_PHPUNIT', true);
// 載入框架入口文件
require(ROOT_PATH . "ThinkPHP/ThinkPHP.php");
?>
APP_PHPUNIT 控制是否執行 App::exec();
『柒』 php代碼覆蓋率檢查工具有哪些
1. Xdebug
Xdebug是PHP的一個擴展,了解PHP的同學一定不會對它陌生,非常強悍的調試助手,默認並沒有開啟,需要另外安裝,不過多數情況下只需要在php.ini配置文件中開啟即可。成功開啟Xdebug後,我們便可以在程序中使用以下幾個函數:
xdebug_start_code_coverage() // 作用為開始統計覆蓋率
xdebug_get_code_coverage() // 作用為獲取當前已統計信息
xdebug_stop_code_coverage() // 作用為結束覆蓋率統計
2. PHPUnit
屬於XUnit家族系列,用於對php代碼進行單元測試,基於Xdebug可以方便快捷的對代碼進行覆蓋率測試,並生成直觀的報表。
3. codespy
codespy是純php開發的輕量級覆蓋率統計工具,並不依賴Xdebug。只需要在被測試代碼前引入其庫文件,便會自動在腳本執行完畢後生成測試報告。該工具是github上託管的開源工具。
4. Pika
河圖上的工具,特色是支持手工測試和生存周期控制,詳情。其大致原理為在測試機安裝並運行Pikagent程序,其可以與伺服器進行交互,QA能夠通過伺服器的web界面控制整個測試流程。
Xdebug適用於測試需求復雜的大型項目,例如函數覆蓋、類覆蓋等,同時其也很容易與第三方工具交互;PHPUnit主要用於模塊的單元測試,同時其規范的case管理也適合大型項目;codespy以其輕量級與簡單易擴展,能夠勝任大多數的小項目的覆蓋率測試需求。
『捌』 thinkphp怎麼用phpunit寫測試用例
測試用例
本例中,根目錄的index.php的配置如下:
<?php
define('APP_NAME','example');
define('APP_PATH','../example/');
define('APP_PHPUNIT',false);
define('APP_DEBUG',true);
require('../ThinkPHP/ThinkPHP.php');
?>
首次訪問之後,生成以下目錄結構:
在example站點中新建文件夾,命名為「Testcase」。
測試Model
創建HelloModel.class.php:
<?php
classHelloModelextendsModel
{
publicfunctionsayHello()
{
print'Hello';
return'Hello';
}
}
在Test文件夾中新建Test.php文件作為PHPUnit,其中注意require ThinkPHP作為初始化框架環境,另外在Think.class.php中,修改
start()函數中,App::run()為!APP_PHPUNIT && App::run();
該區分站點運行與測試用例。
<?php
define('APP_NAME','example');
define('APP_PATH','./../../example/');
define('APP_PHPUNIT',true);
require('./../../ThinkPHP/ThinkPHP.php');
_Framework_TestCase{
publicfunctionsetUp(){}
publicfunctiontearDown(){}
}
在TestSayHello中加入測試用例:
publicfunctiontestHelloModel()
{
$hello=D('Hello');
$this->assertTrue($hello->sayHello('Hello')=='Hello');
}
測試Action
修改IndexAction.class.php如下:
<?php
classIndexActionextendsAction
{
publicfunctionindex()
{
$hello=D("Hello");
return$hello->sayHello();
}
}
瀏覽器訪問Index效果:
在TestSayHello中加入測試用例:
publicfunctiontestHelloAction()
{
$hello=newIndexAction();
$this->assertTrue($hello->index()=='Hello');
}
運行效果
運行Test.php效果如下:
Test通過,至此給ThinkPHP加上了單元測試。