2017-07-31 44 views
0

如何根據包含各種函數定義的php文件的需求包含特定的函數。如何在PHP中使用require_once()或include()函數包含特定函數?

例如,
PHP文件的functions.php包含3個函數a(),B()和c()
我必須使用require_once( '/ F /的functions.php')在other.php文件來使用函數c 。

我能做些什麼只包括函數c在文件other.php文件使用require_once()函數,並避免其他函數不包括在內?

+3

如果包含其他功能(a和b),會出現什麼問題? –

+1

沒問題,我只是想避免包含目前不需要的不必要的功能。 – xyz

+0

@xyz沒有內置的方法來做到這一點。任何黑客的開銷都比僅包含函數的開銷要高。 – Kaspars

回答

1

沒有內置的方法來做到這一點。儘管如果你爲這項運動做的話,還有很多方法可以解決它。

雖然這強烈不推薦。真的,只是不這樣做...這裏是如何:

1)閱讀文件爲文本。

2)發現功能塊,並提取其

3)通過eval運行它。

這將導致在該文件中設置的任何全局狀態不被運行。你可能會或可能不想要。

SuperClosure做類似我相信連載關閉,默認情況下PHP不支持的東西。

人們可以充分利用PHP7 abstract syntax tree還包括相關的功能。例如,如果定義了三個函數 - ABCA內部使用B。如果包含A,則還需要包含B

這不會是不僅僅包括整個文件更好的性能,但隨時證明我是錯的基準。


您可能也有興趣namespaces。類和函數都支持它。

1

你不能,期間。 PHP沒有任何模塊系統。要「包含函數」,您只需執行一個源代碼文件(include將執行的操作),這將通過執行文件中的代碼來定義這些附加函數或文件中的其他任何內容。你不能有選擇地只挑選要運行的代碼的某些部分。

+0

不完全正確。手動解析文件,將文本提取爲文本並通過'eval'運行它是可能的。儘管非常不推薦(請不要),但它是可行的。 – Kaspars

+1

@Kaspars這不是我曾經推薦過的事情,如果代碼在同一文件中定義了與其他代碼部分的關係,代碼也不可執行。 – deceze

+0

@deceze同意。 :) –