前記事のコードテスターに、保存機能をつけて見ました。コンフィグファイルとして保存します。
Configクラスのsave()を利用してみたかったのも、付け加えた理由です。
入力したコードはapp/config下に保存されます。ファイル名はクラスの先頭で定義している定数です。既存のコンフィグファイルと、バッティングしないような名前を選んでください。
追記:
stripslashes()とaddslashes()は外しました。configクラスが面倒を見てくれていました。
更に追記:
テンプレートやビューで文字タイプを指定しないとき、文字化けが起きてしまうので、タグの出力を追加しました。最初と最後にecho文で出力しています。他の手段で文字コードなどの指定を行なっている場合は、削除するなり、コメントにするなりしてください。
<?php
/*
* コードテスター by Hirohisa Kawase
*
* コードは、このクラス中で実行されます。
* 使用している定数にはCT_、変数にはct_を頭に付けています。
* 名前のバッテングにご注意ください。
*
* 入力したコードは、app/config下にCT_SAVE_GROUP + '.php'
* で保存されます。既存のコンフィグファイルと
* バッティングしないような名前を付けてください。
*
* コードは自動的に保存されます。
* コード名を指定し、コードを全部削除すると、
* 保存されたコードも削除されます。
*
* 保存されたコードは、下部にリンクとして表示しています。
* クリックで呼び出しです。
*/class Controller_Codetester extends Controller {
const CT_SAVE_GROUP = 'codetest'; // ファイル名兼グループ名
function action_index() {
// ビューやテンプレート使わない時の、文字化け対策
echo Html::doctype('html5');
echo '<head><meta charset="UTF-8"></head><body>';
// 文字化け対策ここまで
Config::load(self::CT_SAVE_GROUP, true);
$ct_code = '';
$ct_codename = '';
if (Input::get('load', false)) {
$ct_code = Config::get(self::CT_SAVE_GROUP . '.' . Input::get('load'));
$ct_codename = Input::get('load');
}
elseif (Input::post('code', false)) {
$ct_code = Input::post('code');
}
$return_value = eval($ct_code);
$ct_codename = $ct_codename != '' ? $ct_codename : (Input::post('codename', false) ? Input::post('codename') : '');
if ($ct_codename != '') {
if ($ct_code == '') {
Config::delete(self::CT_SAVE_GROUP . '.' . $ct_codename);
}
else {
Config::set(self::CT_SAVE_GROUP . '.' . $ct_codename, $ct_code);
}
}
Config::save(self::CT_SAVE_GROUP, self::CT_SAVE_GROUP);echo Form::open(URI::current());
echo Form::textarea('code', $ct_code, array('rows' => 20, 'cols' => 100));
echo '<div>';
echo Form::label('コード名', 'codename');
echo Form::input('codename', $ct_codename);
echo Form::reset('reset', 'リセット');
echo Form::submit('execute', 'コード実行');
echo '</div><div>';
foreach (Config::get(self::CT_SAVE_GROUP) as $ct_key => $ct_value) {
echo '<a href="' . Uri::current() . '?load=' . $ct_key . '">' . $ct_key . '</a> ';
}
echo '</div>';
echo Form::close();
// ビューやテンプレート使わない時の、文字化け対策
echo '</body>';
// 文字化け対策ここまで
}
}
せっかく作ったので、色々なメソッドで出力して見ました。コード名つけて、保存しておくと便利です。 :D
echo '<div style="color : red;">';
echo 'Agent::browser() : ' . Agent::browser() . '<br />';
echo 'Agent::platform() : ' . Agent::platform() . '<br />';
echo 'Agent::charsets() : <br />';
print_r(Agent::charsets());
echo '</div><div style="color : darkgreen;">';
echo 'Agent::version() : ' . Agent::version() . '<br />';
echo 'Agent::properties() : <br />';
print_r(Agent::properties());
echo '<br />';
echo '</div><div style="color : darkblue;">';
echo 'Input::uri() : ' . Input::uri() . '<br />';
echo 'Input::method() : ' . Input::method() . '<br />';
echo 'Input::protocol() : ' . Input::protocol() . '<br />';
echo 'Input::ip() : ' . Input::ip() . '<br />';
echo 'Input::real_ip() : ' . Input::real_ip() . '<br />';
echo 'Input::server() : <br />';
print_r(Input::server());
echo '<br />';
echo 'Input::referrer() : ' . Input::referrer() . '<br />';
echo 'Input::user_agent() : ' . Input::user_agent() . '<br />';
echo 'Input::all() : <br />';
echo 'Input::all()は出力量が多いので現在コメントにしてあります。
';
// print_r(Input::all());
echo '<br />';
echo 'Input::file() : <br />';
print_r(Input::file());
echo '<br />';
echo 'Input::param() : <br />';
echo 'Input::param()は出力量が多いので現在コメントにしてあります。
';
// print_r(Input::param());
echo '<br />';
echo '</div><div style="color ; darkyellow;">';
echo 'Request::active()->parent() : ' . Request::active()->parent() . '<br />';
echo 'Request::main()->children() : <br />';
print_r(Request::main()->children());
echo '<br />';
echo 'Request::get_paths()はマニュアルのサンプルではエラーになるため、現在コメントにしてあります。
';
// echo 'Request::get_paths() : ' . Request::get_paths() . '<br />';
echo '</div><div style="color : gray;">';
echo 'URI::base() : ' . URI::base() . '<br />';
echo 'URI::base(false) : ' . URI::base(false) . '<br />';
echo 'URI::create() : ' . URI::create() . '<br />';
echo "URI::create('codetest/index') : " . URI::create('codetest/index') . '<br />';
echo 'URI::current() : ' . URI::current() . '<br />';
echo 'URI::main() : ' . URI::main() . '<br />';
echo 'URI::segment(1) : ' . URI::segment(1) . '<br />';
echo 'URI::segment(2) : ' . URI::segment(2) . '<br />';
echo 'URI::segments() : <br />';
print_r(URI::segments());
echo '</div><div = style="color : orange;">';
echo 'URI::to_assoc() : ' . URI::to_assoc() . '<br />';
echo 'URI::string() : ' . URI::string() . '<br />';
echo '</div>';
| Fuelphp、ルーティング設定のこつ< 前 | 次 >Fuelphp、サンプルコードテスター |
|---|
| < 前 | 次 > |
|---|