我有类似这样的结构
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
这可能不是一个燃料问题,而是更多的PHP问题。这是否意味着我不能根据我的类创建对象,如果它在命名空间中?我必须为它提供静态功能吗?
感谢。
答案 0 :(得分:1)
您正在使用相对命名空间路径创建对象。
使用名称空间的绝对路径:
$form = new \Html\MyHtml('form-item');
当然,您的自动加载器需要自动包含您的文件。如果您还没有自动加载器,请确保包含以下文件:
include_once 'path_to_your_class/your_classfile.php';
$form = new \Html\MyHtml('form-item');
答案 1 :(得分:1)
您应该使用$form = new \Html\MyHtml('form-item');
。
\
表示您从根开始。如果您不从根开始,则从模板所属的命名空间中搜索Html\MyHtml
。
此外,请确保使用自动加载器或require_once
加载类。
答案 2 :(得分:0)
FuelPHP视图在全局命名空间中解析,因此在这种特定情况下,Html \ MyHTML应该可以工作。
最大的问题是你在哪里创建了这个类,并且由于它使用的是非标准类命名,你是否将它添加到引导程序中? FuelPHP的自动加载器区分大小写,因此它将查找Myhtml类...
第二个问题是我想知道你究竟想做什么? FuelPHP的HTML类是一个静态助手类,实例化它是毫无意义的,因为它只包含静态方法......