1

PHP が最近の更新で実装したすばらしい新しい名前空間機能を使用してライブラリを作成しています。ただし、クラスの 1 つから 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();

    }
}
4

1 に答える 1

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';

ほとんどの場合、それだけです。そうでない場合は、ここに属さないため、ここでは説明しないオプションがいくつかあります。

楽しむ!

于 2013-11-06T18:56:26.017 に答える