facebook twitter hatena line email

「Php/codeigniter/library」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(Libraryで、Modelをロードした後、CI抜きで実行する)
(初期化パラメータを渡す場合)
行42: 行42:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
配列意外の文字列とかだとエラーになる。
  
 
==Libraryで、Modelをロードする==
 
==Libraryで、Modelをロードする==

2025年5月19日 (月) 12:06時点における版

ライブラリの使い方

application/libraries/ディレクトリに新しいライブラリファイルを作成する

application/libraries/Mylibrary.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Mylibrary {

    public function __construct()
    {
        // コンストラクタ
    }

    public function my_method($param = '')
    {
        return 'Result: ' . print_r($param,1);
    }
}

ライブラリの呼び出し方

$this->load->library('mylibrary'); 
echo $this->mylibrary->my_method('parameter');
$params = array('param1' => 'value1', 'param2' => 'value2');
echo $this->mylibrary->my_method($params);

libraryの引数'mylibrary'は、小文字開始になる

初期化パラメータを渡す場合

$params = array('param1' => 'value1', 'param2' => 'value2');
$this->load->library('mylibrary', $params);

ライブラリクラス側

public function __construct($params = [])
{
    // $paramsを処理
}

配列意外の文字列とかだとエラーになる。

Libraryで、Modelをロードする

class Mylibrary {

    public function __construct($params = [])
    {
        // コンストラクタ
    }
    public function hello()
    {
        $CI =& get_instance();
        $CI->load->model('Hello_model');
        echo print_r($CI->Hello_model->get_data());
    }
}

コントローラーのプロパティをLibraryで使う

コントローラーの$this->hogehogeをLibraryで使う場合のサンプル

class Library extends MY_Controller {
	public function index()
	{
		$this->load->library('mylibrary');
		$this->hogehoge = "hogehoge";
		$this->mylibrary->hello();
	}
}

ライブラリ

class Mylibrary {
    public function hello()
    {
        $CI =& get_instance();
        echo $CI->hogehoge;
    }
}

コードが追いづらくなるので、あまりおすすめはしない。

Libraryで、Modelをロードした後、CI抜きで実行する

defined('BASEPATH') OR exit('No direct script access allowed');
/**
 * @property Hello_model $Hello_model
 */
class Mylibrary {

    public function __construct()
    {
        $CI =& get_instance();
        $CI->load->model('Hello_model');
        $this->Hello_model =& $CI->Hello_model;
    }
    public function hello()
    {
        $this->Hello_model->get_data();
    }
}

$this->Hello_model->get_data();のように使える

@propertyは、vscodeで、タグジャンプを使う場合の記述

VisualStudioCode/設定/拡張機能/PHP Intelephense [ショートカット]