我有一个名为 myMenu.php 的库文件

<?php
class myMenu{
    function show_menu()
    {
        $obj = & get_instance();
        $obj->load->helper('url');

        $menu = "<ul>";

        $menu .= "<li>";
        $menu .= anchor('books/index','List of books');
        $menu .= "</li>";

        $menu .= "<li>";
        $menu .= anchor('books/input','Books entry');
        $menu .= "</li>";

        $menu .= "</ul>";

        return $menu;
    }
}

现在我在我的 Controller books.php 中加载了这个库
function index()
    {
        $this->load->library('myMenu');
        $menu = new myMenu;
        $data['menu'] = $menu->show_menu();
        $this->load->view('main_view',$data);
    }

但是页面显示错误 An error occurred : Unable to load the requested class: mymenu 。为什么此错误将类名显示为 mymenu(全部为小写),其中我在 Controller 中编写了 myMenu

最佳答案

两个问题:

1)您的命名约定是错误的。

在 CodeIgniter 中,库必须以大写字母开头。
类名和文件名都必须以大写字母开头,并且必须匹配。
请参阅下面的文档。
https://www.codeigniter.com/user_guide/general/creating_libraries.html

2) 你不应该用 new 实例化 myMenu 。
访问您加载的库时,这几乎是通常的方式:

    $this->load->library('mymenu'); // when calling the loader, the case doesn't matter
    $data['menu'] = $this->mymenu->show_menu(); //'mymenu' is the lowercase of the class name

关于php - Codeigniter 无法加载库类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14300311/

10-11 03:06