【问题标题】:Can I have a class with and underscore in it?我可以有一个带有和下划线的类吗?
【发布时间】:2012-09-06 03:28:17
【问题描述】:

我正在向我的 zend 项目添加一个 3rd 方库 (Hybrid Auth)。调用的主要类是 hybrid_auth。 我假设在类名中有一个下划线会在 zend 中引发错误? 我应该在整个库中重命名这个类还是创建自己的自动加载器会更好?

请见谅,我正在使用手机,稍后会尝试更新。

谢谢。

【问题讨论】:

  • 试试看。它奏效了吗?如果是这样,请不要担心。如果它没有找出原因。 (我希望下划线在类名中有效,因为下划线在 PHP 标识符中有效,但我不使用 Zend .. 或 PHP。)

标签: zend-framework hybridauth


【解决方案1】:

它本身不会引发错误。类名中的下划线非常好。

但默认自动加载器会尝试在文件hybrid/auth.php 中的include_path 上查找类hybrid_auth

您可以:

  1. 在引用类之前执行手动包含,以免自动加载

  2. 为此类 - 以及任何其他类似的类 - 编写自定义自动加载器,并将该自动加载器推送到 Zend_Loader_Autoloader 堆栈。

  3. 将类和/或文件名重命名为符合 PSR-0,以便标准自动加载器对此感到满意。

就个人而言,我会选择 (2):编写您自己的自动加载器。我讨厌猴子补丁第 3 方库代码,因为后续的库更新会覆盖我的 hack。

要编写自己的自动加载器,请查看this

【讨论】:

  • 太棒了,我会写我自己的自动加载器。我通过更改类的名称让它工作了,但我担心在某个地方它会回来困扰我。
  • 对于遇到这种情况的其他人:我犯了一个错误。我试图将我自己的后缀添加到自动加载器,这让一切都变得糟糕透顶。从 Hybridauth 下载的文件已经在文件夹 'Hybrid' 中包含文件 Auth.php 和类 Hybrid_Auth,所以只要你在自动加载器中注册'Hybrid_',一切都会好起来的。
  • 请注意大写/小写:原始问题将类名引用为hybrid_auth,上面的评论将其引用为Hybrid_Auth。很高兴你让它工作。干杯!
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 2021-04-09
  • 2021-09-02
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2020-08-21
相关资源
最近更新 更多