ログ日記

作業ログと日記とメモ

PHP

データアクセス層

PHP

[PHP-users 30808] ビジネスロジック層とDao層とPagerについて 今作っているものは、DB抽象化クラスとO/RマッパークラスとDaoクラスに分けようと思っている。 DB抽象化はPDOに少し機能を追加した簡単なラッパで、ORMはそのままの意味、Daoはデータアクセスを…

PHPのフレームワークはやっぱり自作がいいと思った

[Maple-user: 405] 3.1と3.2の互換性について ユーザが多いと改良改善が大変ですねぇ・・。 PHPのフレームワークは何十個もあるかもしれないけれど、それはそれでいいと思ってきた。 本当の初心者は困るかもしれないが、フレームワークの動作がある程度分か…

xFrameworkのチュートリアル

http://www.xframework.jp/document/tutorial/index.html配布用Webページとかマニュアルが綺麗だとそれだけで安心感があるよね。 しかし全部一人でやっているんだろうか・・。サーバ管理からフレームワーク作成からコンテンツ作成からデザインまで。 そうい…

mapleの現状とかフレームワークとか

mapleの問題点、というか気になる部分。http://lists.sourceforge.jp/mailman/archives/maple-dev/2006-December/000242.html これの詳細について反応をもらいました。 (MLで聞くべきだったのかな?ブログの方が大勢見てそうで、devは実際の開発者達が議論…

クラス図

http://f.hatena.ne.jp/n314/20061206161331前よりも詳しく書いてみた。 ただコンテナ周りの書き方がよく分からない。 PHPで function execMethod($class, $method, $args = array()){ // 何らかの初期化処理 return call_user_func_array(array($class, $me…

xFrameworkのLiveRecord

コメントをもらったのでpreview版を見てみる。 使い方(かなり推測) // create table emp(id int, name char(32)); class emp extends LiveRecord { function emp($pdo){ parent::__construct($pdo); } } $emp = new emp(new PDO($dsn)); // PDOとテーブル…

mapleのLogger

http://d.hatena.ne.jp/bobchin/20061205 MapleでもNull Objectパターンは使用されてます。 それはLoggerですね。maple/logger下にあるクラスになります。 これって「ロガーにはどれか一つのLogger実装クラスを指定してください」ということ? メール送信す…

mapleについて独り言

自作テンプレートからFlexyに移ったように、自作フレームワークからCakePHPかsymfonyかmapleに移るべきなんだろうな。今がその時期。 しかしFlexyを自分で修正してしまったように、フレームワークも自分で変えたいところが出てくるだろう。 そういう場合を考…

mixiのコミュ

Guesswork(84) CakePHP(109) symfony(154) Maple(179) Zend Framework(186) Mojavi [もじゃび](293) Ethna(295) Ethna優勢? Ethna使ってるサイトって普通に思い付くもんなぁ。 キラーアプリというかキラーサイト?あった方がいいよね。 あのサイトで使って…

O/Rマッパー

PHP

[PHP-users 30830] Re: ビジネスロジック層とDao層とPagerについて ActiveGatewayは、1テーブルに対して1クラス用意する手間を 省いた結果、O/Rマッパーにビジネスロジックを記述することができないんです ね。。。今後のバージョンアップでは分かりません…

simpletestのWebTestCaseメモ

PHP

WebTestCaseでは一つのページのチェックを一つのテストメソッドで行うと考えて作られているような設計だ。 一つのページで数個しかテストしない場合は構わないが、十個を超えると結果が見難くなる。 setupメソッドに接続処理を書くと、テストケースが増えた…

フレームワーク自体についてレイヤで分離することを考える

フレームワークの構造をすっきりするために、goyaのDxoの概念を取り入れるのはどうか。 若干haskellの影響もある。 リクエストや設定ファイルなど、不確定要素を持つものとフレームワークのコアを分離する。 その橋渡しをDxo的なレイヤで行う。 リクエストデ…

mapleのクラス図

mapleのクラス図を大ざっぱに作ってみた。 Loggerは殆どのクラスから参照されてるので省略。 FilterChainの中からコンテナを使ってFilterChainを取得したりFilter_ValidatorからFilterChainを実行したりと難解だ。 FilterChainはチェーンを実行していくので…

クラス図

自分で作ったやつのクラス図を書いたら大変なことになってたから、今構造を変更しているところ。 他のフレームワークのクラス図も見たくなって、どこかで見たなーと http://moony.sourceforge.jp/ を見ると・・図がなくなってた・・。 ぐぐってもあんまり出…

simpletestでの改行コードの取り扱い

PHP

simpletestのWebTestCase。 バージョンアップで改行コードの扱いが変わった? simpletestでデータを比較するときの改行コードは全て\r\n(CRLF)になったっぽい。 前は\n(LF)で表示されているHTMLはそのまま\nでチェック出来てたからどこのエラーか分から…

ディレクトリ構造による依存性注入

