本文目錄一覽:
- 1、php程序員寫的代碼為什麼總有bug
- 2、一個優秀的php程序員應該具備哪些技能
- 3、php實際開發怎麼處理錯誤
- 4、一個php項目,報出了異常,請您解答。
- 5、php源碼bug怎麼修復
- 6、PHP做得網站卡了怎麼辦
php程序員寫的代碼為什麼總有bug
弱類型以及即編即譯等等靈活的特性,註定PHP必須要有犧牲一定的穩定性的前提來達到。換句話說,通常JAVA中一些BUG可以通過編譯機制可以儘早的扼殺早搖籃之中,即使是運行期的錯誤,也可以通過編譯機制找到。同時,強類型語言的嚴謹的代碼編寫風格,也不容易出現由弱類型語言中那些讓人又愛又恨的類型自動轉換髮生的意想不到的行為。
最終,我可以認為PHP為了快速開發,做出了他應有的犧牲。把更多的代碼控制權力交給程序員,而不是交給機器,這也意味著代碼的有效性考驗著作為程序員本身的編程能力。更可能是程序員本身對編程思想的理解程度。不過,PHP大多數都是用來開發web站點,而且還有很龐大的社區,以及許多優秀的框架,這些都可以幫助PHP程序員在開發中減少不必要的麻煩。
BUG不可避免,BUG與否決定在你!
個人經驗,少年,你如果要開發應用的話,這個年代不用框架,就等於自己為自己增加N倍的難度。在下推薦幾款框架給你吧:
LARAVAL (強力推薦),YII,codeigniter…….
一個優秀的php程序員應該具備哪些技能
1、文件目錄處理函數包80%以上的函數的功能的靈活運用。
2、日期時間函數中的80%以上的函數的功能的靈活運用
3、數學函數庫中的100%的內容。
4、網路庫中的60%以上的內容,對各個函數的功能比較熟悉。
5、字元串處理函數下的60%以上的內容,特別是各種處理函數。
6、正則表達式函數下的90%以上的內容,特別是各種正則處理
7、一些安全庫下的40%以上的內容,如果對於安全沒有接觸的話根本就不可能掌握PHP
8、XML處理,熟悉SAX、DOM以及JDOM的優缺點並且能夠使用其中的一種完成XML的解析及內容處理。
9、圖形圖像函數庫下的80%以上的內容,特別是一些圖像生成和處理
10、MySQL 資料庫函數下的90%以上的內容,特別是處理各種數據的函數
11、數組處理函數下的90%以上的內容,特別是各種操作處理函數
12、其它PEAR,PECL,和一些擴展類庫中的80%以上的內容,特別是一些常用的類的處理
13、針對不同的需求,查找不同的函數庫。
14、測試:必須熟悉使用phpunit編寫測試用例完成代碼的自動測試。
15、管理:必須熟悉使用xinc, phing等完成工程管理的常用任務,例如工程編譯、生成phpdoc、生成、版本控制、自動測試。
16、排錯:應該可以根據異常信息比較快速的定位問題的原因和大致位置。
17、思想:必須掌握OOP的主要要求,這樣使用PHP開發的系統才能是真正的PHP系統。
18、規範:編寫的代碼必須符合流行的編碼規範,這樣程序的可讀性才比較好。
19、博學:掌握OOA、OOD、YiiFramework 、Zendframework、cakephp、symfony、模板技術等流行技術,掌握軟體架構設計思想、搜索引擎優化、緩存系統設計、網站負載均衡、系統性能調優等實用技術。
20、多去看別人寫的代碼,php優秀的框架很多,很多人在認知上就有一個錯誤。認為自己能用一個框架開發一個系統了就認為自己已經熟悉這個框架了,其實會使用他並沒有什麼一個框架基本都有用戶手冊,一看基本都會使用了,要想自己技術上面提升,建議多看看這些框架的實現原理(設計模式)。
希望通過對PHP程序員必備技能的整理,能夠幫助到你,更好的探索php程序世界。
php實際開發怎麼處理錯誤
在php開發過程中,由於不知道向誰求助而心慌意亂地判斷以為自己不適合學php。其實錯誤在每個人學習過程中都會碰到的,千萬不要妄自菲薄。很多錯誤在報錯的代碼提示中已經告訴我們了,仔細看,不會就百度。現總結一些常見的php錯誤,以共享php新人。
Php常見錯誤提示
一、Fatal error: Call to undefined function……
函數不存在,可能的原因:
1、系統不存在這個函數且你也沒自定義
2、有人會問,我在別的機器上就不報錯。那是因為環境不同,這個函數在本機沒開,怎麼開?你百度函數名字,就能查到這個函數屬於哪個dll,去php.ini里開啟。
實例講解:PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解決辦法
在一台處理網路支付的伺服器遷移的時候,發現不能支付。
PHP環境:
PHP版本為5.3.3
系統為Red Hat 4.1.2-54
查看apache的錯誤日誌,發現是加密文件中一個函數bcmul()報錯:
複製代碼 代碼如下:PHP Fatal error: Call to undefined function bcmul() in /php_rsa.php on line xxx
解決辦法:
使用如下命令:
複製代碼 代碼如下:yum install php-bcmath
就安裝好了。
如果出現下面這種情況:
複製代碼 代碼如下:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.yun-idc.com
* extras: mirrors.yun-idc.com
* rpmforge:
* updates: mirrors.yun-idc.com
Setting up Install Process
Resolving Dependencies
— Running transaction check
— Package php-bcmath.x86_64 0:5.1.6-40.el5_9 set to be updated
— Processing Dependency: php-common = 5.1.6-40.el5_9 for package: php-bcmath
— Running transaction check
— Package php-common.x86_64 0:5.1.6-40.el5_9 set to be updated
— Processing Conflict: php53-common conflicts php-common
— Finished Dependency Resolution
php53-common-5.3.3-13.el5_9.1.x86_64 from installed has depsolving problems
— php53-common conflicts with php-common
Error: php53-common conflicts with php-common
You could try using –skip-broken to work around the problem
You could try running: package-cleanup –problems
package-cleanup –dupes
rpm -Va –nofiles –nodigest
就需要使用yum update 之後再yum install php53-bcmath就好了
順便了解了一下,bcmath這個函數是PHP數學擴展中的一個。可以使用 bcscale() 來設置全局默認的小數位數,具體用法如下:
複製代碼 代碼如下:string bcmul ( string $left_operand , string $right_operand [, int $scale ] )
例子:
?php echo bcmul(‘1.34747474747′, ’35’, 3); // 47.161 echo bcmul(‘2’, ‘4’); // 8 ?
此函數在php.ini中的選項:
複製代碼 代碼如下:
[bcmath]
; Number of decimal digits for all bcmath functions.
;
bcmath.scale = 0
二、syntax error, unexpected T_STRING, expecting……
嚴重語法錯誤,例如syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in F:\phpnow\htdocs\index.php on line 4
後邊標著行號,自己去檢查那一行的標點就行
如果是 第三行 echo 1 後邊沒加;,報錯會報 on line 4 ,on line 4,就是第四行
實例講解:
其實,這是一個非常容易解決掉的問題。在我看來,似曾相識,呵呵,最近學JavaScript可是學會了使用var聲明變數。
其實,在PHP中根本不需要使用var聲明的,但是當一個變數作為一個類的成員變數的時候,使用var還是沒有問題的。
在外部使用var就報錯Parse error: syntax error, unexpected T_VAR in…,例如我的出錯信息:
Parse error: syntax error, unexpected T_VAR in D:\Apache2.2\htdocs\shirdrn\page\p2\pageUtil.inc on line 34
我在測試:在一個類的內部,使用一個自己定義的類對象作為這個類的成員時,出錯了。
Address類對應的address.inc代碼:
?php class Address { var $road; function Address(){} function setRoad($road){ $this-road = $road; } } ?
Person類及其測試代碼為person.php如下:
?php require(“address.inc”); class Person { var $name; var $address; function Person(){ } function display(){ echo “Name : “.$this-name.”BR”; echo “Road : “.$this-address-road.”BR”; } } var $p = new Person(); $p-address = new Address(); $p-address-setRoad(“Chagnchun Road”); $p-name = “Shirdrn”; $p-display(); ?
測試輸出現異常:
Parse error: syntax error, unexpected T_VAR in D:\Apache2.2\htdocs\shirdrn\page\p2\pageUtil.inc on line 34
就是因為在person.php代碼中使用var聲明變數,PHP中是不能這樣的,只要使用「$」符號起始就表示這個字元後面的是一個PHP變數。
呵呵:-)
其它網友的補充方法:
問題解決:syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or 前兩天開始自己php之旅,做一個很普通的網站,結果我們的php是5.0版本,伺服器是4.0版本,納悶死咯。 昨天忙了一天,今天早上一來,在一篇文章發現了,解決方法。Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ ,如果有「public」,就將「public」去掉。就不會出錯,如果「public」 是定義變數的話,將「public」 改為「var」。
三、Parse error: syntax error, unexpected T_VARIABLE in XXX.php on line XXX
這條語句是PHP常見的報錯,一般是在XXX行的上一行,或者是XXX行,缺少分號。或者在雙引號中使用雙引號,且沒有轉義等等。
解決方法:找到XXX.php的XXX行,按照上面的分析,找到自己的錯誤,改正即可。
貼士:作為編程人員,要做到代碼嚴謹,思維清晰,並且細心。人非聖賢孰能無過,但盡量避免這些因為粗心出現的錯誤,這樣才能成為合格的程序員。
四、Parse error: syntax error, unexpected ‘X’ in XXX.php on line XXX
這條語句依然是PHP常見的報錯,報錯原因是在XXX.php的XXX行,出現了PHP無法識別的字元。常常是因為function,if等需要『{‘、『}’的地方沒有閉合,或者在編程的時候,不小心在『;’的後面誤打了幾個字元。
解決方法:找到XXX.php的XXX行,刪除多出的字元,添加缺少的字元即可。
五、syntax error, unexpected $end
邏輯忘了閉合 這個報錯還有個特徵,他會提示你最後一行代碼報錯,譬如你一共30行,他就告訴你 on line 30,這時候你別檢查第三十行,你要把30行挨個,檢查一遍,看看哪個標籤沒閉合。
一共3000行,他就告訴你 on line 3000,這時候你別檢查這3000行了,如果你程序排版很亂,在3000行里找哪個括弧是個很麻煩的事……我教你一招:ctrl+a ctrl+d alt+f4
好了,你現在可以重寫了。
另一種思路:
Parse error: syntax error, unexpected $end in script.php on line xx
調試了一會後發現產生錯誤的行是文件中間某行
//$str .= “?\n”;
想起來了 PHP 解釋器允許的結尾標記那行還可以用單行注釋,即 //$str .= “?\n”; 被解釋成結尾標記前有注釋,注釋的內容是 //$str .= “,而 ? 後面的 \n”; 會被解釋作 PHP 塊外的內容按 HTML 輸出出去!結果是給 $str .= “?\n”; 這行添加 // 成注釋後,反而多了個 ? 的結束標記,造成原來真正的結束標記成了意料之外的(unexpected)了。
解決辦法就是直接刪掉這一行即可。
PHP 開始和結束標記所在行別寫其它東西,是個好習慣。
六、Notice:Undefined varialbe:……
這是一個比較常見的錯誤,解決方法:error_reporting調整錯誤級別,
以上就是為大家分享的PHP常見的6個錯誤提示,給大家提供了大概的解決思路和方向,希望對大家的學習有所幫助。
一個php項目,報出了異常,請您解答。
根據信息來看:這是smarty模板寫的不對,可能清況是你配置了smarty的開閉標籤為『{』,’}’,然後在html中(這裡是你的javascript代碼中)出現了這些開閉標籤,然後smarty在編譯的時候就會以為遇到smarty語法,然後進行編譯,顯然,你這裡是javascript邏輯,而不是smarty邏輯,smarty編譯就是發生錯誤。
解決方法有兩種,任選一種應該可以:
1 重新定義個smarty開閉標籤,保證不與常用標籤衝突
2 用smarty中的{literal}標籤,來包裹javascript代碼,示例可參考
{literal}
script language=javascript
!–
function isblank(field) {
if (field.value == ”)
{ return false; }
else
{
document.loginform.submit();
return true;
}
}
// —
/script
{/literal}
Literal 標籤區域內的數據將被當作文本處理,此時模板將忽略其內部的所有字元信息. 該特性用於顯示有可能包含大括弧等字元信息的 javascript 腳本. 當這些信息處於 {literal}{/literal} 標籤中時,模板引擎將不分析它們,而直接顯示.
php源碼bug怎麼修復
你好,你要看下是報什麼錯誤
1、是框架問題,可以看下框架的文檔
2、如果是原生php問題,直接找PHP文檔
希望對你有幫助!
PHP做得網站卡了怎麼辦
網站卡說明網站有性能瓶頸,性能瓶頸是多方面的。對於PHP來說主要有以下幾點
後台代碼有bug或者存在性能缺陷,這是最常見的。也是最容易處理的。簡單點就是通過代碼分析,找出耗時長或者卡頓的代碼加以優化。
循環太多:循環太多就考慮如何去掉循環,或者優化循環體結構,包括每次提前計算好變數,不在循環體內做過多運算。
IO瓶頸:就是sql語句有缺陷,或者磁碟讀寫過慢,網路帶寬過低。sql優化包括索引優化,分表分庫,啟用redis,memcache等等優先順序從前到後,網上都有很多教程。磁碟讀寫慢,就要考慮上固態硬碟。帶寬就要聯繫網路運營商解決
精簡前端頁面。現在頁面功能越來越複雜,卡頓不一定是後台,前端出現問題也很多。包括頁面內容太多(適當縮減一部分網頁內容),js,css,圖片太大(對js,css進行壓縮,去掉冗餘代碼等。使用壓縮格式的圖片,如jpg格式控制圖片大小(盡量在100K甚至10K以內)啟用網頁緩存等)
深度優化性能,包括採用更快的PHP(PHP7.2),更快的伺服器(Linux+nginx),更快的mysql(讀寫分離)等等。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246030.html