Apelog

自分用にコンディションシート的なものをZendFrameworkで作ろうと思い入れてみた。少し業務で使った事もあるけどSVNチェックアウト→OK!!な

状態だったので一からセットアップ。

一通りディレクトリ作ってphp.iniにパス通して

HelloWorld!!させてみる。問題無し。StaticなURLのルーティングを確かめる、以下が想定。

http://example.com/login
Controller => auth
Action => login
<?php
$route = new
Zend_Controller_Router_Route_Static(
    'login',
     array('controller'=> 'auth', 'action' =>'login'));
$router->addRoute('login', $route);

これも問題無し。マニュアル通りだから問題無くて当然なんだけども。で、iniファイルにルーティング設定書こうと思って以下の様に書いてみた。

[production]
routes.login.type = "Zend_Controller_Router_Route_Static"
routes.login.route = "login"
routes.login.defaults.controller = "auth"
routes.login.defaults.action = "login"

読み込みはこんな感じ。

$config = new Zend_Config_Ini('../config/router.ini', 'production');
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes')

が、反映されてない。ルーターの値には同じものがセットされているというのに。

値が呼ばれてる所まで追ってみるかと思いつつ、先にガシガシコードに書いて後で精査してiniにしようとかなんとか。

そういえばPDT1.0がリリース。

ほぼ年齢の計算式

年齢の計算式は良く使う。

MySQLはマニュアルにも書いてあるけど。

SELECT (YEAR(CURDATE())-YEAR(`birth`)) - (RIGHT(CURDATE(), 5) > RIGHT(`birth`, 5)) AS `age`

プログラムで書く場合

((現在日時-生年月日)/10000)切り上げ
$birth = 19830221;
echo (int) ((date('Ymd') - $birth) /10000);

となる。が「ほぼ」年齢の計算式と書いたのは正確には「誕生日の前日が終了する瞬間」に年齢が加算されるので前日には年齢が上がっている。

利用する業務によってはその1日で大きな違いにもなる。以下のリンクに具体的な問題点などの指摘があるので留意。

ある地方公務員電算担当のナヤミ
「生年月日から年齢を計算する簡単な計算式」は使えるとは限らない