osc2009 spring zf-users

81
Zend Framework OSC2009 Spring 2009/02/21 wozozo@zf-users (nequal)

Upload: yoichi-fujimoto

Post on 21-Jan-2015

1.113 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Osc2009 Spring zf-users

Zend FrameworkOSC2009 Spring 2009/02/21

wozozo@zf-users (nequal)

Page 2: Osc2009 Spring zf-users

いきなりですが

Page 3: Osc2009 Spring zf-users

Zend Framework使ったことある人

(`・ω・)ノシ

Page 4: Osc2009 Spring zf-users

Agenda

• 自己紹介• PHPフレームワークの今

• Zend Frameworkのいいとこわるいとこ

• Hello, World

• 調べ方・他まとめ

Page 5: Osc2009 Spring zf-users

自己紹介• wozozo (をぞぞ)

• 本名は「ふじもとよういち」• 1988-02-09うまれ 21歳 ギリ昭和

• 関西出身・練馬er

• http://wozozo.org

• ニート

Page 6: Osc2009 Spring zf-users

ウンコプログラマー

Page 7: Osc2009 Spring zf-users

PHPフレームワークの今

Page 8: Osc2009 Spring zf-users

いっぱいある• CakePHP

• symfony

• Zend Framework

• Ethna

• rhaco

• Maple

• CodeIgniter

• Piece Framework

• yii

• Akelos

• ちいたん

• 他多数...

Page 9: Osc2009 Spring zf-users

日本の2大勢力

• CakePHP

• symfony

Page 10: Osc2009 Spring zf-users

CakePHP

• Railsっぽい

• 非常にとっかかりやすい• コミュニティも活発 (http://cakephp.jp)

• CakePHPカンファレンス 東京

• 開発者も来日(*´д`*)

Page 11: Osc2009 Spring zf-users

symfony

• シンプルなテンプレートとヘルパー

• 管理ツール(アプリケーションファイル群の管理――変更、更新など)

• scaffolding機能(データベースの基本操作に必要なモジュールを自動生成する)

• スマートURL(設定ファイルによりURLの形式を決めることができる)

• 多言語(I18N)対応

• プラグインによる機能追加が可能

• http://codezine.jp/article/detail/704?p=1

Page 12: Osc2009 Spring zf-users

じゃあZend Frameoworkは?

Page 13: Osc2009 Spring zf-users

リリース• 2007-06-30 v1.0.0 Release

• 2008-03-17 v1.5.0 Release

• 2008-09-02 v1.6.0 Release

• 2008-11-17 v1.7.0 Release

• 2009-02-16 v1.7.5 Release ←今ココ

• Next Release v1.8.0

Page 14: Osc2009 Spring zf-users

0

125,000

250,000

375,000

500,000

1.0.0 1.5.0 1.6.0 1.7.0

253,850

377,046

414,057

479,530

バージョンごとのコード行数

Page 15: Osc2009 Spring zf-users

• とっかかりにくい

• ディレクトリ構造も全部自分で

• ( ゚д゚)めんどくせぇ

• 他のフレームワークと比べると面倒

Page 16: Osc2009 Spring zf-users

レス

Page 17: Osc2009 Spring zf-users

いいとこ・わるいとこ

Page 18: Osc2009 Spring zf-users

• 制限が緩い• 非常に多くのコンポーネント• ライブラリとして使える• 公式ドキュメントの充実

いいとこ

Page 19: Osc2009 Spring zf-users

制限が緩い

• 制限っぽい制限がない• ディレクトリ構造も自分で決める

• ここがとっかかりにくさでもある →

Page 20: Osc2009 Spring zf-users

非常に多くのコンポーネント

• Zend_* が1つのコンポーネント

• v1.7.5現在 45個ぐらい (たぶん)

Page 21: Osc2009 Spring zf-users

非常に多くのコンポーネントAcl, Amf, Auth, Cache, Captcha, Config, Config_Writer,

Console_Getopt, Controller, Currency, Date, Db, Debug, Dojo, Dom, Exception, Feed, File, Filter, Filter_Input,

Form, Gdata, Http, Infocard, Json, Layout, Ldap, Loader, Locale, Log, Mail, Measure, Memory, Mime, OpenId,

Paginator, Pdf, ProgressBar, Registry, Rest, Search_Lucene, Server_Reflection, Service_Akismet, Service_Amazon,

Service_Audioscrobbler, Service_Delicious, Service_Flickr, Service_Nirvanix, Service_ReCaptcha, Service_Simpy,

