タグ別アーカイブ: フレームワーク

Symfony2.0を試してみた。

最近PHPのフレームワークであるSymfonyのバージョン2.0を試してみました。
断片的ではありますがその時感じたことなどのメモになります。

・DBの設定は画面上から行える(初期画面のconfigureリンクから)

・DB接続のパラメータを設定するファイル
app/config/parameters.ini

■1.4との違い
1.4でのview⇒2.0ではphpではなくtwigになっている
1.4のModel⇒2.0ではEntity
1.4のForm⇒2.0ではForm/Type
1.4のバリデーション⇒2.0ではFormではなくvalidation.ymlに定義してグループ分けをする

■定義を書かなければいけないファイル/ディレクトリなどは1.4と少し違うが、
 基本的な考え方などは同じ

■チュートリアルのページ
http://docs.symfony.gr.jp/symfony2/osc2011-nagoya-symfony2-tutorial/symfony2-php-framework-development-tutorial.html
http://docs.symfony.gr.jp/sf2-blog-tutorial/

上記の2つのチュートリアルをやれば、1.4系を触ったことのある方は
何となく感覚はつかめると思います。

symfonyに関する本はなぜ少ないのか

最近仕事でsymfonyを扱うことが多いです。
symfonyはPHPのフレームワークの一種なのですが、symfonyを扱い始めた頃、書店で入門書を探してもなぜかあまり見つからない、置いてあっても古いバージョンのsymfonyを扱っているものが多い、ということがありました。

最近、その理由はネット上でのチュートリアルが充実しているからではないかと思っています。たとえば、symfonyにはjobeetという公式のチュートリアル的なものがあるのですが、日本語で書かれているのはもちろん、バージョンごと、さらにはORマッピングの方式ごとにまとめられていて、ここだけで書店に置いてある「○○入門」のような入門書に匹敵する内容のことが書かれています。

仕事場の机の上に本を並べられないのは少し寂しい気もしますが・・・

PHPカンファレンス2010へ行ってきました。(その2)

PHPカンファレンス2010で講演を聞いてきた時のメモ書きの続きです。聞き違いの部分などもあるかと思いますがご容赦下さい。

9/25 テックデイ
—————————–
基調講演 「PHP Then and Now」
—————————–
PHPの歴史
1993年 mozaicウェブブラウザ
1994年 PHP1
1995年 PHP2:今のような構文になった。オブジェクト指向ではなかった。

2005年 完全なオブジェクト指向へ

最新ver5.3:
・ver4に比べて高速
・スタック実装の改善
・例外処理も高速でシンプル
・コンパイラも高速かつサイズ小
・Win版は40%性能改善
・全体的に5~15%高速化

目玉となる機能:
・closuresの実装
処理の間に関数を呼び出せる
・namespaceの実装
バックスラッシュを1文字で扱える
・メソッドがどのクラスで実装したのか分かるようになった(__CLASS__)
・ガベージコレクションの実装/工夫
・NOWDOC、gotoの追加
・__DIR__の追加
・php_fpmの実装
・php.iniのユーザ向けファイル→.user.ini
・opensslの強化、openidの実装

変数でクラス名、メソッド名を指定できる

日付取得処理の改善:
・第三木曜日をイテレータで取得できたりする
・datecreateformat

この講演の資料:
talks.php.net/show/phpjp10
で公開される

古いバージョンのPHPソース:
museum.php.net
でダウンロードできる

—————————-
フレームワークアップデートLT
—————————-
CakePHP:
・リファクタリングが進んでいる
・PHP5専用になる
・PHPUnitの導入
Lithium:
・PHP5.3専用のフレームワーク
・ドキュメント 1.0のリリース時に用意される
Ethna:
・2009年10月2.5.0リリース
・UTF-8化
・国際化対応
・3.0開発中
racho:
・Object.php
・Doctest
・PHP単体で動く
Agavi:
・IISのサポート
・Azureのサポート
・例外処理の連結
codelgniter:
・世界第二位
・2011/2/19に東京でイベント
・軽い、覚えやすい、拡張が容易
ZEND:
・ドキュメントのアップデート
・コンポーネントの追加
Symfony:
・2.0開発中
・Httpkernel
・HttpAceralator=レスポンスをキャッシュ
・profiler

