8

PHP5.3でCI2.0を使用しています

「DatamapperORM」を使い始めたばかりで素晴らしいです!ただし、クラスの名前に関する1つの大きな問題です。

「users」というデータベーステーブルがあるので、dmモデルは「user」であり、同じ名前の「user」のコントローラーもありますか?

したがって、「ユーザー」コントローラー内で「ユーザー」モデルを使用することは不可能です。

この問題を解決するための最良の方法は何ですか?

どうもありがとう

よろしくお願いします

4

6 に答える 6

16

CodeIgniter の欠点の 1 つは、コントローラー、モデル、またはライブラリーに同じ名前を付けられないことです。これは主に PHP の問題ですが、明らかに同じ名前を付けることはできませんが、2 つの方法で回避できます。

  1. PHP 名前空間 - できません。それらは PHP 5.3 のみであり、コミュニティの 90% が実装されていればキックオフします。
  2. コントローラーの接頭辞 - これは私が追加したいものですが...まあ、誰にとっても問題があります。少なくとも 2.1 まで待つ必要があります。

現時点で私が推奨できるのは、モデルとライブラリに慎重に名前を付けることです。

コントローラ - ユーザー
ライブラリ - ユーザー
モデル - User_model | ユーザー_m

面倒ですが、今のところはそのうちの 1 つにすぎません。

于 2011-03-03T11:17:23.617 に答える
3

したがって、「ユーザー」コントローラー内で「ユーザー」モデルを使用することは不可能です!!

そうではありません。ユーザーガイドをもっと注意深く確認する必要があります ;)

モデルに、最初に定義された名前以外の名前を付けることができます。

モデルを別のオブジェクト名に割り当てたい場合は、ロード関数の 2 番目のパラメーターを介して指定できます。

$this->load->model('Model_name', 'fubar');    
$this->fubar->function();
于 2011-03-03T04:39:49.787 に答える
0

コントローラのファイル名とクラス名を「Users」に変更するだけです。モデル名を変更する必要はありません。

コントローラ:ユーザー
モデル:ユーザー
データベーステーブル:ユーザー

Datamapperのドキュメントをご覧ください。

于 2011-03-31T04:05:52.567 に答える
0

「プロジェクト」の場合、次のように名前を付けました。

コントローラー:
プロジェクトは MY_Controller を拡張します CI_Controller を拡張します

モデル:
ProjectModel はモデルを拡張します

View
project/projectManager // メイン コンテンツとして
project/_projectItem // サブビューとして _ アンダースコアを使用

それはまったくうまくいきます。

于 2013-03-27T20:37:31.510 に答える
0

私はお勧めします:

  • コントローラ - ユーザーまたは/およびユーザー
  • ライブラリ - Users_lib または Users_library または User_lib または User_library
  • モデル - Users_model または Users_m または User_model または User_m

コントローラーの User と Users という単語を保持して、適切な URL を保持します。

モデルとコントローラーの複数形または単数形の使用に一貫性を持たせてください。

于 2012-09-05T03:18:59.937 に答える