Service_SlideShare, Service_StrikeIron, Service_Technorati, Service_Twitter, Service_Yahoo, Session, Soap, Test, Text,

Timesync, Translate, Uri, Validate, Version, Zend_View, Wildfire, XmlRpc, Console_Process_Unix, JQuery

Page 22: Osc2009 Spring zf-users

非常に多くのコンポーネント

• MVCとして扱う際はこれらを組み合わせて使う

Page 23: Osc2009 Spring zf-users

ライブラリとして• 1つのコンポーネントを切り出せる

• Dbだけ使う とか。

• 他のフレームワークのライブラリとして (PEAR)

• http://epic.codeutopia.net/pack/library/(Packageizer)

Page 24: Osc2009 Spring zf-users

公式ドキュメントの充実

• http://framework.zend.com/manual/ja/

• ほぼ全ページ翻訳済み• 常に更新されている

Page 25: Osc2009 Spring zf-users

公式ドキュメントの充実

• m-takagi (Masahiro Takagi)

• yoshida (Zend Japan)

• ほぼ100%この二人が訳してる( ゚д゚)

• 250ページぐらい

Page 26: Osc2009 Spring zf-users

公式ドキュメントの充実

• 困ったときはとりあえずここ探せば何か見つかる

• 1ページが長ぁ~いところがあるので見つけにくいところもあるかも><

Page 27: Osc2009 Spring zf-users

わるいとこ

• 制限が緩い• 自分で拡張しないといけないかも• マルチバイト圏• 情報量

Page 28: Osc2009 Spring zf-users

制限が緩い• いいとこでもある制限の緩さ• たとえば初期ディレクトリ構造

• これが決まりがないので人によって構造が違ってたりする

• この情報をどう共有するかが課題

Page 29: Osc2009 Spring zf-users

制限が緩い

• Bootstrapと呼ばれる初期化ファイル

• これも特に決まりがない• ディレクトリ構造より他の人がどう書いているのか気になる

Page 30: Osc2009 Spring zf-users

制限が緩い

• この緩さがいいとこでもあり、わるいところでもある。

• そしてこれが最大の入門者の壁

Page 31: Osc2009 Spring zf-users

自分で拡張しないといけないかも

• そのまま使うと同じロジックを何度も• たとえばコントローラー     ↓

Page 32: Osc2009 Spring zf-users

HogeController

Zend_Controller_Action

extends

extends

App_Controller_Action_Abstract

抽象クラスを挟んで拡張

Plugin

Page 33: Osc2009 Spring zf-users

Plugin

• routeStartup()

• routeShutdown()

• dispatchLoopStartup()

• preDispatch()

• postDispatch()

• dispatchLoopShutdown()

Page 34: Osc2009 Spring zf-users

マルチバイト圏

• 海外発なのでマルチバイト問題がちらほら• Validator

• Mail

• PDF

Page 35: Osc2009 Spring zf-users

情報量

• CakePHPやsymfonyなどのメジャーなフレームワークと比べると少ない

Page 36: Osc2009 Spring zf-users

Hello, Worldさぁやってみよう

Page 37: Osc2009 Spring zf-users

入門してみる

• ディレクトリ構造• Bootstrap

• Controller

• View

Page 38: Osc2009 Spring zf-users

そのまえにインストール

• http://framework.zend.com/download/latest

• ここからzipかtar.gzをダウンロード(FullとMinimalがある。Miniでok)

• include_pathに Zend/ ディレクトリを置く

• mod_rewriteを有効に

Page 39: Osc2009 Spring zf-users

http://pear.zfcampus.org/

Page 40: Osc2009 Spring zf-users

ディレクトリ構造

• Zend Studio for Eclipse で生成される構造をベースにします

• たぶんこれが一番シンプル

Page 41: Osc2009 Spring zf-users
Page 42: Osc2009 Spring zf-users

ディレクトリはOK!

Page 43: Osc2009 Spring zf-users

Bootstrapあれこれ

• Zend StudioのBootstrapは3層構造

• index.php -> boostrap.php -> Initializer.php

Page 44: Osc2009 Spring zf-users

Bootstrap (index)

<?phprequire '../application/bootstrap.php';

Page 45: Osc2009 Spring zf-users

Bootstrap (bootstrap)<?php// include_pathを設定set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/default/models/' . PATH_SEPARATOR . get_include_path());

require_once 'Initializer.php';require_once "Zend/Loader.php";

