配列を返すphpファイルをincludeして変数にセットすることで、配列の定義を外部ファイル化できることは結構知られていると思いますが、思いつきで無名関数を返すphpファイルをincludeして同じことをやってみたら、普通に動きました。
PHP5.4 Advent Calendar 2011 21日目の記事です。 20日目は Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる – Born Too Late (@yuya_takeyamaさん)でした。 つい先日、Windows7でビルトインサーバを動かしてみたばかりのPHP5.4初心者ですが、個人的に嬉しいふたつの変更点について紹介させていただきます。 タイプヒンティングに callable が追加された(Beta1より) 15 Sep 2011, PHP 5.4.0 Beta1 - General improvements: . Added callable typehint. (Hannes) callableという擬似型をタイプヒンティングに指定できるようになりました。 従来、is_callable()関数に対し
年が変わり、仕事環境も変わらざるを得ない状況となってきましたので、ここで心機一転、Blog書きを再開することにしました。 さくらインターネットで提供されている「さくらのブログ」もありますが、あえて自分でWordPressを入れることにします。 ただ、WordPressを使うなら豊富なプラグインを色々と試してみたいので、ひとまずWindows XPのローカル環境にXAMPPを入れるところから始めます。 そんなわけで、最初のネタはXAMPP + WordPressのインストールメモです。 まずはXAMPPのインストールから… XAMPP Windows版 1.7.3〔ベーシックパッケージ〕インストーラ http://www.apachefriends.org/download.php?xampp-win32-1.7.3.exe インストーラを起動するとインストール先の入力が促されますが、
はてなハイカーとしては、エントリにスターが付けられないと寂しいので、はてなスターを設置しました。 WordPress 3.0.4のデフォルトテーマ「TwentyTen」の場合、ちょっと面倒だったのでメモ。 はてなスターの設定画面で外部ブログの登録を行うと、HatenaStar.jsの読み込みと認証トークンの指定が含まれたJavaScriptが表示されるので、これをWordPressのヘッダー部分に貼りつけます。 ここまでは、以下の公式解説記事が詳しいです。 http://d.hatena.ne.jp/hatenastar/20070707 ここからはWordPressの管理画面を触ります。 メニューの[外観]→[テーマ編集]でテーマの編集画面を開き、テンプレート「ヘッダー(header.php)」を選択します。 titleタグの直後あたりに、はてなスターの外部ブログ登録で取得した
今更な情報かもしれませんが、WindowsXPからWindows7への乗り換えで「UAC」に色々戸惑ったのでメモです。 Windows Vista以降、UAC(ユーザアカウント制御)なる仕組みが導入され、Windows7ではログイン中ユーザのアカウント権限に関わらず、通常は全てのアプリケーションが「標準ユーザ」(Usersグループに所属するユーザ)の権限で動作します。 そのため、Administrators所有となっているhostsファイル(C:\Windows\System32\drivers\etc\hosts)を書き換えることができません。 この場合、ファイルを開くアプリケーションの起動時にショートカットを右クリックして「管理者として実行」を選ぶ、あるいはショートカットのプロパティ[ショートカット]タブ→[詳細設定(D)]→[詳細プロパティ]で[管理者として実行(R)]にチェック
先日より、Redmine + Subversion (TortoiseSVN)でのチケット駆動開発に挑戦しています。 定番のpost-commitフックスクリプトを使ってメールでのコミット通知を設定したんですが、今回はネットで公開されているものを参考にしつつPHPで書いてみました。 post-commit #!/bin/sh REPOS="$1" REV="$2" export LANG=ja_JP.utf-8 php -f ${REPOS}/hooks/commit-email.php "${REPOS}" "${REV}" <?php $project_id = 'demo'; // プロジェクトID $to_addr = 'k.holy74@gmail.com'; // メール宛先アドレス(,区切りで複数送信可) $from_addr = 'k.holy74@gmail.com';
1ヶ月以上かけて読み進めていた「体系的に学ぶ 安全なWebアプリケーションの作り方」をようやく読了しました。 脆弱性の発生原因から攻撃の実例とその対処法、そしてPHP特有の設定や関数の動作の問題に到るまで、丁寧に解説されていてとても分かりやすかったです。 個人的には認証・アカウント管理がかなり参考になりました。 特にパスワードの扱いについては、ちょうど今年に入ってセキュリティ系の勉強会(まっちゃ139、神戸セキュメロ)に参加した中で、適切なパスワード運用をシステムでどう実現するべきか、といったことを思案していたところだったので、いいタイミングで補完できました。 有名なアプリケーションでも、ハッシュ解読対策を総当り攻撃やレインボークラックに耐えられるレベルで実装されているものは、あまりないんじゃないかと思います。 (設定ファイルに全ユーザ共通のソルト文字列が書かれてるのもザラですし)
PHPでもフレームワークを利用した開発がすっかりメジャーになり、今ではフロントコントローラパターンによる動的URLが主流になっています。 (自分が知っているフレームワークの中で、デフォルトでフロントコントローラではなくページコントローラを採用しているのは、ちいたん と Piece Framework くらい) フロントコントローラ、ページコントローラって何?という人へ Webサイトへのあらゆるリクエストを、単独のハンドラオブジェクトが一括して処理を仲介する手法を「フロントコントローラ」、それに対して、論理ページごとに1つの入力コントローラを実装する手法を「ページコントローラ」と言います。 (この場合の「コントローラ」はクラスに限らず、スクリプトとして実装する場合も含みます) 多くのフレームワークではフロントコントローラはRouterと呼ばれるクラスを利用して、URLを画面別のコントロ
フロントコントローラではなくページコントローラ推し、という主張の続きです。 前の記事ではその根拠として、あるURLが指し示す画面は単機能でないこと、つまりページと機能は1対1ではないため、論理ページ単位で取り扱う機能の実行と実行結果の出力方法の組み合わせを複数指定する必要があり、それを記述する場所としてページコントローラを使った方が分かりやすいから、と書きました。 ページコントローラを採用する場合に気になるのは、いわゆるcool URIへの対応です。 mod_rewriteにひたすらRewriteRuleを並べる方法もありますが、見通しの悪さではフロントコントローラでURLルーティングする場合と変わらない気がします。 そこで、一定のルールに従うことでページコントローラとなるスクリプトの読込とパスに含まれるパラメータを取得するためのクラスを作成しました。 元のコードは前職で使っていた
Stagehand_TestRunner+PHPUnitで”headers already sent”エラーの件 セッション変数を扱うクラスのテストケースで “headers already sent by (output started at …PHPUnit/Util/Printer.php:173″ のエラーが出てずっと困ってましたが、とりあえず解消する方法が一つ分かったのでメモを兼ねて報告します。 shimookaさんの2年前の記事から、PHPUnit_TextUI_TestRunner で PHPUnit_TextUI_ResultPrinter を生成しているところの第1引数を NULL→STDERR とすれば動くとあったので、最初にこれを試してみたのですがうまくいかず…。 “PHPUnit headers already sent”で検索してみると、同じ問題が多くのPHP製
PHPMatsuri2011への参加を申し込んだので、 せっかくだからハッカソンでは何かフレームワークを使って作ってみようと、 今さらながら、Symfony2のコンポーネントを利用して作成されたフレームワーク Silex を触ってみました。 Silexを選んだのは、フレームワークが標準で提供している機能が最低限の内容に抑えられていて、とりあえず動くものを書くに当たって覚えなければいけないルールが少なそうだという、後ろ向きな理由だったのですが、実際にその通りで、思いのほか肌に合う感じです。 ユーザが直接操作するクラスの核となるのがSilex\Applicationですが、それ自体が、ArrayAccessを継承して作られた Pimple という超軽量DIコンテナを継承しています。 加えて、このクラスがSymfonyのコンポーネント群(HttpKernel, HttpFoundation
さる10/15,16両日、PHPMatsuri2011に参加してきました。 PHPMatsuri自体の感想は、「わったい菜のトマトムースうまかった」「SilexはSymfony2コンポーネントを使ったフレームワークのサンプル実装だった!」「Lithiumのユニットテスト統合っぷりがすげえ」「っていうか今時のフレームワークすげえ」「忍者LT大会わろた」「Epic sax guy 10 hours」「Epic sax guy 10 hours」といったところです。 2日目の午後からは意識朦朧で半分寝てましたので、正直発表内容はあまり覚えていません…ごめんなさい。なんかコタツの入切スイッチの話が妙に盛り上がってたのが印象に残ってます…。 ハッカソンではSilexを使った系図管理アプリケーションの開発に取り組んだのですが、その場ではLTできるレベルまで仕上げられませんでした。 そもそもなぜ系
Silex+RedBean+PHPTALのサンプル(RedBean FUSEによるモデルクラスとjQueryTreeView) Silex + RedBean + PHPTALによる系図管理アプリケーションの続きです。 前回は系図の構造と関連付けるための人物マスタの管理機能だけを紹介しましたが、今回は系図の構造を管理するテーブルを作成し、テストデータで系図をツリー表示するところまで紹介します。 系図のモデルはツリー構造になりますが、今回はミック先生の「リレーショナル・データベースの世界」の記事 SQLで木と階層構造のデータを扱う(2)―― 経路列挙モデル を参考に、SQLでの検索がしやすい「経路列挙モデル(Path Emuneration Model)」で実装してみました。 人物情報を扱うための、profilesテーブルです。
@calpo22さんの記事 PyrusでプロジェクトローカルなPEARライブラリインストール : PHP Advent Calendar jp 2011 Day 10 – くろまほうさいきょうでんせつ にき続き、PHP Advent Calendar jp 2011 11日目の記事です。 皆さん、エラー処理ちゃんとやってますか? 今時は、設定を書いておけばフレームワークがよしなにやってくれるよ、という方が多いかもしれません。 PHP4時代を戦い抜いた人は、皆自分なりのエラー処理関数を書いてset_error_handler()とtrigger_error()を駆使した経験があると思います。 私も当時は、サブルーチンを呼ぶたびに戻り値をチェックして return FALSE をリレーしていき、レスポンス出力の段階でFALSEが返されていればエラー画面をinclude、といった処理をしてい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く