我正在尝试在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'] = array('menu');
当我打电话给班级时我会这样做
<?php
$m = new Menu();
echo $m->draw($menu);
?>
但不幸的是我收到了这个错误
致命错误:在第22行的/Users/username/Sites/infinity2.0/application/libraries/Menu.php中调用未定义的函数draw()
第22行是$ output。= draw($ value);
但我不知道如何解决这个问题我认为这是因为再次调用自己的方法..任何帮助都是受欢迎和赞赏的。 :)
答案 0 :(得分:3)
更改
$output .= draw($value);
到
$output .= $this->draw($value);
$this
引用当前对象,因此如果您想在其自身内递归调用draw()
,则需要使用它来引用它..
您可能需要阅读php.net网站上的说明:http://php.net/manual/en/language.oop5.basic.php