功能重复

时间:2011-07-22 11:29:10

标签: php function

首先,我做了我的研究。但我找不到任何解决方案。 这就是我想要做的。 我有多个具有相同功能名称的文件,在我的测试中我没有指定该功能并保持简单。

将包含多个文件,但由于函数已经声明,我发现致命错误无法重新声明函数...,之前已在...中声明

我知道如何避免这个致命的错误,但由于我包含多个具有相同功能的文件,因此无法修复它。

我的问题是,这是合乎逻辑的,还是我应该重新考虑并做一些不同的事情。

我的朋友告诉我,可以用物品处理等等。

感谢任何建议。

4 个答案:

答案 0 :(得分:4)

功能相同吗?在这种情况下,您可以通过使用function_exists()子句包装函数声明来“解决”问题,请参阅How to avoid fatal error Cannot redeclare function in PHP

<?php
if (!function_exists('utility')) {
  function utility() {
    // ...
  }
}
?>

或者,您可能值得花些时间阅读namespaces

  

在PHP世界中,命名空间旨在解决两个问题   创建时遇到的库和应用程序的作者   可重用的代码元素,如类或函数:

     
      
  1. 您创建的代码与内部PHP之间的名称冲突   类/函数/常量或第三方   类/功能/常数。
  2.   
  3. 能够对设计的Extra_Long_Names进行别名(或缩短)   缓解第一个问题,提高源代码的可读性。 (source
  4.   

答案 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'的所有其他文件中?