0

私はこのような構造を持っています

namespace Html;  

class MyHtml extends Fuel\Core\Html {
        private $table = null;

        public function __construct($table) {
            $this->table = $table;
        }

        public function textarea() { 

        }
    ...

私のテンプレートで

<article class="modal hide fade" id="add-journal">
                <section class="modal-header">Add Journal</section>
                <section class="modal-body">
                    <?php 
                        $form = new Html\MyHtml('form-item');
                        ...other code...
                    ?>
                </section>
                <section class="modal-footer"></section>
            </article>

次のエラーが表示されます。

ErrorException [ Error ]: Class 'Html\MyHtml' not found

これは、fuelphp に関する質問ではなく、PHP に関する質問である可能性があります。名前空間にある場合、クラスに基づいてオブジェクトを作成できないということですか? 静的関数を提供する必要がありますか?

ありがとう。

4

3 に答える 3

1

相対名前空間パスを使用してオブジェクトを作成しています。

名前空間への絶対パスを使用します。

 $form = new \Html\MyHtml('form-item');

もちろん、オートローダーはファイルを自動的にインクルードする必要があります。オートローダーがない場合は、必ず次のファイルを含めてください。

include_once 'path_to_your_class/your_classfile.php';
$form = new \Html\MyHtml('form-item');
于 2012-10-25T08:05:33.660 に答える
1

を使用する必要があります$form = new \Html\MyHtml('form-item');

\、ルートから開始することを意味します。ルートから開始しない場合はHtml\MyHtml、テンプレートが含まれる名前空間から検索しています。

さらに、クラスがオートローダーまたはrequire_once.

于 2012-10-25T08:06:44.963 に答える
0

FuelPHP ビューはグローバル名前空間で解析されるため、この特定のケースでは Html\MyHTML が機能するはずです。

大きな問題は、このクラスをどこで作成したかということです。標準外のクラス命名を使用しているため、ブートストラップに追加しましたか? FuelPHP のオートローダーは大文字と小文字を区別するため、Myhtml クラスを探します...

2 番目の質問は、あなたが正確に何をしようとしているのだろうかということです。FuelPHP の HTML クラスは静的ヘルパー クラスであり、静的メソッドしか含まれていないため、インスタンス化することはかなり無意味です...

于 2012-10-31T17:17:24.150 に答える