Php Can';t在命名空间类中创建对象
我有一个这样的结构Php Can';t在命名空间类中创建对象,php,namespaces,fuelphp,Php,Namespaces,Fuelphp,我有一个这样的结构 namespace Html; class MyHtml extends Fuel\Core\Html { private $table = null; public function __construct($table) { $this->table = $table; } public function textarea() { } ...
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>
这可能不是一个fuelphp问题,但更像是一个PHP问题。这是否意味着如果我的类位于命名空间中,我就不能基于它生成对象?我必须为它提供一个静态函数吗
谢谢。您正在使用相对命名空间路径创建对象 使用命名空间的绝对路径:
$form = new \Html\MyHtml('form-item');
当然,您的自动加载器需要自动包含您的文件。如果没有自动加载器,请确保包含该文件:
include_once 'path_to_your_class/your_classfile.php';
$form = new \Html\MyHtml('form-item');
您应该使用
$form=new\Html\MyHtml('form-item')代码>
\
表示从根开始。如果不是从根开始,则从模板所属的命名空间中搜索Html\MyHtml
此外,确保在全局命名空间中解析FuelPHP视图后,使用自动加载器或require\u加载类,因此在这种特定情况下,Html\MyHTML应该可以工作
最大的问题是您在哪里创建了这个类,并且由于它使用非标准的类命名,您是否将它添加到引导中?FuelPHP的autoloader区分大小写,因此它将查找Myhtml类
第二个问题是我想知道你到底想做什么?FuelPHP的HTML类是一个静态助手类,实例化它是毫无意义的,因为它只包含静态方法…这将起作用。但是对于使用框架,我需要继续使用autoloader部分。但是,我似乎在配置文件中找不到它。
include_once 'path_to_your_class/your_classfile.php';
$form = new \Html\MyHtml('form-item');