2011-01-22 74 views
4

最近,我開始將我的Drupal 6模塊上的PHP 5.2.x Drupal的7 PHP 5.3.x,則應現在我得到以下警告棄用的功能:require_once()

棄用的功能:分配 新引用的返回值爲 require_once()(行 27 of C:\ Users \ ajinkya \ Desktop \ xampp \ php \ PEAR \ SOAP \ WSDL.php)已棄用。 WSDL.php的

第27行是:require_once 'HTTP/Request.php';

我無法弄清楚這是什麼警告的原因。在PHP 5.3.x中是否已更改require_once()的行爲?

Drupal 7中的file.inc有一行:require_once DRUPAL_ROOT . '/includes/stream_wrappers.inc;,它不會引發任何警告。爲什麼?

如果我把error_reporting(E_ALL & ~E_DEPRECATED);放在Drupal 7的setting.php中,警告就會消失。抑制這樣的警告是否好?

+0

根據我的經驗,錯誤是告訴你有什麼問題。抑制錯誤絕不是好事。話雖如此,我不知道這裏出了什麼問題。 – aqua 2011-01-22 20:32:50

+0

在這種情況下,我認爲你只是壓制警告,而不是錯誤。 – jocull 2011-01-22 20:35:36

回答

5

錯誤消息說代碼使用的是$something = &new SomeObject();而不是$something = new SomeObject();

&new在古代PHP版本中是必需的,以確保對象始終通過引用傳遞。但在最近的版本中,沒有理由這樣做,因此不推薦使用。

我不知道爲什麼你的PHP報告了不正確的文件名/行號,但...

0

我沒有看到PHP網站上的任何內容,表明require_once已被棄用。也許HTTP/Request.php內的某些內容被棄用?這是一個非常奇怪的警告。

2

這是很好的抑制這樣的錯誤?

取決於。忽略錯誤絕不是一個好主意。保持嚴格的報告是開發階段的好主意。但是,一旦PHP建議您使用類似這樣的調試消息,您就對其進行評估並根據此信息作出明智的決定。

您可以解決上述問題,解決它,或者如果它不是一個實際問題,可以忽略它。

通過引用分配對象不需要,因此不推薦使用。然而,這不是一個會導致錯誤的問題,也不會被語義禁止。在未來版本中刪除語法構造會破壞兼容性,所以不會發生。在這種情況下,明智的選擇是確認並忽略語法提示,或者刪除&,因爲它不是必需的,並且在此特定實例中的刪除大多不太可能破壞行爲。