首先,我做了我的研究。但我找不到任何解决方案。 这就是我想要做的。 我有多个具有相同功能名称的文件,在我的测试中我没有指定该功能并保持简单。
将包含多个文件,但由于函数已经声明,我发现致命错误无法重新声明函数...,之前已在...中声明
我知道如何避免这个致命的错误,但由于我包含多个具有相同功能的文件,因此无法修复它。
我的问题是,这是合乎逻辑的,还是我应该重新考虑并做一些不同的事情。
我的朋友告诉我,可以用物品处理等等。
感谢任何建议。
答案 0 :(得分:4)
功能相同吗?在这种情况下,您可以通过使用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)
醇>
答案 1 :(得分:2)
如果您的函数具有相同的名称,那么它们应该执行相同的操作。如果他们不这样做,那么你应该重命名它们以反映它们的作用。这样,您可以包含所有功能一次(在脚本的开头)并在任何地方使用它们。
我不建议仅使用对象作为解决此问题的方法(尽管我建议将其用于其他原因)。
所以回答部分问题
我的问题是,这是合乎逻辑的,还是我应该重新考虑并做一些不同的事情。
是的,你应该做一些不同的事情,即使它意味着命名空间你的功能(例如把关注区域后面跟一个下划线)
function user_rename(){
}
function category_rename(){
}
function group_rename(){
}
答案 2 :(得分:0)
// 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();
答案 3 :(得分:0)
我认为你说过“......或者我应该重新思考并做些不同的事情。”
它不一定是一个对象。但是为什么不将所有常用功能外包在一个文件中(即common.php
)并将其包含在require_once 'common.php'
的所有其他文件中?