我想重寫_()
PHP函數,以便它支持一個或多個參數。使用PHP代碼可以做到這一點嗎?是否可以重寫默認的PHP函數?
3
A
回答
1
使用Runkit extension可以。
但是,它通常不被認爲是一個好主意,除了用於單元測試之類的東西,你可能想要隔離你的一些功能。
對於一般用途,您不應該重寫內置函數,因爲它會讓您的代碼更難以維護,並且會使您難以調試一些問題。
此外,Runkit擴展名被標記爲'實驗',這意味着它不應該在生產系統中使用真的。
3
不,但使用PHP版本> = 5.3.0,您可以使用namespacing。
1
您可以嘗試runkit extension,但在生產環境中它被認爲是不好的做法。另請參見Redefining PHP function?
1
真的不這樣做!即使你是這個項目的唯一開發者,並且知道你的項目不會成功,你永遠不會知道你的代碼將被使用多長時間(通常比你想象的要長得多)。如果另一位開發人員不得不深入到你的代碼中,他將會非常困難,因爲他/她不能依賴PHP本身。
更好的方法是編寫你自己的方法/函數,然後調用你想覆蓋的PHP函數。通過這種方式,開發人員可以立即看到,這不是標準的PHP函數,即使PHP將在未來的版本中允許其他參數,您也將擁有一個乾淨的解決方案。
相關問題
- 1. 是否可以重寫默認的析構函數?
- 2. 是否可以更改PHP函數的默認參數?
- 3. 是否可以在F#中編寫默認函數?
- 4. 是否可以重寫內聯函數?
- 5. 是否可以重寫「調用」函數?
- 6. 是否可以重寫ASP.NET MVC中[Authorize]的默認行爲?
- 7. 是否可以「添加」到默認的拷貝構造函數?
- 8. 重寫默認的構造函數
- 9. 一個活動的默認構造函數是否可以用monodroid重載?
- 10. 是否可以重寫MyClass *(不是MyClass)的析構函數?
- 11. 在Javascript中重寫默認函數?
- 12. 是否可以重寫.InsertOnSubmit(實體)函數以添加功能
- 13. 是否可以重寫window.document.location.host?
- 14. 是否可以重寫drupal_build_css_cache?
- 15. 是否可以重寫Haxe中的js.html.Window類的函數?
- 16. 是否可以重寫vb.net資源管理器的GetString函數?
- 17. 是否可以重寫wxHtmlWindow中的HTTP函數?
- 18. 是否可以重寫全局函數的phpdoc返回類型?
- 19. 是否可以更改默認目標?
- 20. 是否有默認的默認構造函數?
- 21. 重寫數默認頁面
- 22. 是否可以重寫啓動完成構造函數?
- 23. 是否可以使用PHP來編寫Amazon Lambda函數?
- 24. 模板參數的默認參數是否可以專用?
- 25. 派生類中的默認構造函數是否可選?
- 26. 在構造函數中,字段是否可以不是null(或其默認值)?
- 27. 默認使用PHP函數
- 28. 是否可以在打字稿中爲接口函數提供默認參數?
- 29. 重寫默認ResourceProvider
- 30. 重寫默認值
不好的做法,危險 - 最後發佈是2006年。 –
@WesleyvanOpdorp我說,在我的答案中,但它仍然是一個問題的答案。 – Fabio
對不起,應該在評論開始時添加'不僅'。 –