————————–
HiPHoP for PHP
————————–
facebook:
・ユーザは80億分/1日ぐらいの時間をサイトで使っている
・毎月30億枚の写真がアップロードされる
・1億人が利用している

PHP:
・言語の中で最も処理に時間がかかる
・メモリ使用量が多い

facebookでは、PHPのソースを他の言語でも再利用している

HipHoP for PHP:
・PHPのソースをC++に変換
・C++をコンパイルして実行

処理の流れ:
ソースの分析→型の推定を行う→コードを生成/出力

HipHoP用にソースを書き直さなければならない部分もある:
・eval()、create_function()
・順番(関数の定義順)は意味がなくなる
・コンパイルには時間がかかる→インタプリタを使う(HPHPi)
・apacheなしでも動く

HipHoP:
・オープンソース化されている
・PHPエクステンションをサポート
・5秒かかっていた処理を1秒に短縮
・実際の処理時間は2分の1程度になる
・PHPの最適化が限界に来たので開発された

————————————————-
Microsoft ♥ PHP ~ 2nd Stage ~
WebMatrix 登場!
————————————————-
IIS7でPHPサポート:
実行環境までマイクロソフトが作成している

SQLserverと接続するドライバも開発されている(PDOも使える)

PHP環境作成ツール:
Web PI→PHPのインストーラ=Web環境を作成する
Web Matrix→Webサイトを構成する

上記のツールの特徴:
・IISを個別にインストールする必要はない
・簡易的に様々な開発が行える
・DBクエリの実行も行える
・テンプレートも存在している(ASP用)
・ブラウザを切り替えて表示を確認できる
・SEOのチェックができる(外部サイトも可能)

http://microsoft.com/webに情報がある

————————————————-
文字コードに起因する脆弱性とその対策
————————————————-
Unicode: /¥ → MS標準: ¥

多対一の変換になるもの=文字化けが発生する

UTF-8:
・1〜4バイトで文字を表現
・5C問題は発生しない

半端な先行バイトによるXSS

5C問題:
・shift_jisで0x5cのコードが存在する文字を利用することによる問題
・SQLインジェクションに利用される

charsetの定義は正しく行う
→脆弱性が発生する場合がある

対策:
・最新のPHPを使う
・文字コードの指定をさぼらない
・mb_xxxxxx関数を使う

————————————————-
PHPストリーム概説
————————————————-
ストリーム:
・何でもファイルのように扱える、標準入出力みたいなもの
・Get、Postの指定、リクエストヘッダ等

ストリームフィルタ:ストリームを加工できる

————————————————-
新潟アクセス修飾子のご提案
————————————————-
アクセス修飾子:
public
protect
private

zendエンジンを修正することで修飾子を追加することができる

エラーメッセージの出力部分を探してそこからソース解析する

zend中間表記+パースの部分を修正する

————————————————-
PHPの中の人によるパネルディスカッション
————————————————-
PHPによって容易にウェブにアクセスできるようになった

PHP6での国際化:
・いまのところプランはない
・Unicode対応を急ぎすぎた

様々な機能を追加:
・使いやすさが減少して行く心配がある

型のチェックを厳しくするとソース全体へ影響を与える

内部をすべてUTF-8化する取り組み→4年位続いている

PHPのコミッタ:世界で1500人位いる

一人がすべてを決めるのではなく、
グループがコンセンサスをとりながら開発して行く形が望ましい

ユニコード対応:
マルチバイト圏の開発者はまだ少ない

facebook側:理想を言えばPHPの方でユニコード対応してほしい

————————————————-
ライトニングトークス
————————————————-
■CodeIgniterをベースとしたCMS「seezoo」をオープンソースでリリース
seezoo:
・CMS
・codelgniterを使っている
・2010/10/1に安定版をリリース

■日本一の twitter bot サービス twitter bot GENERATOR
twittbot:
・twitterボットを作成できる
・138万/1日つぶやき
・twitter全体のつぶやきの1%を占める

■激安VPS + nginx + PHP-FPM
nginx:HTTPサーバ、メモリを消費しない

■PirumではじめるオレオレPEARチャンネルサーバー
Pirum:
・PEARチャンネルを管理するツール
・PEARからインストールできる

■PHP で 3D プログラミング
phpopengl:OPENGLを使っている

■やったーPHPでPEGパーサコンビネータできたよー
OpenPEARPEG:
・パーサコンビネータ
・パーサを記述できる