Я пытаюсь сделать собственный класс в CodeIgniter, и поэтому я сделал файл в папкесоздание собственных классов в ДИ
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. Единственное, о чем я сейчас думаю, - это хранить массив массивов hardcoded (еще не использовать базу данных) – Reshad