我正在使用PHP在最近的更新中实现的精彩的新命名空间功能创建一个库。但是,我需要在我的一个类中使用 simple_html_dom.php 类。我使用的是符合 PSR-0 的标准自动加载器类,但由于下划线,我在尝试创建 simple_html_dom 类的新对象时出现错误。
在查看我的自动加载器类时,它正在用下划线代替重击。这很容易解决,但我担心它可能会破坏我的 PSR-0 合规性。我想知道解决遗留库此类问题的最佳实践是什么。
目录结构
- vendor/
- MyStuff/
- lib/
- simple_html_dom.php
- MyClass1.php
我的班级1.php
<?php
namespace MyStuff;
// This require works
require(__DIR__ . '/lib/simple_html_dom.php');
class MyClass1 {
public function __construct() {
// This breaks
// Warning: require(C:wwwvendorLoUsimplehtmldom.php): failed to open stream
$html = new simple_html_dom();
}
}
给出这个 - 自我广告 - 回答只是因为你告诉我这样做。 :)
您可以使用我的自动加载器类:Jm_Autoloader
。(你在评论中告诉它对你有用)
它旨在与OLD_SCHOOL_CLASS_NAMES
和newschoolclassNames
一起使用,并且两种样式混合在一起。
使用PEAR易于安装:
pear channel-discover metashock.de/pear
pear channel-update metashock
pear install metashock/Jm_Autoloader
在您的主要 php 脚本之上,只需添加:
require_once 'Jm/Autoloader.php';
在大多数情况下就是这样。如果没有,有些选项我不会在这里描述,因为它不属于这里。
玩得愉快!