CI_Controller、ラッパー関数

CI_Controllerとは

phpフレームワークのcodeigniterで使用される。
CI_Controllerはコントローラクラスの基底になるもので、必ず継承しなければならない。
このCI_Controllerが呼び出される(継承、オーバーライド)と、各コアクラスのインスタンスプロパティ変数を利用できる。例えば、$this->load、$this->inputなどだ。以下のように使われている。

$this->input->post('key');
$this->load->view('layout');

http://www.ci-guide.info/practical/core/controller/

CI_Controllerクラスインスタンスを取得するには、以下のように記す。
ラッパー関数からも取得できる。

$CI = CI_Controller::get_instance();
$CI =& get_instance();

http://www.ci-guide.info/practical/core/controller/

ラッパー関数とは

ラッパー関数をググると、「包むもの」と出てくる。
phpの場合には、可変関数(variable functions)と出る。公式を見てみる。

変数名の後に括弧が付いている場合、その値が何であろうと PHPは、同名の関数を探し実行を試みます。 この機能は、コールバック、関数テーブル等を実装するために使用可能です。

可変関数は、echoprintisset()empty()includerequire のような言語構造と組み合わせて使用する ことはできません。これらの言語構造を可変変数として使うには 独自のラッパー関数を使う必要があります。

https://www.php.net/manual/ja/functions.variable-functions.php

コードはこのようになっている。

function echoit($string)
{
    echo $string;
}
$func = 'echoit';
$func('test');

//出力はtest

可変変数と合わせてみていきたい。ただの変数としての意味だけでなく、変数名の後に括弧があると関数を探す仕様だとは良く分かって無かった。

$a = 'hello';
$$a = 'world';

echo "$a ${$a}"."\n";
echo "$a $hello";
//hello world
//hello world

basic, codeigniter, php

Posted by himajinn