首先,我對此做了我的研究。但我找不到任何解決方案。 在這裏,我想要做的。 我有多個文件具有相同的函數名稱,在我的測試過程中,我沒有指定該函數並保持簡單。重複功能
的多張文件將被包括在內,但因爲該函數已經聲明,我收到致命錯誤不能重新聲明功能......,先前宣佈...
我知道如何避免那個致命的錯誤,但由於我包含了多個具有相同功能的文件,所以無法修復它。
我的問題,這是否合乎邏輯,還是我應該重新考慮並做一些不同的事情。
我的朋友告訴我可以用物件等來處理。
感謝您的任何建議。
首先,我對此做了我的研究。但我找不到任何解決方案。 在這裏,我想要做的。 我有多個文件具有相同的函數名稱,在我的測試過程中,我沒有指定該函數並保持簡單。重複功能
的多張文件將被包括在內,但因爲該函數已經聲明,我收到致命錯誤不能重新聲明功能......,先前宣佈...
我知道如何避免那個致命的錯誤,但由於我包含了多個具有相同功能的文件,所以無法修復它。
我的問題,這是否合乎邏輯,還是我應該重新考慮並做一些不同的事情。
我的朋友告訴我可以用物件等來處理。
感謝您的任何建議。
功能是否相同?在這種情況下,你可能能夠通過包裝用function_exists()
子句函數聲明「黑客」解決該問題,請How to avoid fatal error Cannot redeclare function in PHP:
<?php
if (!function_exists('utility')) {
function utility() {
// ...
}
}
?>
或者,它可能是值得你花時間閱讀了關於namespaces:
在PHP世界,命名空間被設計爲解決兩個問題,圖書館的 作者和應用程序創建 可重複使用的代碼元素如類或功能時遇到的問題:創建代碼,以及內部PHP 類/函數/常量或第三方 類/函數/常量之間
- 名稱衝突。
- 將別名(或縮短)設計爲 的Extra_Long_Names的能力緩解了第一個問題,提高了源代碼的可讀性。 (source)
如果你的函數具有相同的名字,那麼他們應該做同樣的事情。如果他們不這樣做,那麼你應該重新命名他們以反映他們的工作。這樣,您可以將所有功能包括在一次(在腳本開始時),並在必要時使用它們。
我不會建議僅將對象用作解決此問題的方法(儘管我會建議將它們用於許多其他原因)。
因此,要回答你的問題的一部分
我的問題,是合乎邏輯的,或者我應該重新思考和做些事情不同勢。
是你應該做不同的事情,即使這意味着命名空間的功能(把關注隨後例如下劃線的區域)
function user_rename(){
}
function category_rename(){
}
function group_rename(){
}
好點。 (15個字符) – jensgram
// A.php
Class A {
static function myFunc(){
.................
}
}
// B.php
Class B {
static function myFunc(){
.................
}
}
// C.php
Class C {
static function myFunc(){
.................
}
}
// foo.php
include_once('A.php');
include_once('B.php');
include_once('C.php');
A::myFunc();
B::myFunc();
C::myFunc();
我覺得你說的。」 ..或者我應該重新思考,並做一些不同的事情。「
它不一定是一個對象。但爲什麼不將所有常見功能外包在一個文件中(即common.php
),並將其從require_once 'common.php'
的所有其他文件中包含?
如果功能相同,您可以更好地將功能提取到它自己的文件中幷包含該功能。 – Ikke
@Ikke那會更好,是的。 – jensgram