PHPの基礎と開発手法 Based on PHP5

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
復習ー I (General Review I) クラスとオブジェクトの概念 Concepts of class and object クラスの宣言とオブジェクトの生成 Definition of a class and creation of an object コンストラクタとメソッドのオーバーロー.
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
© 2005 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます prototype.js と Perl で Ajax 株式会社はてな 伊藤 直也
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
プログラミング言語ADP 大藤雄久.
第3回参考文献発表 PHP言語 岩永逸平.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
CakePHPを業務に導入する Shin x blog 新原 雅司.
第4回 iPhoneアプリ開発勉強会 Objective-C 基礎講座 -クラス- 鷲見政明.
Step-by-Step Guide on How to Start ALICE Analysis
アルゴリズムとデータ構造1 2007年6月12日
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
第4回 個人の動画配信補足のためのWeb構築
卒研:データベースチーム 第4回 DOMを使った処理
3-3 クラス図の関係その2.
アルゴリズムとデータ構造 2011年6月13日
アルゴリズムとプログラミング (Algorithms and Programming)
平成19年5月19日 第3版 東京大学理学部生物化学図書室 前田 朗
Day3 Day4 Day3 Day4.
社会人学習講座 「Javaプログラミング概論」
Day3 Day4 Day3 Day4.
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
応用プロジェクト後半 第2回(11/26) 担当:奥田教授
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
~手続き指向からオブジェクト指向へ[Ⅱ]~
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
8.1 例外処理 8.2 catchブロックの検索 8.3 throwステートメント 8.4 例外とエラークラス 8.6 独自の例外
ソフトウェア工学 知能情報学部 新田直也.
JAVA入門後期⑩ 情報処理試験例題解説.
アルゴリズムとプログラミング (Algorithms and Programming)
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
応用プロジェクト後半 第2回(12/11) 担当:奥田教授
応用プロジェクト後半 第2回(12/5) 担当:奥田教授
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
もっと詳しくArrayクラスについて調べるには → キーワード検索
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
Java における 先進的リフレクション技術
第8回放送授業.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
アルゴリズムとデータ構造 2012年6月11日
サブゼミ第7回 実装編① オブジェクト型とキャスト.
ソフトウェア制作論 平成30年11月14日.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
cp-3. サブクラス,継承 (C++ オブジェクト指向プログラミング入門)
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
cp-1. クラスとメソッド (C++ オブジェクト指向プログラミング入門)
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト・プログラミング 第10回 オブジェクト指向設計のキモ.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
ZendFrameworkで使うためにFilemakerクラスをスクラッチから作ってみる
Presentation transcript:

PHPの基礎と開発手法 Based on PHP5 http://www.php.net/ Yuki Matsukura matsu@ht.sfc.keio.ac.jp 8/9/2018

アウトライン PHPの基礎 (15分) PHP5の新機能 (10分) PHPを利用した開発(5分) まとめ (2分) 説明 実装 オブジェクト周り 例外 PHPを利用した開発(5分) 開発ツール 業界の標準 まとめ (2分)

PHPの基礎

動作概念 Apacheのモジュール プログラム呼び出し 一般にPHPが利用される 動作軽量 コマンドラインで使用 Perlのようなイメージ #!/usr/local/bin/php <?php … ?> 出展:http://www.uni-giessen.de/~g004/php/mysql/mysqlserver4.gif

PHPの動かし方 <?php ?> 拡張子 <html> で始まり ?> で終わる 拡張子 .php PHPスクリプト .phps PHPソース <html> <h1>Say something</h1> <?php print “hello”; ?> </html>

PHPの文法 変数/コメント 変数 コメント 型の概念は無い 変数の宣言必要なし // /* … */ <html> <h1>Say something</h1> <?php // 代入 $message = “HELLOOOO”; // 表示 print $message; ?> </html>

PHPの文法 関数 利用 作る <?php // 利用 print date('Y-m-d'); print plus(1,3); name($param1,$param2); 作る function name($param1){ } <?php // 利用 print date('Y-m-d'); print plus(1,3); // 作る function plus($first, $secound){ return $first + $secound; } ?>

PHPの文法 配列 <?php $a1 = array('dog', 'cat', 'bird'); $a2[0] = 'dog'; $a2[1] = 'cat'; $a2[2] = 'bird'; // 表示 print '<pre>'; print_r($a1); print_r($a2); print '</pre>'; ?>

