我正在使用第三方Ostickets应用程序。 include / class.passwd.php的第17行包含代码require_once(INCLUDE_DIR.'PasswordHash.php');
,该代码使用class PasswordHash {...}
创建对象。
我的问题是,我在脚本中较早使用Ordset来独立使用第三方类PashwordHash,并且在与Ostickets一起使用之前,我第一次使用PasswordHash是必需的。
由于ostickets是作为一个软件包提供的,因此它包含自己的PasswordHash.php副本,因此required_once
不会阻止对该类进行两次声明。我宁愿不使用if(!class_exists('PasswordHash')){require_once(INCLUDE_DIR.'PasswordHash.php');}
之类的方法修改osticket软件包,因为如果我升级ostickets并忘记进行更改,这将导致问题。
我也不想通过再次更改类名来修改包含PasswordHash类的第一个文件,以允许将来进行升级而不会出现问题。
我看到的我的选择...
修改第3方库之一,即使我不想这样做。
第一次使用该类时以某种方式声明该类,然后以某种方式“销毁”该类,然后继续使用Ostickets进行业务。我认为这是不可能的,但不确定。
首次使用PasswordHash时创建一个名称空间。这是可行的选择吗?
也许我没有想到的其他事情?
谢谢
最佳答案
这确实是名称空间的用途:
<?php
namespace NiceNamespaceName;
class PasswordHash
{
}
?>
然后,您可以像这样使用它:
<?php
$hash = new \NiceNamespaceName\PasswordHash();
?>