ここがすごい! なぞとphp5.3

34
ここがすごい! なぞとPHP5.3 佐藤琢哉 LOCAL PHP

Upload: takuya-sato

Post on 11-Jul-2015

1.721 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: ここがすごい! なぞとPHP5.3

ここがすごい!

なぞとPHP5.3

佐藤琢哉

LOCAL PHP部

Page 2: ここがすごい! なぞとPHP5.3

はじめに

Page 3: ここがすごい! なぞとPHP5.3

なぞはすごく

ないです!!!

Page 4: ここがすごい! なぞとPHP5.3

自己紹介

• 佐藤琢哉 aka nazo

• 旭川→東京→札幌

• LOCAL PHP部

• Hatena : nazone

• twitter : nazo

Page 5: ここがすごい! なぞとPHP5.3

アジェンダ

• PHP5.3おさらい

• lithiumについて

Page 6: ここがすごい! なぞとPHP5.3

PHP5.3おさらい

Page 7: ここがすごい! なぞとPHP5.3

何が変わった5.3?

• 名前空間

• staticメソッドに関する追加機能

• goto

• 無名関数

• Phar

• その他細かい変更

Page 8: ここがすごい! なぞとPHP5.3

名前空間

• ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

• 名前空間を解決するための仕組み

• namespaceで囲む

• useで宣言すると省略できる

Page 9: ここがすごい! なぞとPHP5.3

staticメソッドに関する追加機能

• 遅延静的束縛(late static binding)

– 呼び出し方法によって実行するメソッドを実行時に切り替える

• 動的静的呼び出し(Dynamic Static Call)

– $a::foo();

– なぜ今までできなかったのかが謎

• __callStatic

– __callのstatic版

– O/Rマッパーとかで効果が出てくると思われる?

Page 10: ここがすごい! なぞとPHP5.3

goto

• 使うな!!!

Page 11: ここがすごい! なぞとPHP5.3

無名関数(lambda)

• JavaScriptやってる人ならおなじみ

• 無名関数≠クロージャ(よく間違えられる)

• lambdaと呼ぶのはLisp方面が元ネタらしい

• 従来create_functionで一応作れたが、非常に面倒だった

• クロージャ:無名(に限らないが)関数内の変数を解決するときに、その関数が定義されたスコープでの変数を参照する仕組み

Page 12: ここがすごい! なぞとPHP5.3

Phar

• PHPのソースをtarとかzipで固めて、それをそのままPHPからincludeできるようにする仕組み

• Pythonのeggみたいなやつ(?)

Page 13: ここがすごい! なぞとPHP5.3

細かい変更

• 公式のドキュメントを読めば何が非推奨かとか書いてあるから、ある程度はそこをチェックしながら

• 微妙に互換性のない修正もあるので、なんか変だと思ったらチェックしてみよう

• PHP5な書き方をしていればそこまで変にはならない

Page 14: ここがすごい! なぞとPHP5.3

インストール

• 基本的にソースから入れるのがいい

• WindowsならXAMPPを入れれば最初から5.3になる

• でも5.3メインで開発することはまだ少ない気がする

• debian、ubuntu系ならdotdebにパッケージがある(が、入れると当然5.2は消える)

Page 15: ここがすごい! なぞとPHP5.3

インストール

• 5.3.2はビルド時にSEGVを出すバグがあるっぽいので、5.3.1を入れたほうがいいかも(詳細不明)

• http://bugs.php.net/bug.php?id=51216

Page 16: ここがすごい! なぞとPHP5.3

lithiumについて

Page 17: ここがすごい! なぞとPHP5.3

lithiumってなに?

• PHP5.3専用フレームワーク

• CakePHPを作っていたGarrett Woodworth

とかNate Abeleとかって人がCakePHPプロジェクトから離脱して作り始めた

• CakePHPっぽさが随所に残っている

• まだ正式版ではない

• http://rad-dev.org/

Page 18: ここがすごい! なぞとPHP5.3

主な特徴

• PHP5.3専用

• MongoDBなどのDBにも対応(むしろ推奨している印象)

• CakePHPっぽく書けるが先進的な機能も豊富

– フィルタ機能で好きなところを改造できる

Page 19: ここがすごい! なぞとPHP5.3

ダウンロードインストール

Page 20: ここがすごい! なぞとPHP5.3

ダウンロード

• http://rad-

dev.org/lithium/wiki/drafts/blog-tutorial

を参考に

– ここで見るとMongoDBを使っているが、今回はMySQLで行う

• http://rad-dev.org/lithium/versionsからダウンロードして解凍

Page 21: ここがすごい! なぞとPHP5.3

初期設定

• フォルダ構成はCakePHPそっくり– 若干違う箇所もあるが

• URLがルートでない場合はCakePHP同様.htaccessでRewriteBaseを設定

• app/resourcesをwritableにする

• config/bootstrap.phpのconnections.phpをrequireしてるところのコメントアウトを解除

• config/connections.phpを編集– DB設定

Page 22: ここがすごい! なぞとPHP5.3

テーブル

create table posts (

id integer unsigned not null auto_increment,

title varchar(255),

body text,

primary key(id)

);

Page 23: ここがすごい! なぞとPHP5.3

MVC作成

Page 24: ここがすごい! なぞとPHP5.3

app/models/Post.php

<?php

namespace app\models;

class Post extends \lithium\data\Model {

}

Page 25: ここがすごい! なぞとPHP5.3

app/controllers/PostsController.php

<?php

namespace app\controllers;

class PostsController extends \lithium\action\Controller {

}

Page 26: ここがすごい! なぞとPHP5.3

app/views/posts/index.html.php

(普通のHTML)

Page 27: ここがすごい! なぞとPHP5.3

MVC作成

• controllerからviewに値を渡すには、controllerでkey=>valueの形式でreturnする

– compactを使うのがおすすめ

Page 28: ここがすごい! なぞとPHP5.3

MVC作成

• viewの拡張子は.html.php

• viewではshort_open_tagの設定に限らず、<?=$foo?>書式が使える– なんと自動でHTMLエスケープ機能付き

– ちなみにエスケープされたくない場合は<?php echo $foo ?>

– なぜかHelperは自動エスケープされない不思議

– nl2brは普通にやるしかない(と思う)

Page 29: ここがすごい! なぞとPHP5.3

CRUDを作ってみる

Page 30: ここがすごい! なぞとPHP5.3

Model

• Model周りはそこまで調べてないので省略

• namespaceで使うモデルを定義

– 別にしなくても使えるけど定義したほうが楽

Page 31: ここがすごい! なぞとPHP5.3

Helper

• Helperは$thisから参照すること

– $this->html->link(...)

Page 32: ここがすごい! なぞとPHP5.3

まとめ

Page 33: ここがすごい! なぞとPHP5.3

まとめ

• lithiumは開発がもりもり進んでいるので、そのうち実用的になる– その日に向けて勉強しておくのはいいかも

– 今はまだ実用は厳しいかも(ドキュメントが少なすぎ)

• lithiumが出てきたらPHP5.3が本番!という感じがする– 他に使う理由があまり無い

– 追加機能は便利ではあるが…

Page 34: ここがすごい! なぞとPHP5.3

おわり