在PHP中处理两次声明类

时间:2014-02-23 12:25:20

标签: php oop

我正在使用第三方ostickets应用程序。 include / class.passwd.php的第17行包含使用require_once(INCLUDE_DIR.'PasswordHash.php');创建对象的代码class PasswordHash {...}

我的问题是我在脚本中使用第三方类PashwordHash而不是ostickets,而且我首次使用PasswordHash时需要使用ostickets。

由于ostickets是一个包,它包含自己的PasswordHash.php副本,因此required_once不会阻止该类被声明两次。我宁愿不使用if(!class_exists('PasswordHash')){require_once(INCLUDE_DIR.'PasswordHash.php');}之类的东西修改osticket包,因为如果我升级ostickets并忘记进行更改,这将导致问题。

我还不想通过再次更改类名来修改包含PasswordHash类的第一个文件,以便将来升级而不会出现问题。

我看到他们的选择......

  1. 修改其中一个第三方库,即使我不愿意。
  2. 当我第一次使用它时以某种方式宣布该类,并以某种方式“销毁它”,然后继续我的业务与ostickets。我不认为这是可能的,但我不确定。
  3. 首次使用PasswordHash时创建命名空间。这是一个可行的选择吗?如果是,那该怎么办?
  4. 也许其他我没有想过的东西?
  5. 由于

1 个答案:

答案 0 :(得分:3)

这确实是命名空间的用途:

<?php

  namespace NiceNamespaceName;

  class PasswordHash
  {
  }

?>

然后你可以这样使用它:

<?php
  $hash = new \NiceNamespaceName\PasswordHash();
?>