我正试图在CodeIgniter中创建一个自己的类,因此我在文件夹中创建了一个文件
库
这类被称为
菜单
它还包含一个类,用于为我的网站创建导航栏。这个类就像
class Menu {
public function draw($menu) {
$CI =& get_instance();
$output = '';
foreach ($menu as $key => $value) {
$output .= "<li>";
if (is_array($value)) {
if (strpos($key, '|') !== false) {
$param = explode('|', $key);
$output .= anchor($param[1], $param[0]);
} else {
$output .= anchor('#', $key);
}
$output .= PHP_EOL."<ul>".PHP_EOL;
$output .= draw($value);
$output .= "</ul>".PHP_EOL."</li>".PHP_EOL;
} else {
$output .= anchor($key, $value, $CI->uri->slash_segment(1, 'leading') == $key ? 'class="active"' : '');
$output .= "</li>".PHP_EOL;
}
}
return $output;
}
}
我已经将这个类作为自动加载放在库下的配置文件中
$autoload['libraries']=数组('menu');
当我调用类来使用它时,我会执行
<?php
$m = new Menu();
echo $m->draw($menu);
?>
但不幸的是,我得到了这个错误
致命错误:在第22行/Users/username/Sites/infinity2.0/application/libraries/Menu.php中调用未定义的函数draw()
第22行是$output。=提款($value);
但我不知道如何解决这个问题,我认为这是因为再次调用了自己的方法。。欢迎并感谢任何帮助。:)
更改
$output .= draw($value);
至
$output .= $this->draw($value);
$this
指的是当前对象,所以如果你想在其内部递归调用draw()
,你需要用它来指代它。
您可能想阅读php.net网站上的解释:http://php.net/manual/en/language.oop5.basic.php