php

emacsのphp-modeを入れてみた(2)

もう少し試してみたので第二弾。php-modeの補完に3秒かかるという話を書いたら、こんな過疎ブログを見てくれた人たちが。 emacsのphp-modeの補完機能|より良い環境を求めて で、私の環境ではどちらも0.5秒くらい。単純にハードウェア性能の問題? えらく差…

emacsのphp-modeを入れてみた

phpの開発はローカルにサーバ(実機でもVMでも)立てて、Sambaでつないでxyzzyでコード書く、というのが染みついてるんだけど、もっとリモートの開発環境を整えたい。まだvimとemacsをちょこちょこ触って、どっちにいこうかなぁというところです。emacs は以…

dankogai祭り

php

そろそろPHPに関して一言いっとくか|404 Blog Not Found見てる間にどんどんブクマが増える、dankogai祭り。さすがに影響力の大きさを感じます。まぁ、せっかくだから乗っとこう。 全体をざっと眺めた時に、自分の中で思い起こされたのは、これ。 オープンソ…

Simpletestにtrueとfalseをちゃんと確認させる

php

phpのユニットテストツールとして便利なSimpletestですが、困ったことにassertTrueやassertFalseといった基本的なメソッドの実装が若干雑です。 具体的には、assertTrue(1) とか assertFalse('') が通ってしまうため、本来は通らないはずのテストをパスして…

php4でもコンストラクタを__construct()と書く

php

