在PHP中处理两次声明类 - php

我正在使用第三方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();
?>

方法链PHP OOP - php

通常,在许多框架中,您可以找到使用查询生成器创建查询的示例。通常您会看到:$query->select('field'); $query->from('entity'); 但是,在某些框架中,您也可以像这样$object->select('field') ->from(�…

PHP OOP:为域实体提供“身份” - php

这里有点抽象的问题。我正在尝试使用“域模型”模式,并用依赖项来限制其他麻烦-我需要一些有关生成用于Identity Map的Identity的建议。在我见过的有关Data Mapper模式的大多数示例中(包括本书中概述的一个示例:http://apress.com/book/view/9781590599099),用户似乎使用setter来手动设置给定Dom…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

PHP OOP概念付诸实践 - php

目前,我所拥有的是一份以程序庄园形式编写的审查表。我想更改一些内容,并希望在此过程中,根据过去的经验,在OOP中,网站的整个审核部分会更好。数据流如下:HTML表单=>提交=> jQuery验证=>? => PHP验证=>添加记录我的问题是要了解将POST数据传递给类的正确方法是使用AJAX / jQuery或使用具有标准感谢页…