CodeIgniter学習ノート


■URIlocalhost/project/class/function/id
Project:プロジェクト名class:コントローラを呼び出すクラスfunction:クラス内のメソッドid:渡されるパラメータ
デフォルトではindex.phpはurlに含まれる
■制御層アプリケーション/コントローラ/下にファイルを置く
コントロールレイヤクラス名は大文字でなければなりません.Controllerを継承し、コンストラクション関数にparent::Controller()を追加する必要があります.
//demo:
class Welcome extends Controller {

 function Welcome()
 {
  parent::Controller(); 
 }
 
 function index()
 {
  $this->load->view('welcome_message');
  echo "Hello World";
 }
 function doll(){
  echo "Bei bei huan ying ni";
 }
 function say($name,$words){
  echo $name.$words;
 }
 function say2($name="beibei ",$words="huan yi ni "){
  echo $name.$words;
 }
}


 
 
上記uriの方法でクラスまたはその中の方法にアクセスできます.デフォルトではindexメソッドlocalhost/project/Welcome//Hello Worldまたはlocalhost/project/Welcome/doll//Bei bei huan ying niにアクセスできます.
sayメソッドにアクセスするには、localhost/project/Welcome/say/leon/killerのように、渡されたパラメータ//leonkillerが出力されているページが表示されます.
□p.s:sayメソッドを呼び出すには2つのパラメータが必要である.さもないと間違えます.もちろんsay 2のようにsayのパラメータリストにデフォルト値を設定してパラメータを省略することもできます
WebサイトにURIが設定されていないか、ルートディレクトリから直接アクセスすると、CodeIgniterはデフォルトのコントローラをロードします.アプリケーション/config/routesを開きます.phpファイルはデフォルトコントローラを設定します:$route['default_controller']='Welcome';ここのWelcomeはあなたが使いたいコントローラの名前です.ホームページにアクセスするためにURIクリップを指定しないと、デフォルトの「Hello World」情報が表示されます.
注意:コントローラに_という名前が含まれている場合はremap()の方法は、あなたのURIに何が含まれているかにかかわらず、無視されます.このメソッドはURIフラグメントによってどのメソッドが呼び出されるかを決定するルールを廃止し、呼び出しメソッドのルール(メソッドのルーティングルール)を再定義できます.
 
function _remap($method)
{
    if ($method == 'c')
    {
      $this->comments();       
    }
    else
    {
        $this->$method();
    }
}

 
 
$methodが定義したパラメータに等しい場合、プログラムは特殊な操作を実行し、ここで柔軟に運用することができます.パラメータがcに等しい場合はcommentsを呼び出し、そうでない場合はユーザー入力のメソッドを呼び出します.
□P.S:実はブロックです
注意:コントローラに_が含まれている場合はoutput()メソッドでは、最終的なデータを直接出力するのではなく、常に呼び出されます.このメソッドはOOの構造関数に似ていて、どんなメソッドを呼び出してもこのメソッドは常に実行されます.function _output() {     echo 'I am here';}プライベートメソッドの定義(Private)場合によっては、外部で閲覧できないメソッドを非表示にしたい場合があります.メソッド名の前に下線を付けるだけで、メソッドをプライベート化するのは簡単です('')接頭辞をするとURLでアクセスできません.function _utility(){  echo "I'm the world!";}ここでlocalhost/project/Welcome/_を通過したい場合はutilityがアクセスするとObject not foundプロンプトが表示されます
作成したコントローラを自分で作成したフォルダの下に配置したい場合はcontrollersの下でフォルダを作成してください注意:サブフォルダの下の機能を使用する場合は、URIの最初のセグメントがこのフォルダを記述するために使用されることを保証するには、たとえばmycontrolというフォルダの下で呼び出すクラスがアクセスする場合は、localhost/project/mycontrol/MyClass/method 1を使用します.
クラス名の頭文字を大文字にしてControllerクラスを継承し、コンストラクション関数にparent::Controller();各サブフォルダにはデフォルトのコントローラが含まれている必要があります.これにより、URIにサブフォルダしかなく、特定の機能がない場合に呼び出されます.
■ビューをアプリケーション/viewsフォルダの下に配置するビューファイルをロードする場合は、制御層で次の関数を呼び出すことができます(.php拡張子は省略できます)$this->load->view("name");
注意:ビューを呼び出す前にページに出力がなくprint/echoが存在しないでください.そうしないと、ビューは出力文を正しく表示できません.呼び出し後、ページ優先出力制御層の出力内容が表示されます.
上記の関数は、複数回呼び出すことができます.複数回呼び出すと、たとえば、タイトルビュー、メニュービュー、コンテンツビュー、フッタービューが必要になる場合があります.彼らはこう見えるはずです.
class Page extends Controller {
   function index()   {      $data['page_title'] = 'Your title';      $this->load->view('header');      $this->load->view('menu');      $this->load->view('content', $data);      $this->load->view('footer');   }
}?>
 