先日、[http: //d.hatena.ne.jp/studio-m/20070428/1177772678:title=php5→php4な状況で困ること (1)] と題して、php4ではコンストラクタが__construct()で書けない云々と書きました。が、最近わりと名前を目にする機会が増えてきたphpのフレームワーク「Cak…

ダンプ用Smartyプラグインで快適デバッグ

Smartyでテンプレート変数のダンプを取りたい時、テンプレートに{debug}と書いたりしてデバッギングコンソールを表示するという手があります。ただ、別ウィンドウでいちいち開くのがウザかったり、不要な情報も表示されてしまったり、逆に必要な情報が途切れ…

Smartyで配列を定義するプラグイン

Smartyでは、テンプレート内で {assign var="変数名" value="変数の内容"}と書くことで変数を定義できますが、配列の定義はphp側でしかできません。そこで、普段使ってる配列定義のプラグインをご紹介。

PEAR::Archive_Zipの実装

php

phpでzipアーカイブを操作するPEARライブラリ、Archive_Zip(beta)。なかなか便利なんですが、ディレクトリを圧縮しようとしたら無限ループが発生してWebサーバが落ちました。使用バージョンはArchive_Zip 0.1.1(beta)。CentOS4.4で、php5.1.6と4.4.6で確認…

Smarty日本語マニュアル

php

Smarty公式マニュアル 日本語版先日より、高木さんとこ で公開されていたSmartyの日本語マニュアルが公式サイトに掲載されました。 自分もここ2年ぐらいSmartyメインでいろんな物を作ってますが、やっぱりよくできてると思います。公式に取り込まれたからと…

ディレクトリを再帰的に作成

php

phpで mkdir('hoge/foo/bar') てな感じで一気にディレクトリを作成しようとすると、エラーになります。hogeを作って、fooを作って、それからbarを作る… というのは面倒。ということで、今更珍しくも何ともないけど小ネタ。 /** * ディレクトリを再帰的に作成…

XML_Unserializerの制御

php

phpでXMLを設定ファイルに使うとき、php5なら何だかんだ言ってもSimpleXMLが楽ちんです。一方、php4では自前でパースなんてやってられないので、PEAR::XML_Unserializerが有力な候補になってきます。今日はそんなXML_Unserializerのお話。 <form> <element> <item value="hoge">hogehoge</item> </element> <element> <item value="foo">FOO</item> </element></form>

php5→php4な状況で困ること(2)

php

前回に引き続き、「今になってphp4を使うと困ること」について。今回は本命の「オブジェクトがデフォルトで参照渡しにならないこと」に起因するあれこれです。 foreachで回す $this->itemsが各要素にオブジェクトを持つ配列だった場合、 foreach ($this->ite…

php5→php4な状況で困ること(1)

php

php5での開発になじんでしまうと、php4に戻った時にいろいろと引っかかります。4→5の時はスムーズだったのに、いざ5に慣れると「こんなこともできないのか」とヘコむことしきり。ちょっと長くなってきたのでメインディッシュは次回に持ち越して、今回は、小…

google-code-prettifyの挙動

google-code-prettify は、phpやJavaScriptなどいろいろな言語のソースコードをhtmlに貼り付けてブラウザから見た時に、いい感じにソースコードを色分けしてくれる素敵なライブラリです。 こんな感じに自動で色付けてくれてありがたいんですが、ちょっと妙な…

その発想はなかったわ

軟弱プログラミング|p0t paging処理(次の10件とか)で11件取ってきて11件あったら次の10件を表示。 こういうのが自然に頭に浮かぶ人間に、私はなりたい。

ActiveRecordっぽいアプローチ

php

RailsのO/RマッパであるActiveRecordでは、newでオブジェクトを作ってからsave()でDBに保存したり、find()みたいなstaticメソッドでDBからオブジェクトに落としたりできます。phpで書くとこんな感じ。 // 新しいユーザMikeを作成 $mike = new User(); $mike-…

過去の自分は他人

php

故あって2年ほど前に作ったシステムの再構築をしております。 Smartyを使い始める数ヶ月前のことで、普通にHTMLとphpが混在する、今となってはできれば遠慮したいブツです。 改めて見ていると、ロジックとテンプレートの分離は当然のこととして、純粋にphpと…

PDOでMySQLに外部SQLファイルを流す

DROP TABLE IF EXISTS hogehoge; CREATE TABLE hogehoge ( 〜 );みたいなhoge.sqlがあるとします。このファイルを読み込んでPDOに投げる、コマンドラインで動くphpスクリプトがあります。夏頃にFedoraCore5 + php5.1.4 + MySQL5.0.22で動かした時にはちゃん…

PEAR::HTML_QuickFormの言語対応

php

phpでフォームを管理するライブラリ、HTML_QuickFormには日付のリストをグループとして扱う機能があります。 $form = new HTML_QuickForm(〜); $form->addElement('date', 'birthday', '誕生日', array('language' => 'en', 'minYear' => 2000, 'maxYear' =>…

simpletestの導入

php

今更ながらに、プロジェクトにsimpletestを導入してみました。使い出してみると非常に便利、というより今まで使っていなかったことがあり得ないぐらいの印象です。手作業のテストではもう無理。まずは、SorceForgeのsimpletestから1.0のアーカイブを落として…

CGI版phpでPATH_INFOを取得

php

自宅のphp4環境下で、どうにもPATH_INFOが取れないと思ったら、CGI版は初期状態だと無理らしいです。php.iniに cgi.fix_pathinfo=1と設定してやると、ちゃんと動きました。ググってると、$_SERVER['ORIG_PATH_INFO']を見る方法が紹介されてるけど、自分の用…

トラックバックの実装

php

このところ、諸事情で何となくブログなぞ作っております。トラックバックの仕様というのを今までよく理解していなかったんですが、いざ手を付けてみると思った以上に簡単で拍子抜け。「トラックバックの送信」はPOSTでリクエスト送信するだけだし、「トラッ…

PostgreSQL + PDO で lastInsertId

PDOでPostgreSQLを叩くとき、lastInsertIdを取得するにはシーケンスオブジェクト名を投げる必要があるそうな。 CREATE TABLE test ( id SERIAL PRIMARY KEY, name VARCHAR(255) );てな感じでテーブル定義して、ここにINSERTした後でlastInsertIdを取得するに…

PostgreSQLへの接続

今までMySQLで通してきたんだけど、PostgreSQLで行ってみようかというテスト。全く未経験でございます。 $this->_dsn = sprintf("%s:host=%s port=%s dbname=%s user=%s password=%s", DB_TYPE,DB_HOST,DB_PORT,DB_NAME,DB_USER,DB_PWD); $this->smarty->dbh…

PHP5でデザインパターン − Singletonパターン

php

久々に書いたつもりのエントリが残ってないと凹む。確認画面でサヨウナラ。 気を取り直して、今回は実装は簡単だけど気が利いて実用性も高いSingletonパターンです。 このパターンは、インスタンスを一つしか生成しないためのパターンです。DB接続などで使うと、…

PHP5でデザインパターン − FactoryMethodパターン

php

今日のお題はFactoryMethodパターン。オブジェクトを生成する際に、製品(Product)と工場(Factory)を分離します。Productのインスタンス生成をクライアントではなく、Factoryにカプセル化することで拡張性と柔軟性を持った設計にします。クラス図的にはこ…

PHP5でデザインパターン − Decoratorパターン

php

前回のStrategyに続いて、Decoratorパターンです。本では第二章はObserverですが、ちょっとスルー。今回の構成は、ラーメンと、それに対するトッピングとなっています。まずは、ラーメンの抽象クラスとそれを実装するサブクラス(しょうゆラーメンクラスと塩…

Strategyパターン Interface使用版

php

こちらはWeaponを抽象クラスからインタフェースに変更した場合の実装。こっちの方がいいのかな?併せてクラス図も引き直してみました。こんなんでいいのかな。 Weapon.php */ /** * 武器インタフェース */ interface Weapon { public function getName(); p…

PHP5でデザインパターン − Strategyパターン

php

「HeadFirstデザインパターン」を見ながら、お勉強です。まずはStrategyパターン。 間違いやツッコミどころがあるかも知れませんがご了承のほどを。こんな感じでいいのかな。武器クラスとそれを持つキャラクタークラスで構成します。まずは、武器の抽象クラ…

「超・極める! PHP」

php

超・極める! PHP作者: 秋元裕樹,市橋一宣,大垣靖男,小山哲志,上鍵忠志,高橋邦彦,田中正裕,月宮紀柳,鶴岡達也,鶴岡直也出版社/メーカー: 翔泳社発売日: 2006/05/18メディア: 大型本 クリック: 58回この商品を含むブログ (29件) を見るフレームワーク関連の話…