PHPの場合は、「DIコンテナと設定ファイル」じゃなくて「include_pathとディレクトリ構造」による依存性の構築がやりやすいんじゃなかろうか。そうするとコンテナが要らなくなる。 もちろん初期化メソッドの実行などにコンテナは必要だが、コアには必要ない…

xFrameworkのソース

早速見てみる。 http://www.xframework.jp/ xFramework.phpがいきなりtryで始まってる・・謎だ。 そしてob_start(); グローバル空間にべた書きが長いな。 下の方でコントローラ->run()している。 run()関数で、また全部がtryだ。こういう作りってアリなのか…

mapleを再検討

何やらmapleのコアが新しくなっていく予感なので気になる。 現状でのmapleの機能と自分のやりたいことをまとめてみよう。 やりたいこと 自分の実装 maple アクションクラス変数の自動代入 iniファイルのpropertyセクション iniファイルのActionセクション コ…

mapleのフィルタ動作について

PHP

[Maple-dev: 234] Re: ConfigUtilsクラスのreadConfigここで問題提起とか提案とかされている。 http://d.hatena.ne.jp/hawkring/20050611mapleはソースを見ただけで殆ど使ったことないんだけど、設定ファイルはmaple.iniだけなのかな? maple.iniは全部グロ…

diff

PHP

PHPで簡単に差分って取れないのかな。 wwwcheck.php ここにあるソースを見たけど全く読めない・・。 for文とwhile文の入れ子で一文字変数が多すぎる。 変数の名前を1文字にしたところで速度はあんまり変わらない気がするが・・他のファイルは普通なので敢え…

ビルドツール

PHP

http://www.doyouphp.jp/php5/php5_phing2.shtml 便利そう。でもJavaの真似をしすぎてそう。というか移植? PHPUnit使ってないしなぁ。 Ant使ってる人じゃなければxmlで作る必要もないだろう。Linuxならシェルスクリプト数行書けばいいと思う。 simpletestを…

基本から作り直そう

今のフレームワークはちょっとやりすぎた。 柔軟にしすぎた。 class A{ var $_Component;って書くだけでコンポーネントが代入されるのはやっぱり良くない。 PHP4ならこれで良かったんだけど、PHP5にするとprivateで宣言するので使う機会がなくなる。 あと設…

コンストラクタ引数を柔軟にしたい

PHP

普通の関数やメソッドの場合は call_user_func_array() を使えばいい。しかしオブジェクト生成の場合はどうするか。 $obj = call_user_func_array(array('ClassName', '__construct'), $args); これは無理。コンストラクタはstaticじゃないし。 内部的に、ne…

エラー制御

PHP

http://blog.hawklab.jp/item-97.html こういうめんどくさいことが必要になるのは 読み込むファイルが存在するかどうかをチェックする ファイルを読み込む ということが簡単に書けないからで if (file_exists($path)) include $path;と書ければいいんだけど…

フレームワークの書き直し

依存関係を減らそうと思ってクラス図を書いてみたら、非常にまずいことになってた。 最初にコンテナにクラスを全部登録して必要になれば使えばいいやって思ってたから、依存関係がありすぎる。 複数のクラスにまたがる処理をまとめる場合って難しいな。 設定…

memcacheとapc

PHP

$size = 1; $count = 10; if (isset($_SERVER['argv'][1])){ $size = $_SERVER['argv'][1]; } if (isset($_SERVER['argv'][2])){ $count = $_SERVER['argv'][2]; } $m = new Memcache(); $m->connect('localhost', 11211) or die("connect error\n"); requir…

使ったことがない関数群

PHP

tokenizerを利用してAOPをやろうかと思ったりもしたんだけど PHP: runkit 関数 - Manual これを使う方がいいよなぁ。 サーバに組み込む必要があるけど・・自分の環境だとこっちの方がベターだ。 あとキャッシュ。 http://jp.php.net/manual/ja/ref.apc.php m…

extensionのフレームワーク

昨日書いた通り、静的型付けと動的型付けを混在させたいんだけど、これって全部PHPで作ろうと思うから不満が出るんだよなー。 別にPHPからCやJavaを呼び出してもいい。フレームワークで言うなら、アクション部分だけPHPにしてコアの部分をCで書いたっていい…

apc設定メモ

PHP

apc.shm_size って、カーネルの設定に依存するような感じで書かれてあるけど、関係なさそう。 http://www.linux.or.jp/JM/html/LDP_man-pages/man2/shmget.2.html SHMALL システム全体の共有メモリ・ページの最大数 (Linux では、この上限値は /proc/sys/ker…

楽しい言語は・・

PHP

配列の謎………ええ? - がるの健忘録 途中までコメント書いたけど長くなったのでこっちに書き直し。 配列の扱いは時々ハマる。 // この配列は以下の配列と同じです ... array(5 => 43, 32, 56, "b" => 12); // この配列は上の配列と同じです array(5 => 43, 6 …