在命名空间类中使用非命名空间类的最佳实践是什么?

时间:2013-11-06 16:53:49

标签: php namespaces require autoloader

我正在使用PHP在最近更新中实现的精彩新命名空间功能创建库。但是,我需要在我的一个类中使用simple_html_dom.php类。我正在使用标准的PSR-0兼容自动加载器类,但是由于下划线,我在尝试创建simple_html_dom类的新对象时遇到错误。

在查看我的自动加载器类时,它会用下划线代替whacks。这很容易解决,但我担心这可能会破坏我的PSR-0合规性。我想知道用遗留库解决这个问题的最佳实践是什么。

目录结构

- vendor/
  - MyStuff/
    - lib/
      - simple_html_dom.php
    - MyClass1.php

MyClass1.php

<?php
namespace MyStuff;

// This require works
require(__DIR__ . '/lib/simple_html_dom.php');

class MyClass1 {

    public function __construct() {
         // This breaks
         // Warning: require(C:\www\vendor\LoU\simple\html\dom.php): failed to open stream
         $html = new simple_html_dom();

    }
}

1 个答案:

答案 0 :(得分:2)

给予这个 - 自我广告 - 仅仅因为你告诉我这样做而回答。 :)

您可以使用我的自动加载器类:Jm_Autoloader。 (你在评论中说它对你有用)

它旨在与OLD_SCHOOL_CLASS_NAMES以及\new\school\class\Names一起使用,两种风格混合在一起。

使用PEAR轻松安装:

pear channel-discover metashock.de/pear
pear channel-update metashock
pear install metashock/Jm_Autoloader

在您的主要php脚本之上添加:

require_once 'Jm/Autoloader.php';

在大多数情况下都是这样。如果没有,有一些我不会在这里描述的选项,因为它不属于这里。

玩得开心!