我試圖讓自己的類笨,所以我已經在CI創建自己的類
libraries
此類稱爲
Menu
的文件夾中做了一個文件,它包含一個類來爲我的網站創建一個導航欄。這個類是像
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);
?>
但不幸的是我得到這個錯誤
Fatal error: Call to undefined function draw() in /Users/username/Sites/infinity2.0/application/libraries/Menu.php on line 22
第22行是$ output。= draw($ value);
但我不知道如何解決這個問題,我認爲它是因爲再次調用自己的方法..任何幫助,歡迎和讚賞。 :)
很高興您爲此創建一個庫。它讓我感覺;) –
請記住,一旦你加載CI庫,你可以通過使用'$ this-> libraryName-> method();'來訪問它的方法。在這種情況下:'$ this-> menu-> draw();' –
謝謝!我從CI網站的文檔中找出了它。我現在所想的只是硬編碼菜單數組的存儲位置(不要使用數據庫) – Reshad