3

名前の付いたライブラリファイルがあります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;
    }
}

このライブラリをコントローラにロードしました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書いたクラス名を(すべて小文字で)表​​示しているのですか?myMenu

4

2 に答える 2

13

2つの問題:

1)命名規則が間違っています。

CodeIgniterでは、ライブラリは大文字で始める必要があります。クラス名とファイル名はどちらも大文字で始まる必要があり、一致している必要があります。以下のドキュメントを参照してください。 https://www.codeigniter.com/user_guide/general/creating_libraries.html

2)myMenuを。でインスタンス化しないでくださいnew。ロードしたライブラリにアクセスする場合、これはほとんど通常の方法です。

    $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
于 2013-01-13T03:23:58.150 に答える
1

クラス名は大文字にする必要があります。class MyMenu

于 2013-01-13T03:13:46.050 に答える