
PHPフレームワーク入門 Zend Framework 2 コネクト株式会社 アジェンダ フレームワークとは ◦ MVC とは Zend Framework 2 入門 ◦ Zend Framework 2 のインストールと動作確認 ◦ Zend Framework 2 を使用したシンプルな例題 Copyright 2014 konekto, Inc # 2 フレームワークとは フレームワークを使用すると、高品質で均 一なのWEBアプリケーションを短期間に構 築できます。 開発効率の追求(基本) フレームワーク ライブラリ サブルーチン/関数 独自開発 Copyright 2014 konekto, Inc # 4 開発効率の追求(極限) パッケージソフト (半完成品 ) フレームワーク テンプレートエンジン 隠蔽化 /抽象化 プログラム言語 Copyright 2014 konekto, Inc # 5 フレームワークの効果 開発工数の圧縮 ◦ コーディング工数 ◦ テスト工数 大規模開発における標準化と効率化 ◦ チーム開発 読みやすいコード化 コード量の圧縮 品質の均一化 メンテナンス性の向上 Copyright 2014 konekto, Inc # 6 コンピュータの5大機能 入力 出力 Web ブラウザ Web ブラウザ からの入力 への出力 記憶 演算 データベース データ加工 ファイル 制御 プログラムロ ジック Copyright 2014 konekto, Inc # 7 アプリケーションの共通機能 汎用的な処理の共通化 ◦ ページ遷移とロジック ◦ MVC による役割の明確化 ◦ デザインとロジックの分離 ◦ 入力処理(サニタイズ) ◦ データベース処理 ◦ 隠蔽化 ◦ 認証処理/アクセス制御 Copyright 2014 konekto, Inc # 8 Zend Framework 2 の特徴 ビジネスで利用可能なフレームワーク ◦ Zend をはじめとした企業がコミュニティに参加 シンプルな構造 ◦ モジュール単位に利用可能 明確なライセンス体系 ◦ ビジネスで部分的に使用しても問題ない PHP 5.3 を採用 Copyright 2014 konekto, Inc # 9 代表的な PHPフレームワークの比較 小規模 ←→ 大規模 Laravel 単機能 CodeIgniter Yii FuelPHP ↑ CakePHP Zend Framework 2 ↓ 高機能 Symfony Copyright 2014 konekto, Inc # 10 PHPフレームワークシェア Copyright 2014 konekto, Inc # 11 話題性:Google トレンド Copyright 2014 konekto, Inc # 12 MVCとは WEBプログラミングの手法として、スタン ダードになったMVCついて学習します。 フレームワークやオブジェクト指向のベース となる考え方ですので、把握することはス テップアップに不可欠です。 MVC 基礎知識 MVC とは… ◦ ソフトウェアの開発手法の一つ ◦ Model (モデル), View(ビュー), Controller (コントローラ)の 頭文字を合わせたもの ◦ プログラムを上記三つのパターンに分割して,それぞれの 役割ごとに処理を実装する手法 Copyright 2014 konekto, Inc # 14 MVC 基礎知識 それぞれの役割 パターン 役割 Model(モデル) データの出し入れと加工を行う View(ビュー) データの表示を行う Controller(コントローラ) ユーザから命令を受け付け,モデ ルやビューを繋げて処理を完成さ ◦ つまりシステムはデータを扱うものであり、データせる Copyright 2014 konekto, Inc # 15 MVC 基礎知識 デザイン図 データ モデル 処理要求 参照 コントローラ ビュー 表示要求 リクエスト レスポンス ユーザ側 Copyright 2014 konekto, Inc # 16 MVC 基礎知識 MVC の利点 ◦ 画面デザインと内部ロジックの分割 ◦ デザイナとプログラマの分業化 ◦ デザイン変更の容易化 ◦ ビュー作成を楽にするテンプレートエンジンの採用 ◦ 同じデータのI/O をモデルに集約することでオブジェクト指向 的な実装が可能 ◦ 役割分担による見やすいコーディング Copyright 2014 konekto, Inc # 17 Zend Framework 2 のMVC 入口はすべてindex.php ◦ エントリーポイントという考え方 公開するのはindex.php のみ ◦ 設定ファイルやライブラリは直接アクセス禁止 ◦ ただし画像とかCSS とかJavaScript は別 指定されたURL にしたがって処理決定 ◦ モジュール/コントローラー/アクション ビュー ◦ HTML などをレンダリングする ◦ 全ての処理が完了してからレンダリング開始 Copyright 2014 konekto, Inc # 18 MVC テンプレートエンジン PHP テンプレートエンジンとは? ◦ ビューを担うPHP のライブラリ ◦ ビューファイルに相当するHTML ライクのものをテンプ レートと呼ぶ ◦ 書式は簡単だが独自のもの ◦ 変数や、簡単な条件文( if )、ループなどの制御をサポート ◦ 表示に特化しているので、 HTML エスケープや数値や日付の書式 変換が得意 Copyright 2014 konekto, Inc # 19 MVC テンプレートエンジン テンプレートエンジンの目的 ◦ プログラマとデザイナの作業分担を明確化 ◦ デザイン変更に対する柔軟性を高める ◦ ロジックをよりシンプルに ◦ 余計な処理を挟まない分、すっきりしたものに Copyright 2014 konekto, Inc # 20 リライト処理 リライトエンジン ◦ URL で指定された内容を目的に応じて書き換える機能 ◦ 1つのWeb ページ(アプリ:コントローラ)が受け取って処理 を分岐する Copyright 2014 konekto, Inc # 21 Zend Framework 2 ZEND FRAMEWORK 1 と ZEND FRAMEWORK 2 の違いとは ZF1とZF2の違い PHP 5.3 ベース ◦ ZF1 はPHP 5.1 ベース NameSpace を意識 イベント駆動タイプ デザインタイプにDI(Dependency Injection) を採用 Copyright 2014 konekto, Inc # 23 Zend Server が提供する ZF Zend と提供企業が提供する企業向けの新たな Web システム環境 企業ユーザが望むプロ仕様の PHP 環境を提供 – 高信頼性と高速性を両立した PHP 環境の提供 – Web アプリ単位の監視機能を提供 – 稼動後の運用管理の容易さ – 開発効率の向上 – モバイル環境への対応 サーバ管理GUI MySQL/DB2 Zend Framework 1 & 2 デプロイ機能 データベースドライバ 高速化 拡張モジュール デバッグ JVM との連携 PHP実行環境 モニタリング ジョブキュー Apache(IHS) コードトレーシング XML Tool Kit Copyright 2014 konekto, Inc # 24 Zend Server 6.1 Copyright 2014 konekto, Inc # 25 Zend Server 7.0 Copyright 2014 konekto, Inc # 26 Zend Framework 2 インストールと動作確認 ZEND FRAMEWORK 2 の配置と動作確 認ようにスケルトンプロジェクトの配置を行 います。 ベース環境の構築 Zend Framework 2 の必要条件 ◦ Web サーバ ◦ リライトエンジン(mod_rewrite など) ◦ PHP 5.3.x ◦ HTML5 対応ブラウザ Copyright 2014 konekto, Inc # 28 インストール手順① Web サーバとPHP 5.3 環境を用意 ◦ Zend Server 6 以上の場合 ◦ Zend Framework と Zend Framework 2 インストール済 ◦ 手順③へ ◦ XAMPP などの場合 ◦ Zend Framework 2 独自にインストール Copyright 2014 konekto, Inc # 29 インストール手順② Zend Framework 2を入手 ◦ http://framework.zend.com/downloads/latest ◦ ZendFramework-2.3.3.zip *10/10 現在 ◦ 適当に展開(別途説明) Copyright 2014 konekto, Inc # 30 インストール手順③ スケルトンプロジェクトの入手 ◦ https://github.com/zendframework/ZendSkeletonApplication ◦ ZendSkeletonApplication-master.zip Copyright 2014 konekto, Inc # 31 インストール手順④ スケルトンプロジェクトの配置 ◦ 適当に展開します ◦ public ディレクトリをドキュメントルートへ ◦ ディレクトリ名を ZendSkeleton に変更 ◦ 残りを適当に配置します ◦ ディレクトリ名を ZendSkeleton に変更 具体例を次ページで解説します Copyright 2014 konekto, Inc # 32 インストール手順④ 補完 圧縮ファイル内部 ¥ エントリーポイントの配置 (Web サーバのドキュメントルート ) ├─config ◦ XAMPP の場合 │ └─autoload ◦ c:¥xampp¥htdocs¥ZendSkeleton ├─data │ └─cache ├─module アプリ実態の配置( Web サーバのドキュメントルート以外) │ └─Applicaon ◦ XAMPP の場合 │ ├─config ◦ c:¥xampp¥ZendSkeleton │ ├─language │ ├─src │ │ └─Applicaon │ │ └─Controller Zend Framework 2 の配置 (Web サーバのライブラリ置き場 ) │ └─view ◦ XAMPP の場合 │ ├─applicaon ◦ C:¥xampp¥Library │ │ └─index │ ├─error │ └─layout ├─public │ ├─css │ ├─fonts │ ├─img │ └─js └─vendor COPYRIGHT 2014 KONEKTO, INC # 33 インストール手順⑤ エントリーポイントindex.php の設定 ◦ ディレクトリ C:¥xampp¥htdocs¥ZendSkeleton ◦ ファイル名 index.php ◦ 場所 6行目と8行目付近 ◦ Zend Framework 2 へのパス設定 ◦ カレントディレクトリをアプリ実態へ ◦ index.php の内容 (XAMPP の例 ) ◦ putenv("ZF2_PATH=" . 'C:¥xampp¥Library¥ZendFramework-2.3.3¥library'); ◦ chdir('c:¥xampp¥ZendSkeleton'); Copyright 2014 konekto, Inc # 34 インストール手順⑥ スケルトンプロジェクトの動作確認 ◦ URL http://127.0.0.1/ZendSkeleton/ OK NG Copyright 2014 konekto, Inc # 35 Zend Framework 2 基本概念 ZEND FRAMEWORK 2 の基本的な概念 を説明します。 リクエストURLとデフォルト ◦ http:// ドメイン /モジュール/コントローラ /アクション ◦ http://127.0.0.1/ZendSkeleton/ ◦ http://127.0.0.1/ZendSkeleton/application/index/index Copyright 2014 konekto, Inc # 37 モジュール概念 アプリケーション モジュール モジュール モジュール Model Model Model View View View Controller Controller Controller Action Action Action Action Action Action Copyright 2014 konekto, Inc # 38 スケルトンプロジェクトで確認 圧縮ファイル内部 ¥ ├─ config │ └─ autoload ├─data │ └─cache ├─module │ └─Application モジュール │ ├─ config │ ├─language │ ├─ src │ │ └─Application │ │ └─Controller コントローラー │ └─view │ ├─application │ │ ├─index index コントローラのビューファイル │ │ └─user user コントローラのビューファイル │ ├─error │ └─layout └─vendor └─ZF2 Copyright 2014 konekto, Inc # 39 Zend Framework 2 例題による入門 簡単な例題を通して ZEND FRAMEWORK 2 の基本動作を説明します Zend Framework 2 例題 コントローラーおよびアクションの作成 アクションからビューで値の受け渡し FORMから値を取得 Captcha による認証処理 Copyright 2014 konekto, Inc # 41 例題1 コントローラー/アクションの作成 ◦ コントローラーおよびアクションを作成 ◦C:¥xampp¥ZendSkeleton¥module¥Application¥src¥Application¥Controller にUserController.php をコピー ◦ コントロールを登録 C:¥xampp¥ZendSkeleton¥module¥Application¥config のmodule.config.php を修正 ◦ ビューを配置 C:¥xampp¥ZendSkeleton¥module¥Application¥view¥application¥user にtokyo.phtml をコ ピー ◦ 以下の URL にアクセスして出力結果を確認しましょう。 ◦ http://127.0.0.1/ZendSkeleton/application/user/tokyo Copyright 2014 konekto, Inc # 42 例題1 コントローラー/アクションの作成 ◦ http://127.0.0.1/ZendSkeleton/application/user/tokyo Copyright 2014 konekto, Inc # 43 例題2 値の受け渡し ◦ ビューを配置 C:¥xampp¥ZendSkeleton¥module¥Application¥view¥application¥user にosaka.phtml を コピー ◦ 以下の URL にアクセスして出力結果を確認しましょう。 ◦ http://127.0.0.1/ZendSkeleton/application/user/osaka Copyright 2014 konekto, Inc # 44 例題2 値の受け渡し ◦ http://127.0.0.1/ZendSkeleton/application/user/osaka Copyright 2014 konekto, Inc # 45 例題3 FORMから値を取得 ◦ フォームを配置 ◦C:¥xampp¥htdocs¥ZendSkeleton¥にform.html をコピー ◦ ビューを配置 C:¥xampp¥ZendSkeleton¥module¥Application¥view¥application¥user にkyoto.phtml を コピー ◦ 以下の URL にアクセスして出力結果を確認しましょう。 ◦ http://127.0.0.1/ZendSkeleton/application/user/kyoto Copyright 2014 konekto, Inc # 46 例題3 FORMから値を取得 ◦ http://127.0.0.1/ZendSkeleton/form.html Copyright 2014 konekto, Inc # 47 例題コースコード 簡単な例題を通してZEND FRAMEWORK 2 の基本動作を説明します エントリーポイント Index.php ◦<?php ◦/** ◦ * This makes our life easier when dealing with paths. Everything is relative ◦ * to the application root now. ◦ */ ◦ putenv("ZF2_PATH=" . 'C:¥xampp¥Library¥ZendFramework-2.3.3¥library'); ◦ ◦//chdir(dirname(__DIR__)); ◦chdir('c:¥xampp¥ZendSkeleton'); ◦// Decline static file requests back to the PHP built-in webserver ◦if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) { ◦ return false; ◦} ◦// Setup autoloading ◦require 'init_autoloader.php'; ◦// Run the application! ◦Zend¥Mvc¥Application::init(require 'config/application.config.php')->run(); Copyright 2014 konekto, Inc # 49 コントローラーの登録 module.config.php の76 行目 ◦ 'controllers' => array( ◦ 'invokables' => array( ◦ 'Application¥Controller¥Index' => 'Application¥Controller¥IndexController', ◦ 'Application¥Controller¥User' => 'Application¥Controller¥UserController', ◦ ), ◦ ), Copyright 2014 konekto, Inc # 50 コントローラーとアクション IndexController.php ◦<?php ◦/** ◦ * Zend Framework (http://framework.zend.com/) ◦ * ◦ * @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository ◦ * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) ◦ * @license http://framework.zend.com/license/new-bsd New BSD License ◦ */ ◦namespace Application¥Controller; ◦use Zend¥Mvc¥Controller¥AbstractActionController; ◦use Zend¥View¥Model¥ViewModel; ◦class IndexController extends AbstractActionController ◦{ ◦ public function indexAction() ◦ { ◦ return new ViewModel(); ◦ } ◦} Copyright 2014 konekto, Inc # 51 コントローラーとアクション ◦class UserController extends AbstractActionController ◦{ ◦ public function tokyoAction() ◦ { ◦ return new ViewModel(); ◦ } ◦ ◦ public function osakaAction() ◦ { ◦ $data = array( ◦ 'key1' => ' あいうえお', ◦ 'key2' => ' いろは ' ◦ ); ◦ return new ViewModel($data); ◦ } ◦ ◦ public function kyotoAction() ◦ { ◦ $data = array( ◦ 'name' => $this->params()->fromPost( 'name' ), ◦ 'year' => $this->params()->fromPost( 'year' ), ◦ 'month' => $this->params()->fromPost( 'month' ), ◦ 'day' => $this->params()->fromPost( 'day' ) ◦ ); ◦ return new ViewModel($data); ◦ } ◦} Copyright 2014 konekto, Inc # 52 FORM form.html ◦<html> ◦ <head> ◦ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ◦
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages66 Page
-
File Size-