PHPの文法 Hash <?php $h1 = array( 'dog' => '犬', 'cat' => '猫', 'bird' => '鳥' ); $h2['dog'] = '犬'; $h2['cat'] = '猫'; $h2['bird'] = '鳥'; // 表示 print '<pre>'; print_r($h1); print_r($h2); print $h1['dog']; print '</pre>'; ?>

実装 – モデル Formに文字を入力 (form.html) 文字列を表示 (postecho.php)

ごにょごにょ

主な機能 ファイルアクセス DBアクセス Socket 正規表現 XML,XSL Session その他 Postgres,MySQL,Oracleなど Socket 正規表現 XML,XSL Session その他 PDF作成 IMAP LDAP Javaとの連携 などの便利な関数がたくさん用意されている

PHP5の新機能

簡単な歴史 1995 PHP/FI 1998/6 PHP3 2000/5/22 PHP4 2004/7/13 PHP5

オブジェクト指向 オブジェクト指向でも書ける PHP4 オブジェクト クラス PHP5(PHP4の拡張) アクセス制限できるようになった

新機能 - オブジェクト アクセス制限 例外 抽象クラスとメソッド (abstract) インタフェース (interface) private protected 例外 抽象クラスとメソッド (abstract) インタフェース (interface) final 修飾子 Clone (__clone() ) コンストラクタ ( __construct() ) デストラクタ ( __destruct() )

Classのコード アクセス制限 private protected 宣言したクラスだけからアクセス可能 サブクラスからもアクセス可能 <?php class TestClass(){ private $attribute1 = 'dog'; protected $attribute2 = 'cat'; private function getAttribute1(){ return $this->$attribute1; } function getAttribute2(){ return $this->$attribute2; $class = new TestClass(); print $class->getAttribute2(); ?>

例外処理 try … throw … catch Javaと同じ <?php class TestClass(){ private $attribute1 = 'dog'; protected $attribute2 = 'cat'; private function getAttribute1(){ return $this->$attribute1; } function getAttribute2(){ return $this->$attribute2; $class = new TestClass(); print $class->getAttribute2(); ?>

Classのコード アクセス制限 private protected 宣言したクラスだけからアクセス可能 サブクラスからもアクセス可能 <?php class TestClass(){ private $attribute1 = 'dog'; protected $attribute2 = 'cat'; private function getAttribute1(){ return $this->$attribute1; } function getAttribute2(){ return $this->$attribute2; $class = new TestClass(); print $class->getAttribute2(); ?>

Classのコード アクセス制限 private protected 宣言したクラスだけからアクセス可能 サブクラスからもアクセス可能 <?php class FileNotFoundException extends exception {   function FileNotFoundException($_error) {     $this->error = $_error;   }   function getException()   {     return $this->error; } class MyClass {   function open($filename)     if(!file_exists($filename))        throw new FileNotFoundException("file not found"); try{   $class = new MyClass();   $class->open("non_exists_file"); } catch(FileNotFoundException $e) {   die($e->getException()); ?>

PHPを利用した開発

開発ツール Eclipse Emacs? TruStudioプラグイン Apache PHP RDBMS http://www.xored.com/download.php Apache PHP RDBMS Emacs?

MVC 改変:http://www.stackasterisk.jp/tech/php/mojavi01_02.jsp

フレームワーク mojavi Phrame WaWaWa http://www.mojavi.org/ http://phrame.sourceforge.net/ WaWaWa http://wawawa.jp/

優秀なクラスライブラリ達 PEAR ADOdb SMARTY PHPにデフォルトで付属 多種多様なライブラリ http://pear.php.net/ ADOdb DBを抽象化し,便利なメソッドを用意 PEARのDBより高速 http://adodb.sourceforge.net/ SMARTY Viewを分けるためのテンプレートエンジン http://smarty.php.net/

まとめ

まとめ 既存のライブラリを利用する MVCを意識したコーディング ライブラリ全般:PEAR DBMS抽象化:ADOdb HTMLテンプレート:SMARTY フレームワーク MVCを意識したコーディング MVCが入り交じったコードを書くな! フレームワークを利用する.

参考文献 PHP Official Site Einführung in PHP und MySQL PHP5徹底攻略 http://www.php.net/ Einführung in PHP und MySQL http://www.uni-giessen.de/~g004/php/mysql/mysqlserver4.gif PHP5徹底攻略 http://www.net-newbie.com/support/