もちろん、自分のフォルダの下にビューを置くこともできます.ロードするときにフォルダの名前$this->load->view(「folder_name/name」)を付ける必要があります.
ビューに動的データ配列、オブジェクト$data=array(「key 1」=>「value 1」、「key 2」=>「value」)を追加します.$this->load-view("myview",$data);
p.s:複数のビューをロードする場合は、最初のビューでデータを転送する必要があります.
ビューレイヤに追加したデータを出力します
・ビューのデータを取得ビューを直接出力せずにビューの内容を楽しむ場合は、ビューのデータ$this->load->view(「myview」、$data,true)を取得するために、次の関数を使用します.3番目のパラメータは、ビューを出力せずに結果を変数に返すことを示します.
■モデル--データベース操作クラス---(--|||||||||)モデルファイルはアプリケーション/models/に保存する必要があります.もちろん、ここでサブフォルダを作成することもできます.モデルクラスはModelの親構造方法を継承する必要があります.親構造方法のクラス名の頭文字を呼び出す必要があります.大文字のファイル名はクラス名の小文字版です.例えばmymodel.php
class MyModel extends Model{ function __construct(){  parent::Model();}}モデル$this->load->model('MyModel');モデルファイルが自分で作成したフォルダの下にある場合は、対応するパス名$this->load->model('myfolder/MyModel')を追加する必要があります.モデルをロードすると、$this->MyModel->method 1()を使用できます.ロードされたモデルに別名を割り当てる場合は、$this->load->model("MyModel","nick")$this->nick->method1();
-------------------------------------------------------------------------------------------ここにコントローラの例があり、モデルをロードしてビューで表示します.
class Blog_controller extends Controller {
    function blog()    {        $this->load->model('Blog');
        $data['query'] = $this->Blog->get_last_ten_entries();
        $this->load->view('blog', $data);    }}
プロジェクト全体で機能する特定のモデルが必要な場合は、CodeIgniterを初期化時に自動的にマウントできます.実現方法はアプリケーション/config/autoloadを開くことである.phpファイルを作成し、自動マウント配列にこのモデルを追加します.
・データベースへの接続モデルの読み込み時にデータベースを自動的に接続するには、次の関数$this->load->model(「MyModel」、true)を呼び出します.もちろん、プロファイルの設定を使用して接続構成を再定義する必要はありません.$config['hostname']="localhost";$config['username'] = "myusername";$config['password'] = "mypassword";$config['database'] = "mydatabase";$config['dbdriver'] = "mysql";$config['dbprefix'] = "";$config['pconnect'] = FALSE;$config['db_debug'] = TRUE;
$this->load->model('Model_name', '', $config);
p.s:プロファイルの構成を変更するには、アプリケーション/config/databaseを変更します.phpのパラメータ
これでMVCの3階が終わりjavaのstrutsよりずっと簡単になったのではないでしょうか.nameは、補助関数ファイル名を指定します.複数の補助関数を一度にロードする場合は、$this->load->helper(array('helper 1','helper 2','helper 3');注意:補助関数に戻り値がない場合は、アプリケーション/config/autoloadを開くことができます.phpは,自動ロード配列(autoload array)に補助関数を追加して実現する.補助関数を使用して、たとえばanchor()を使用して接続を確立します