簡體   English   中英

PHP 4至PHP 5-isset檢查布爾if語句

[英]PHP 4 to PHP 5 - isset checks on boolean if statements

場景 :我們正在將應用程序從PHP 4轉換為PHP5。該應用程序需要能夠在PHP 4上運行一段時間,這意味着尚不能使用PHP 5特定的元素。 我們只是在嘗試確保該應用程序在兩個平台上都可以運行。

應用程序中有很多條件如下:

if ($variable) { // do something }

這些變量中的某些變量最終根本沒有定義,我們正在嘗試減少錯誤的數量(其中有很多)。

為了解決這些錯誤,我們在各個方面添加了檢查,如下所示:

if (!isset($variable)) $variable = "";

要么

if (!empty($variable)) { // do something }

問題 :有誰知道解決這些錯誤的更簡單方法。 問題在於這些變量正在跨文件使用(通過include),並且定義該變量可能會更改該文件中的邏輯流(如果其執行檢查)(if(!isset($ variable)){//做某事}) 。

這個問題的目的是減少跟蹤這些變量的每個單獨使用的錯誤和時間消耗。 當前,我們必須徹底檢查變量的作用(這可能需要花費大量時間),或者我們正在執行“即發即棄” /希望修復的校正方法。

-編輯-有誰知道像cppcheck這樣的程序可以以某種方式引用這些變量或創建某種鏈式查找錯誤並鏈接可能的引用? (我希望這是有道理的。)

AFAIK有一個代碼檢查器,可以查找未初始化的變量,可以正常工作。 您可以處理它的消息,它稱為PHP Mess Detector ,它的規則之一是覆蓋未初始化的變量。 但是,這永遠不可能是完美的。

另一種方法是跟蹤錯誤消息,並使用它們來定位代碼中的位置。 我過去曾經做過,而且效果很好,只是反復進行並保持警告日志。

您也可以使用白名單並在請求開始時導入白名單變量。 未列入白名單的提交需要引起訪問沖突錯誤才能使其正常運行,因此,盡管可以使您的應用程序更安全,但是與跟蹤警告相比,這種方法的工作量更大。

請同時參閱:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM