misc.log

日常茶飯事とお仕事と

CodeIgniterでちょっと作ってみるメモ

自分の作業用メモなので。間違ってたりそれじゃ無いとか有るかも知れませんが、とりあえず。あとで自分で思い出すためのメモです。ちなみにPHP自体の言語仕様にも不慣れなのでその辺お察しを。

開発環境を即Web公開状態にする

特定フォルダにシンボリックリンクを設定する

実際にApacheなどのプロセスがフォルダを意識する際に、本物のフォルダとして扱ってくれるように別フォルダへのルートを用意するにはシンボリックリンクが使える。サンプルコードの

C:\work\web>mklink /d application C:\work\eclipse_workspace\CodeIgniter\application

こんな感じでコマンドをうつと

application <<===>> C:\work\eclipse_workspace\CodeIgniter\application のシンボリック リンクが作成されました

のようなメッセージが表示されてシンボリックリンクが完成。シンボリックリンクは対象フォルダが存在しなくても作れるので注意が必要(期待通りに動かないときはスペルミスも視野に入れて確認すること)。




なんか警告が消えない

※※これは純粋なシンタックスエラーが原因です:ご指摘Thxです!なんで気づかないww 疲れてるのね※※

「変数が定義されていない」みたいなエラーメッセージが出続ける……。コードはこんな感じ。

f:id:frontline:20150922173823j:plain

再マップメソッドを試していたのだけど$methodで警告が(上のコード、$methodに値を入れたり試していたので文字列「test」の代入文が冒頭に残ってる)。

f:id:frontline:20150922174911j:plain

なんども変数定義を見直したり全角文字になってないかとか見たけれど……ということで警告文で検索したらこんな説明が。

php1st.com

そういうこと?非表示にしなければ出てしまうメッセージのようで。で、CodeIgniter一式に入っているindex.phpを見てみると、開発環境かどうかという定数宣言に応じてメッセージ表示を切り替える設定があった。

/*
 *---------------------------------------------------------------
 * ERROR REPORTING
 *---------------------------------------------------------------
 *
 * Different environments will require different levels of error reporting.
 * By default development will show errors but testing and live will hide them.
 */

if (defined('ENVIRONMENT'))
{
	switch (ENVIRONMENT)
	{
		case 'development':
			error_reporting(E_ALL);
		break;
	
		case 'testing':
		case 'production':
			error_reporting(0);
		break;

		default:
			exit('The application environment is not set correctly.');
	}
}

コレを下記のように書き換える。詳しい構文とかはまだ調べ切れてないけれど、おそらく「~」は否定演算で、ビット演算かなんかでフラグを設定するようになってるんでしょうね。

/*
 *---------------------------------------------------------------
 * ERROR REPORTING
 *---------------------------------------------------------------
 *
 * Different environments will require different levels of error reporting.
 * By default development will show errors but testing and live will hide them.
 */

if (defined('ENVIRONMENT'))
{
	switch (ENVIRONMENT)
	{
		case 'development':
			error_reporting(E_ALL);
			// error_reporting(E_ALL & ~E_NOTICE);
		break;

remapが有る場合にはほかのメソッドは呼べない?

_remapメソッドが用意されている場合、メソッド名にあたる2つめのセグメントは_remapメソッドの引数として指定されるため、別のメソッドを直接呼ぶことができないみたい。


CodeIgniter徹底入門

CodeIgniter徹底入門