「PHP」カテゴリーアーカイブ

Codeigniter デフォルトコントローラの指定(PHP)

Codeigniterの話題(メモ書き)が続きます。

http://www.example/codeigniter/

とアクセスしたときに使用されるコントローラはconfigディレクトリ、routes.phpで設定します。つまり、URIセグメントに何も指定されていないときに表示されるページの設定です。

$route['default_controller'] = "welcome";

上記の場合、welcome.phpのindex()がデフォルトコントローラとして指定されます。

config.phpの中を探してしまいましたが、routes.phpにあるんですね。と、気がついたあとに、ユーザガイドをみたらコントローラの項目にばっちり書いてありました。

CodeIgniterの’index.php’を省略する(追加)(config.php)

CodeIgniterの’index.php’を省略するの記事の追加です。その記事では.htaccessの設定を書きました。これだけでは、コードないでリダイレクトした場合にはindex.phpが挿入されてしまうので、Codeigniterをインストールしたディレクトリの\apllcation\configにある、config.phpの

$config['index_page'] = 'index.php';

をコメントアウトします。

Codeigniter 2系の言語ファイル(Language)は別アーカイブ(PHP)

軽量軽快動作が売りのPHPフレームワーク Codeigniterの関連を続けます。

Codeigniter の現在の最新バージョンは2.1.0です。フレームワークに標準で用意されている様々なメッセージは、インストールディレクトリ下のapplication、languageに納めますが、それぞれの言語ごとに別アーカイブをダウンロード、展開する必要があります。日本語バージョンは完成度97%ということですが、こちらからダウンロードできます。

これがないと、フォームに入力を求めた際などに、form_validation_lang.phpがありませんといったエラーが出てしまいます。

Codeigniter 1系の最終版である1.7.3では、本体のアーカイブに各言語が含まれています。

CodeIgniterの’index.php’を省略する.htaccess

久しぶりにPHP関連の話題です。

PHPフレームワークのCodeIgniterは軽量かつわかりやすいということで人気です。現在のバージョンは2.1.0で、こちらからダウンロードできます。2MB強です。インストールは先ほどのアーカイブを展開しておくだけです。

展開したディレクトリをcodeigniterとすると、アクセスはhttp://www.example.com/codeigniter/index.php/test/などとなります。他のフレームワークと同様に、パラメータをディレクトリのように渡します。ただ、このままだと、inde.phpの部分が毎回表示され冗長です。

.htaccessを設定すると、解消できるとオンラインのドキュメントにも書かれているので設定してみましたが、404 Not Found とエラーが出てきました。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

上記の場合は、CodeIgniterをhttp://www.example.com/の直下に展開した場合なので、今回のようにhttp://www.example.com/codeigniter/に展開した場合は3行目を以下のように書き換えます。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /codeigniter/index.php/$1 [L]

これで無事に解決しました。

配列を特定のキーでソート (PHP)

$dataarray[0] = array("keyA" => "abc","keyB => 99);
$dataarray[1] = array("keyA" => "def","keyB => 50);
$dataarray[2] = array("keyA" => "ghi","keyB => 70);

などという配列を入れ子になっている”keyB”で並べたい場合は、sortやksortではなく、array_multisortを使います。
例として、上記配列の”keyB”で並べ直す場合は、以下のようになります。
続きを読む 配列を特定のキーでソート (PHP)

mysqli_multi_query (PHP)

php+mysqlでよく使われるmysql_queryは複数行のSQLの処理はできません。

その場合はmysqli_multi_queryを使います。

ただし、エラー処理など、かえって面倒になることがあるります。

今回、使ってみようかと考えた件があったのですが、結局mysql_queryを使った方が見やすくわかりやすいコードになりました。

error_reportingの設定について(php.ini)

以前、「エラーログを取りたい場合 (PHP)」というエントリで、PHPのエラーをログに取る方法を紹介しました。ログをのこすエラーのレベルを数値によって設定できますが、しばらくは2039で設定していました。これは実行時の警告(E_NOTICE)を除いたすべてのエラーを表示する設定でした。

しかし、ログの肥大がすさまじく、すぐにGB単位になってしまうためE_WARNINGを表示させないようにしました。

設定はE_WARNING に対応する2を引いて2037としました。

PHPのオンラインマニュアルのこのページにエラーと定数の対応があります。参考にどうぞ。

整数かどうか s_numeric,is_int,ctype_digit (PHP)

以前数値かどうか?というエントリで記述したようにPHPでの数値かどうかの判定にはis_intが使えると書きました。他にもctype_digitという関数があるのですが、この関数は”文字列”が”数字”かどうかを判定するので、string型で用いるのが前提になっています。つまり、float型はもちろん、int型もすべてfalseと判断されます。
いくつかの例でテストした結果を一覧表にしてみました。(PHPのバージョンは5.2.5)
続きを読む 整数かどうか s_numeric,is_int,ctype_digit (PHP)