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 类...

第二个问题是我想知道你到底想做什么?FuelPHP 的 HTML 类是一个静态帮助类,实例化它是毫无意义的,因为它只包含静态方法......

于 2012-10-31T17:17:24.150 回答