// autoloadを設定Zend_Loader::registerAutoload(); // フロントコントローラーのインスタンスを取得 $frontController = Zend_Controller_Front::getInstance();

// production or development で「本番・テスト」環境を分ける$frontController->registerPlugin(new Initializer('development'));

// リクエストをコントローラーに振る$frontController->dispatch();

Page 46: Osc2009 Spring zf-users

Bootstrap (Initializer)若干長いのでハショります

Page 47: Osc2009 Spring zf-users

mod_rewrite

RewriteEngine onRewriteCond %{SCRIPT_FILENAME} !-fRewriteCond %{SCRIPT_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1

存在しないファイルへのリクエストは全部rewriteしちゃうよ!

Page 48: Osc2009 Spring zf-users

index.php

bootstrap.php

Initializer.php

require

include_path, autoload

初期化・設定

Dispatch

DocumentRoot

new

Page 49: Osc2009 Spring zf-users

Controller• http://example.com

• IndexController の indexAction

• http://example.com/index/index

• http://example.com/user/login

• UserController の loginAction

Page 50: Osc2009 Spring zf-users

Controller

• IndexControllerを作ってみる

• application/default/ controller/IndexController.php

• CamelCase (ex. AaaController)

Page 51: Osc2009 Spring zf-users

Controller

<?phprequire_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action { public function indexAction() { }}

とりあえずこれだけ

Page 52: Osc2009 Spring zf-users

View

• viewファイルの拡張子は 「.phtml」

• 実体は普通のhtmlと全く一緒

• Zend_Viewの設定で .html に変更可

Page 53: Osc2009 Spring zf-users

View

• IndexController の indexAction

• application/default/ views/scripts/index/index.phtml

Page 54: Osc2009 Spring zf-users

View

<h1>Hello, World</h1><p>ヽ( ´^益^`)ノ</p>

Page 55: Osc2009 Spring zf-users

準備完了

Page 56: Osc2009 Spring zf-users

Hello, World

Page 57: Osc2009 Spring zf-users

URL

• http://localhost/zfproject/public/index.php

• http://zf-test/

Page 59: Osc2009 Spring zf-users

他のサンプルコード

• ZendFramework-x.x.x/demos/Zend

Page 61: Osc2009 Spring zf-users

zfsecurityhttp://code.google.com/p/zfsecurity/

1. Generate models2. Run SQL from models3. import dummy data

Page 62: Osc2009 Spring zf-users

Zym Framework

Page 63: Osc2009 Spring zf-users

遊び方

Page 64: Osc2009 Spring zf-users

Zend_Textrequire_once 'Zend/Text/Figlet.php';$f = new Zend_Text_Figlet(); echo $f->render('Oppai!');

Page 65: Osc2009 Spring zf-users

調べ方

Page 66: Osc2009 Spring zf-users

1. マニュアル

Page 67: Osc2009 Spring zf-users

アホ

Page 68: Osc2009 Spring zf-users

site:framework.zend.com/manual/ja 検索語

Page 69: Osc2009 Spring zf-users

2. IRC

Page 70: Osc2009 Spring zf-users

#zftalk-ja@freenode

Page 71: Osc2009 Spring zf-users

3. 2ch

Page 72: Osc2009 Spring zf-users

(^ω^)m9

Page 73: Osc2009 Spring zf-users

4. ブックマーク

Page 74: Osc2009 Spring zf-users

ブックマーク

• はてなブックマーク - ZendFrameworkタグhttp://b.hatena.ne.jp/t/zendframework?sort=eid

• delicious - ZendFramework taghttp://delicious.com/tag/zendframework

Page 75: Osc2009 Spring zf-users

5. ググる

Page 76: Osc2009 Spring zf-users

まとめ

Page 77: Osc2009 Spring zf-users

どんな人におすすめ?•フレームワークに縛られたくない人•自分色に染めたい人•しっかりとしたコーディング規約•将来の拡張性を考慮したり、他製品との兼ね合いがある場合(営業的な面でも)

Page 78: Osc2009 Spring zf-users

連載• Zend Framework入門(1 - 16 回)

http://codezine.jp/article/corner/42

• ZendFrameworkで作る『イマドキ』のWebアプリケーション(0 - 2 回)http://gihyo.jp/dev/serial/01/zf-ajax/

Page 79: Osc2009 Spring zf-users

zf-users.jp

Page 80: Osc2009 Spring zf-users

Zend Framework使ってみませんか?

(`・ω・)

Page 81: Osc2009 Spring zf-users

おしまい。