いまどきのPHP

7,928 views
7,782 views

Published on

2013/09/28 関西PHP勉強会 in JAWS FESTA Kansai 2013

Published in: Technology
0 Comments
20 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,928
On SlideShare
0
From Embeds
0
Number of Embeds
3,887
Actions
Shares
0
Downloads
20
Comments
0
Likes
20
Embeds 0
No embeds

No notes for slide

いまどきのPHP

  1. 1. 2013/09/28 shin1x1 関西PHP勉強会 in 京セラドーム いまどきのPHP
  2. 2. 昔のPHP (c) 2013 Masashi Shinbara @shin1x1 • HTMLとPHPの混在 • <body>タグの中にロジック • どこからでもDB接続 • 重複しまくりコード • とびかうグローバル変数....
  3. 3. 昔のPHP (c) 2013 Masashi Shinbara @shin1x1 HTMLとPHPが 混在したコード
  4. 4. Agenda (c) 2013 Masashi Shinbara @shin1x1 • オブジェクト指向機能 • オブジェクト指向の活用 • 最近のトピック
  5. 5. (c) 2013 Masashi Shinbara @shin1x1 オブジェクト指向機能
  6. 6. オブジェクト指向言語 (c) 2013 Masashi Shinbara @shin1x1 • 隠蔽(カプセル化) • 継承(インヘリタンス) • 多態性(ポリモフィズム)
  7. 7. 隠蔽(カプセル化) (c) 2013 Masashi Shinbara @shin1x1 • アクセス修飾子 <?php class Foo { public $public = 'public'; protected $protected = 'protected'; private $private = 'private'; } public どこからでもアクセス可能 protected 定義したクラス、継承したクラス private 定義したクラスのみ
  8. 8. 隠蔽(カプセル化) (c) 2013 Masashi Shinbara @shin1x1 <?php class Foo { public function public_method() { // どこからでも実行可 } protected function protected_method() { // Fooクラスとその継承クラス } private function private_method() { // Fooクラスのみ } }
  9. 9. 継承 (c) 2013 Masashi Shinbara @shin1x1 <?php class Foo { public function hello() { echo 'Foo'.PHP_EOL; } } class FooChild extends Foo { public function hello() { echo 'FooChild'.PHP_EOL; } } $obj = new FooChild(); $obj->hello(); // FooChild • 単一継承のみ 継承
  10. 10. 多態性(ポリモフィズム) (c) 2013 Masashi Shinbara @shin1x1 <?php interface Printable { public function output(); } class Foo implements Printable { public function output() { echo 'Foo'; } } class Bar implements Printable { public function output() { echo 'Bar'; } }
  11. 11. 多態性(ポリモフィズム) (c) 2013 Masashi Shinbara @shin1x1 <?php class SomeObject { public function execute(Printable $obj) { $obj->output(); } } $obj = new SomeObject(); $obj->execute(new Foo()); // Foo $obj->execute(new Bar()); // Bar Printable なら ok
  12. 12. クラスメソッド、定数、変数 (c) 2013 Masashi Shinbara @shin1x1 <?php class Foo { const CLASS_CONSTATNS = 'aws'; // クラス定数 static public $classValue = 'abc'; // クラス変数 static public function classMethod() { // クラスメソッド } } echo FOO::CLASS_CONSTATNS; // aws echo Foo::$classValue; // abc Foo::classMethod();
  13. 13. コンストラクタ、デストラクタ (c) 2013 Masashi Shinbara @shin1x1 <?php class Foo { protected $name = null; public function __construct($name) { $this->name = $name; echo '__construct'.PHP_EOL; } public function __destruct() { echo '__destruct'.PHP_EOL; } } $obj = new Foo('Jun'); // __construct // __destruct コンストラクタ デストラクタ
  14. 14. 抽象クラス、メソッド (c) 2013 Masashi Shinbara @shin1x1 <?php abstract class AbstractFoo { public function something() { $this->hello(); } abstract protected function hello(); } class Foo extends AbstractFoo { protected function hello() { echo 'Foo'; } } $obj = new Foo(); $obj->something(); // Foo 抽象クラス (インスタンス化不可) 具象クラス
  15. 15. final (c) 2013 Masashi Shinbara @shin1x1 <?php final class NoInheritance { } class Foo { final public function noInheritanceMethod() { // } } 継承できない オーバーライドできない
  16. 16. インターフェイス (c) 2013 Masashi Shinbara @shin1x1 <?php interface Printable { public function printValue($value); } interface Writable { public function writeValue($value); } class Foo implements Printable, Writable { public function printValue($value) { // } public function writeValue($value) { // } } 複数実装可
  17. 17. タイプヒンティング (c) 2013 Masashi Shinbara @shin1x1 <?php interface Printable {} interface Writable {} class Foo { public function bar(Printable $printer, Writable $writer) { // } public function something(array $array) { // } } タイプヒンティング タイプヒンティング タイプヒンティング
  18. 18. 名前空間 (c) 2013 Masashi Shinbara @shin1x1 <?php namespace Vendorlib; use AwsS3S3Client; class Foo { public function method() { throw new Exception(); } } 名前空間の宣言 名前空間のインポート グローバル VendorlibFoo
  19. 19. トレイト (c) 2013 Masashi Shinbara @shin1x1 • Mixin のようなもの • 変数やメソッドをまとめたもの • クラスに追加して利用 • 複数個追加できる
  20. 20. トレイト (c) 2013 Masashi Shinbara @shin1x1 <?php trait Say { protected $name = 'Jun'; public function say() { echo 'Hello '.$this->name.PHP_EOL; } } class Foo { use Say; } $obj = new Foo(); $obj->say(); トレイト トレイトの利用
  21. 21. PHPのオブジェクト指向機能 (c) 2013 Masashi Shinbara @shin1x1
  22. 22. 詳しくは (c) 2013 Masashi Shinbara @shin1x1 http://jp1.php.net/manual/ja/language.oop5.php
  23. 23. (c) 2013 Masashi Shinbara @shin1x1 オブジェクト指向 の活用
  24. 24. フレームワーク (c) 2013 Masashi Shinbara @shin1x1 • フレームワークの利用 • オブジェクト指向 • MVC • デファクトスタンダードは無い
  25. 25. フレームワーク (c) 2013 Masashi Shinbara @shin1x1 • CakePHP • Symfony • Zend Framework • CodeIgniter • FuelPHP • Laravel • Sliex • Phalcon • Ethna • Yii • BEAR.Sunday • Lithium • TYPO3 FLOW • Kohana • Slim • Aura for PHP
  26. 26. Symfony (c) 2013 Masashi Shinbara @shin1x1 • コンポーネントで構成 • コンポーネントは独立して利用可 • 他のフレームワークやライブラリで • 部品としての品質も高い • Zend Frameworkも
  27. 27. PHPUnit (c) 2013 Masashi Shinbara @shin1x1 http://phpunit.de/manual/3.7/ja/
  28. 28. PHPUnit (c) 2013 Masashi Shinbara @shin1x1 • xUnit の PHP 実装 • テストダブルやSelenium連携など • フレームワークやライブラリのテスト
  29. 29. PhpStorm (c) 2013 Masashi Shinbara @shin1x1 http://www.jetbrains.com/phpstorm/
  30. 30. PhpStorm (c) 2013 Masashi Shinbara @shin1x1 • JetBRAINS社のIDE • 補完機能が強力 • オブジェクト指向に則れば恩恵大 • いま注目のIDE
  31. 31. (c) 2013 Masashi Shinbara @shin1x1 最近のトピック
  32. 32. PHP 5.5 リリース (c) 2013 Masashi Shinbara @shin1x1 • 2013/06 リリース • ジェネレータ • OPcache • パスワードハッシュ関数
  33. 33. PHP 5.3 が EOL (c) 2013 Masashi Shinbara @shin1x1 • 5.3.27 が最後のリリース • セキュリティフィックスのみ • 2014/06 頃に終了 • 今後は、5.4 or 5.5 を利用
  34. 34. BEAR.Sunday (c) 2013 Masashi Shinbara @shin1x1 https://code.google.com/p/bearsunday/
  35. 35. BEAR.Sunday (c) 2013 Masashi Shinbara @shin1x1 • @koriym さんが開発 • リソース指向のフレームワーク • phpnw で講演 • Litinum 作者も注目
  36. 36. Ginq (c) 2013 Masashi Shinbara @shin1x1 https://github.com/akanehara/ginq
  37. 37. Ginq (c) 2013 Masashi Shinbara @shin1x1 • @a.kanehara さんが開発 • LINQ to Object を PHP に • メソッドチェインで配列操作 • 遅延実行
  38. 38. 注目のキーワード (c) 2013 Masashi Shinbara @shin1x1 • PhpStorm • Composer • PSR • Vagrant
  39. 39. (c) 2013 Masashi Shinbara @shin1x1 まとめ
  40. 40. まとめ (c) 2013 Masashi Shinbara @shin1x1 • PHPでオブジェクト指向開発 • PHPらしく貪欲に成長 • どう使うかはあなた次第
  41. 41. @shin1x1 (c) 2013 Masashi Shinbara @shin1x1

×