php

Zend_Captchaは便利だがデコレータが糞(あえて。)なのでこんなことをした。

デザインの都合上Zend_Captchaの画像部分と入力部分を分離してrender()したいが、なんかどうにもならない予感がするのでこんな風にしてみた form class Hoge_Form extends Zend_Form{ public function init(){ $this->captcha = new Zend_Form_Element_Captc…

pear install phpunit/PHPUnit が失敗する場合のメモ

php

何回やっても何回やってもPHPUnitがインストールできなーい(ryトラブルシューティングsymfony/YAMLがない、と言われるどうやっても "pear install symfony/YAMLが失敗する場合がある。つぎのように直接tarファイルをインストールする...>pear install http:/…

Zend Frameworkで静的ページっぽいものを作る

アプリケーション本体とは別に「このサイトについて」とか「ご利用条件」とかのページを作る場合の備忘録 "guide/:page"みたいなURLに対して controller=>static-content,action=>indexみたいなルートを割り当てる。 "page"パラメータに対応するテンプレート…

allegroもっと続き

php

allegro.arco -- ActiveRecordサポート Active Record Component Objectsallegro.dolce -- DomainModelサポート DOmain model Logic Component Environment…とか。

allegro続き

php

結構整理されてきた allegro allegro.acl AccessControl AclRole AclResource AclRule allegro.auth AuthProviderFactory AuthProvider AuthStorage Identity allegro.cache Cache allegro.config Configuration ConfigManager allegro.data Entity Tuple Ce…

allegro続き

パッケージ構成の続き。 allegro acl AccessControl AclRole AclResource AclRule auth AuthProviderFactory AuthProvider AuthStorage Identity cache Cache config Config ConfigManager data Context ContextManager Query QueryResult RowSet Command Pa…

LDAP検索式の構築(式ツリーを拡張)

前のロジックは「全ての関係式は2項式」って前提で書いたけど、一般的な数式のBNFみたいに「ANDが連続するならterm,ORが連続するならexpression」って思えば各ノードに2個以上の条件式を追加することができる。 括弧を単体の構造で表すのは面倒(beginParenth…

LDAP検索式の構築(式ツリーを使う場合)

前に書いたやつは中置式の構造を作ってLL解析させてたけど、なんか無駄っぽい気がするので最初から式ツリーを構築してその上で検索式を文字列化するようにしてみた。 基本、条件を後から追加する場合前の式の右に位置するように追加して行き、OR直後にANDが…

PHPでannotation切り出し(超お気楽版)

$classInfo = new ReflectionClass("Meta2User"); $doc = $classInfo->getDocComment(); $doc = mb_ereg_replace("(\*|\/|\r|\n)", "", $doc); $anno = array(); mb_ereg_search_init($doc); $pos= mb_ereg_search_pos("@\w"); if($pos ===false){ echo "no …

allegro filter展開機能

criteriaはやめてfilterにする。 class Expression{ var $text; var $parameters; public function __construct($text,$parameter = array()){ $this->text = $text; $this->parameters = $parameters; } } class ExpressionFactory{ var $ctx; public funct…

Allegro設計続き

名前付けとか散々悩んで、とりあえず「まあこれでいいか」レベルにまで考えた。 allegro\data 主にデータ層。Repositoryは本来models\Repositoryなどとするべきなのだろうが、そうするとmodels以下には他に何もない状態になるしどうせRepositoryにはCRUD処理…

Allegroという名のライブラリ

ゲーム用フレームワークにはあるみたいだがPHP+MVCなフレームワークにはないのでとりあえず仮称。文句が来たら考える。多分音楽用語で固める。 今のところデータ部分(モデル - インフラあたり)の仕様考え中 /* * allegro * allegro\data * allegro\data\Data…

PHP5.2からPHP5.3への移行時の注意(Windows版)

PHP5.3をApacheに組み込む場合、やる事は基本的に5.2と同じなのであるが、既に5.2をインストールしている環境に5.3をインストールして入れ替える場合ちょっと落とし穴がある。phpをコマンドラインで使う場合とかpearコマンドを使う場合に、いちいちPATH設定…

picoのコンテンツ追加でたまにSQLエラーが発生する

構成はこんな感じ client --- apache reverse proxy --- apache(xoops)apache はともに2.2。 reverse proxy 使っているのが悪いのか、何なのか。ともかく何ヶ月かに1回しかエラーが発生せず、且つ「SQLエラーが発生しました。行782」で終わるもんだから一体…

何でも使えるツリー構造を定義する

いろいろな場面でツリー構造が必要になるので(たとえばACL機能、ユーザーファイル保存機能etc...)ツリー構造クラスを作った。 class TreeNode{ var $parent; var $children = array(); var $name; var $object; public function __construct($name = ""){ $t…

symfonyからMS SQLServerに接続!

propel使うと encodingを「空」にしないと"SET NAMES"やっちゃってエラーになる PDO_MSSQLはtransaction関数実装してない。にも拘らずupdateやdeleteで勝手にトランザクション始めようとするからこける。 じゃあODBCで、と思うとこっちは対応してない。 doct…

CakePHPのモデルで複合キーを使う

1.AppModelを上書してread()を置き換える。 function read($fields = null,$id = null){ $result = $this->find("first",array("conditions" =>$id) ); return $result; }2.Model#primaryKeyをfalseにしておく。 3.$form->create("Model")はやめてこんな感じ…

OpenFLPが動かない

virtual host "flp"を作った。 document root にapp/webrootを指定した。 config/core.php作った(core.php.defaultから) databaseを作り、テーブルを作った アカウント作った ログインしてみた だが /にリダイレクトしたが「ログインしてない」って言われた …

phpでRSSリーダーを書く

php

simpleXml使用。ベースクラスの静的関数でタイプ(rss1,rss2,atom)を判定し、然るべきparserを使って統一した形式のオブジェクトにする。 class RssParser{ static function getInstance($path){ $root = simplexml_load_file($path); if( $root->getName() =…

CodeIgniterでRSSリーダーを書く

やっつけ アーカイブ(lzh)http://tosa-ds.com/devel/php/application.lzh

日付入力が激しくダサい

php

cakephpにしろsymfony1.2にしろ、なんで要素別selectタグにすんの?死ぬの? 入力は面倒くさいは2/30見たいな入力は結局エラーになるわいいことないんだけど。

MVCフレームワークが気持ち悪くなってきた

php

「モデルはDAOじゃない!」と訴えているが実質的にDAO 結構なタイプのフレームワークは「エンティティモデル」は考慮しない 「レコードモデル」と「リストモデル」が同じクラス コントローラーがビューにモデルから取り出したデータをセットとか…

windowsでlighttpdを使いfastcgiを有効にする。

結構みなさん苦労されているようで。ていうかwindows+lighttpd+fastcgi+phpの組み合わせに関する情報が殆どない。海外サイトで喧々諤々のやり取りがあったので参考にしたらうまくいった。 参考URL http://forum.lighttpd.net/topic/1164まず、lightTPDのwind…

PHPフレームワーク比較

php

symfony サイズがでかい。propelは俺にはわかりやすい。generate_crudは使いやすい。module/actionな構成も言い。slotも便利。動作が重い CakePHP コンパクト。bakeも使いやすい。symfonyより軽い。Modelもそこそこ Zend Framework これから試す。自動生成機…

自前のfoo->list()なんて使えない

php

少なくともPHP5.2.6において、自前のメソッドにlistと言う名前をつけたとき"( ! ) Parse error: syntax error, unexpected T_LIST, expecting T_STRING in ..."と言われてしまう。従ってCakePHP,CodeIgniterともにアクション名「list」が使えない事になる。 …

symfonyのinclude_component()見たいな仕組みを作る

もとのviewだけでやるパターンだとcontrollerが今から作るページに乗せるデータを全て知っていなければならない。これはページのフラグメントを作ってページ本体に組み込むのに都合が悪い。 だからこんな事になった。 helperに"include_component()"を追加(c…

なんでそれが「入力」クラスなんだ!

$this->input->xss_clean($str)がタグ文字削ったり色々するらしいんだが…こういうの <textarea>こんな入力は危険です。 <script>alert(1)</script> </textarea>が保存できない。このままメール投げる事が出来ない。レポートバッチが改めてデコードしなくてはならない。もー。

CodeIgniterがいまいちぱっとしない理由

解説本がダメダメ。せっかくのMVCのMを単なるデータアクセスに貶めたり。 複合Viewを作るのが面倒くさい。コントローラーが全部のビューを知ってないとダメ。 $thisが何者か判別しづらい。モデルの中でもコントローラーの中でも。お前は一体何者?

フレームワークの存在価値

php

どうにもならないphp仕様をどうにかして使える状態にしよう、っていう試みだと思った。

CodeIgniterでXoopsモジュールを書く。

モジュール名sampleとして modules/sample/index.php