SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
2013/09/28 shin1x1
関西PHP勉強会 in 京セラドーム
いまどきのPHP
昔のPHP
(c) 2013 Masashi Shinbara @shin1x1
• HTMLとPHPの混在
• <body>タグの中にロジック
• どこからでもDB接続
• 重複しまくりコード
• とびかうグローバル変数....
昔のPHP
(c) 2013 Masashi Shinbara @shin1x1
HTMLとPHPが
混在したコード
Agenda
(c) 2013 Masashi Shinbara @shin1x1
• オブジェクト指向機能
• オブジェクト指向の活用
• 最近のトピック
(c) 2013 Masashi Shinbara @shin1x1
オブジェクト指向機能
オブジェクト指向言語
(c) 2013 Masashi Shinbara @shin1x1
• 隠蔽(カプセル化)
• 継承(インヘリタンス)
• 多態性(ポリモフィズム)
隠蔽(カプセル化)
(c) 2013 Masashi Shinbara @shin1x1
• アクセス修飾子
<?php
class Foo
{
public $public = 'public';
protected $protected = 'protected';
private $private = 'private';
}
public どこからでもアクセス可能
protected 定義したクラス、継承したクラス
private 定義したクラスのみ
隠蔽(カプセル化)
(c) 2013 Masashi Shinbara @shin1x1
<?php
class Foo
{
public function public_method()
{
// どこからでも実行可
}
protected function protected_method()
{
// Fooクラスとその継承クラス
}
private function private_method()
{
// Fooクラスのみ
}
}
継承
(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
• 単一継承のみ
継承
多態性(ポリモフィズム)
(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';
}
}
多態性(ポリモフィズム)
(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
クラスメソッド、定数、変数
(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();
コンストラクタ、デストラクタ
(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
コンストラクタ
デストラクタ
抽象クラス、メソッド
(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
抽象クラス
(インスタンス化不可)
具象クラス
final
(c) 2013 Masashi Shinbara @shin1x1
<?php
final class NoInheritance
{
}
class Foo
{
final public function noInheritanceMethod()
{
//
}
}
継承できない
オーバーライドできない
インターフェイス
(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)
{
//
}
}
複数実装可
タイプヒンティング
(c) 2013 Masashi Shinbara @shin1x1
<?php
interface Printable {}
interface Writable {}
class Foo
{
public function bar(Printable $printer, Writable $writer)
{
//
}
public function something(array $array)
{
//
}
}
タイプヒンティング
タイプヒンティング
タイプヒンティング
名前空間
(c) 2013 Masashi Shinbara @shin1x1
<?php
namespace Vendorlib;
use AwsS3S3Client;
class Foo
{
public function method()
{
throw new Exception();
}
}
名前空間の宣言
名前空間のインポート
グローバル
VendorlibFoo
トレイト
(c) 2013 Masashi Shinbara @shin1x1
• Mixin のようなもの
• 変数やメソッドをまとめたもの
• クラスに追加して利用
• 複数個追加できる
トレイト
(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();
トレイト
トレイトの利用
PHPのオブジェクト指向機能
(c) 2013 Masashi Shinbara @shin1x1
詳しくは
(c) 2013 Masashi Shinbara @shin1x1
http://jp1.php.net/manual/ja/language.oop5.php
(c) 2013 Masashi Shinbara @shin1x1
オブジェクト指向
の活用
フレームワーク
(c) 2013 Masashi Shinbara @shin1x1
• フレームワークの利用
• オブジェクト指向
• MVC
• デファクトスタンダードは無い
フレームワーク
(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
Symfony
(c) 2013 Masashi Shinbara @shin1x1
• コンポーネントで構成
• コンポーネントは独立して利用可
• 他のフレームワークやライブラリで
• 部品としての品質も高い
• Zend Frameworkも
PHPUnit
(c) 2013 Masashi Shinbara @shin1x1
http://phpunit.de/manual/3.7/ja/
PHPUnit
(c) 2013 Masashi Shinbara @shin1x1
• xUnit の PHP 実装
• テストダブルやSelenium連携など
• フレームワークやライブラリのテスト
PhpStorm
(c) 2013 Masashi Shinbara @shin1x1
http://www.jetbrains.com/phpstorm/
PhpStorm
(c) 2013 Masashi Shinbara @shin1x1
• JetBRAINS社のIDE
• 補完機能が強力
• オブジェクト指向に則れば恩恵大
• いま注目のIDE
(c) 2013 Masashi Shinbara @shin1x1
最近のトピック
PHP 5.5 リリース
(c) 2013 Masashi Shinbara @shin1x1
• 2013/06 リリース
• ジェネレータ
• OPcache
• パスワードハッシュ関数
PHP 5.3 が EOL
(c) 2013 Masashi Shinbara @shin1x1
• 5.3.27 が最後のリリース
• セキュリティフィックスのみ
• 2014/06 頃に終了
• 今後は、5.4 or 5.5 を利用
BEAR.Sunday
(c) 2013 Masashi Shinbara @shin1x1
https://code.google.com/p/bearsunday/
BEAR.Sunday
(c) 2013 Masashi Shinbara @shin1x1
• @koriym さんが開発
• リソース指向のフレームワーク
• phpnw で講演
• Litinum 作者も注目
Ginq
(c) 2013 Masashi Shinbara @shin1x1
https://github.com/akanehara/ginq
Ginq
(c) 2013 Masashi Shinbara @shin1x1
• @a.kanehara さんが開発
• LINQ to Object を PHP に
• メソッドチェインで配列操作
• 遅延実行
注目のキーワード
(c) 2013 Masashi Shinbara @shin1x1
• PhpStorm
• Composer
• PSR
• Vagrant
(c) 2013 Masashi Shinbara @shin1x1
まとめ
まとめ
(c) 2013 Masashi Shinbara @shin1x1
• PHPでオブジェクト指向開発
• PHPらしく貪欲に成長
• どう使うかはあなた次第
@shin1x1
(c) 2013 Masashi Shinbara @shin1x1

Contenu connexe

Tendances

Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようMasashi Shinbara
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Masashi Shinbara
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るMasashi Shinbara
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 
How Smalltalker Works
How Smalltalker WorksHow Smalltalker Works
How Smalltalker WorksSho Yoshida
 
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜Naohiro Yoshida
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたNarami Kiyokura
 
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Sugawara Genki
 
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こうSphinxでドキュメントを書こう
Sphinxでドキュメントを書こうKazufumi Ohkawa
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_codeSugawara Genki
 
AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義するSugawara Genki
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 
Machine learning CI/CD with OSS
Machine learning CI/CD with OSSMachine learning CI/CD with OSS
Machine learning CI/CD with OSSyusuke shibui
 
DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴Sugawara Genki
 
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonserverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonmasahitojp
 
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Sugawara Genki
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbNaotoshi Seo
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoy_taka_23
 

Tendances (20)

Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
Shizupptx
ShizupptxShizupptx
Shizupptx
 
How Smalltalker Works
How Smalltalker WorksHow Smalltalker Works
How Smalltalker Works
 
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
 
Sphinxでドキュメントを書こう
Sphinxでドキュメントを書こうSphinxでドキュメントを書こう
Sphinxでドキュメントを書こう
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
Shelly
ShellyShelly
Shelly
 
AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
Machine learning CI/CD with OSS
Machine learning CI/CD with OSSMachine learning CI/CD with OSS
Machine learning CI/CD with OSS
 
DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴
 
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonserverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
 
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdb
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
 

En vedette

ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDockerMasashi Shinbara
 
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門Masashi Shinbara
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境Masashi Shinbara
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!Masashi Shinbara
 
AWS初心者向けWebinar AWSクラウドでのWindowsの実行
AWS初心者向けWebinar AWSクラウドでのWindowsの実行AWS初心者向けWebinar AWSクラウドでのWindowsの実行
AWS初心者向けWebinar AWSクラウドでのWindowsの実行Amazon Web Services Japan
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話infinite_loop
 
大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果まで大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果までKoji Ishimoto
 
AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】
AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】
AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】SearchMan.com
 
AWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンス
AWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンスAWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンス
AWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンスAmazon Web Services Japan
 
AWS 初級トレーニング (Windows Server 2012編)
AWS 初級トレーニング (Windows Server 2012編)AWS 初級トレーニング (Windows Server 2012編)
AWS 初級トレーニング (Windows Server 2012編)Amazon Web Services Japan
 
コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02
コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02
コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02INFOBAHN.inc(株式会社インフォバーン)
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru Tanaka
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-Masashi Shinbara
 
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-Amazon Web Services Japan
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
それPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudyそれPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudy晃 遠山
 

En vedette (20)

ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
 
Composer 再入門
Composer 再入門Composer 再入門
Composer 再入門
 
AWS初心者向けWebinar AWSクラウドでのWindowsの実行
AWS初心者向けWebinar AWSクラウドでのWindowsの実行AWS初心者向けWebinar AWSクラウドでのWindowsの実行
AWS初心者向けWebinar AWSクラウドでのWindowsの実行
 
コンテンツマーケティングを成功に導くユーザー中心発想のススメ
コンテンツマーケティングを成功に導くユーザー中心発想のススメコンテンツマーケティングを成功に導くユーザー中心発想のススメ
コンテンツマーケティングを成功に導くユーザー中心発想のススメ
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果まで大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果まで
 
AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】
AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】
AppStore SEOでダウンロードを増やす方法(初級者編)【2012/9/1改訂 含Chomp対策】
 
AWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンス
AWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンスAWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンス
AWS Blackbelt 2015シリーズ Amazon EC2 Windows インスタンス
 
AWS 初級トレーニング (Windows Server 2012編)
AWS 初級トレーニング (Windows Server 2012編)AWS 初級トレーニング (Windows Server 2012編)
AWS 初級トレーニング (Windows Server 2012編)
 
コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02
コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02
コンテンツマーケティングの正しい活用方法 心を動かすオウンドメディアのつくり方 Ver.02
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
SEOに効くコンテンツの作り方 ver1.1
SEOに効くコンテンツの作り方 ver1.1SEOに効くコンテンツの作り方 ver1.1
SEOに効くコンテンツの作り方 ver1.1
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
それPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudyそれPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudy
 
カヤックコピー部のコピー講座
カヤックコピー部のコピー講座カヤックコピー部のコピー講座
カヤックコピー部のコピー講座
 

Similaire à いまどきのPHP

Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional ProgrammingTomoharu ASAMI
 
初心者向けGo言語勉強会
初心者向けGo言語勉強会初心者向けGo言語勉強会
初心者向けGo言語勉強会leverages_event
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~decode2016
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and designTomoharu ASAMI
 
徹底攻略!PHP5.4
徹底攻略!PHP5.4徹底攻略!PHP5.4
徹底攻略!PHP5.4Takuya Sato
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptterurou
 
意図を表現するプログラミング
意図を表現するプログラミング意図を表現するプログラミング
意図を表現するプログラミングAtsuhiro Kubo
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017Rui Hirokawa
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門Atsushi Tadokoro
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するkwatch
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会Yuji Otani
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 

Similaire à いまどきのPHP (20)

Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
 
Sphinx/reST
Sphinx/reSTSphinx/reST
Sphinx/reST
 
初心者向けGo言語勉強会
初心者向けGo言語勉強会初心者向けGo言語勉強会
初心者向けGo言語勉強会
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
徹底攻略!PHP5.4
徹底攻略!PHP5.4徹底攻略!PHP5.4
徹底攻略!PHP5.4
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
 
意図を表現するプログラミング
意図を表現するプログラミング意図を表現するプログラミング
意図を表現するプログラミング
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
 
Php5 4勉強会
Php5 4勉強会Php5 4勉強会
Php5 4勉強会
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
Connect with Data API
Connect with Data APIConnect with Data API
Connect with Data API
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 

Plus de Masashi Shinbara

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライドMasashi Shinbara
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Masashi Shinbara
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2Masashi Shinbara
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPressMasashi Shinbara
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Masashi Shinbara
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築Masashi Shinbara
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationMasashi Shinbara
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーションMasashi Shinbara
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使うMasashi Shinbara
 
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告 Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告 Masashi Shinbara
 
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP10分で分かる最近のCakePHP
10分で分かる最近のCakePHPMasashi Shinbara
 

Plus de Masashi Shinbara (13)

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライド
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
 
PHP 5.5 Zend OPcache
PHP 5.5 Zend OPcachePHP 5.5 Zend OPcache
PHP 5.5 Zend OPcache
 
サーバの防災訓練
サーバの防災訓練サーバの防災訓練
サーバの防災訓練
 
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告 Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告
 
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP10分で分かる最近のCakePHP
10分で分かる最近のCakePHP
 

Dernier

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Dernier (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

いまどきのPHP

  • 2. 昔のPHP (c) 2013 Masashi Shinbara @shin1x1 • HTMLとPHPの混在 • <body>タグの中にロジック • どこからでもDB接続 • 重複しまくりコード • とびかうグローバル変数....
  • 3. 昔のPHP (c) 2013 Masashi Shinbara @shin1x1 HTMLとPHPが 混在したコード
  • 4. Agenda (c) 2013 Masashi Shinbara @shin1x1 • オブジェクト指向機能 • オブジェクト指向の活用 • 最近のトピック
  • 5. (c) 2013 Masashi Shinbara @shin1x1 オブジェクト指向機能
  • 6. オブジェクト指向言語 (c) 2013 Masashi Shinbara @shin1x1 • 隠蔽(カプセル化) • 継承(インヘリタンス) • 多態性(ポリモフィズム)
  • 7. 隠蔽(カプセル化) (c) 2013 Masashi Shinbara @shin1x1 • アクセス修飾子 <?php class Foo { public $public = 'public'; protected $protected = 'protected'; private $private = 'private'; } public どこからでもアクセス可能 protected 定義したクラス、継承したクラス private 定義したクラスのみ
  • 8. 隠蔽(カプセル化) (c) 2013 Masashi Shinbara @shin1x1 <?php class Foo { public function public_method() { // どこからでも実行可 } protected function protected_method() { // Fooクラスとその継承クラス } private function private_method() { // Fooクラスのみ } }
  • 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. 多態性(ポリモフィズム) (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. 多態性(ポリモフィズム) (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. クラスメソッド、定数、変数 (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. コンストラクタ、デストラクタ (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. 抽象クラス、メソッド (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. final (c) 2013 Masashi Shinbara @shin1x1 <?php final class NoInheritance { } class Foo { final public function noInheritanceMethod() { // } } 継承できない オーバーライドできない
  • 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. タイプヒンティング (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. 名前空間 (c) 2013 Masashi Shinbara @shin1x1 <?php namespace Vendorlib; use AwsS3S3Client; class Foo { public function method() { throw new Exception(); } } 名前空間の宣言 名前空間のインポート グローバル VendorlibFoo
  • 19. トレイト (c) 2013 Masashi Shinbara @shin1x1 • Mixin のようなもの • 変数やメソッドをまとめたもの • クラスに追加して利用 • 複数個追加できる
  • 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(); トレイト トレイトの利用
  • 22. 詳しくは (c) 2013 Masashi Shinbara @shin1x1 http://jp1.php.net/manual/ja/language.oop5.php
  • 23. (c) 2013 Masashi Shinbara @shin1x1 オブジェクト指向 の活用
  • 24. フレームワーク (c) 2013 Masashi Shinbara @shin1x1 • フレームワークの利用 • オブジェクト指向 • MVC • デファクトスタンダードは無い
  • 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. Symfony (c) 2013 Masashi Shinbara @shin1x1 • コンポーネントで構成 • コンポーネントは独立して利用可 • 他のフレームワークやライブラリで • 部品としての品質も高い • Zend Frameworkも
  • 27. PHPUnit (c) 2013 Masashi Shinbara @shin1x1 http://phpunit.de/manual/3.7/ja/
  • 28. PHPUnit (c) 2013 Masashi Shinbara @shin1x1 • xUnit の PHP 実装 • テストダブルやSelenium連携など • フレームワークやライブラリのテスト
  • 29. PhpStorm (c) 2013 Masashi Shinbara @shin1x1 http://www.jetbrains.com/phpstorm/
  • 30. PhpStorm (c) 2013 Masashi Shinbara @shin1x1 • JetBRAINS社のIDE • 補完機能が強力 • オブジェクト指向に則れば恩恵大 • いま注目のIDE
  • 31. (c) 2013 Masashi Shinbara @shin1x1 最近のトピック
  • 32. PHP 5.5 リリース (c) 2013 Masashi Shinbara @shin1x1 • 2013/06 リリース • ジェネレータ • OPcache • パスワードハッシュ関数
  • 33. PHP 5.3 が EOL (c) 2013 Masashi Shinbara @shin1x1 • 5.3.27 が最後のリリース • セキュリティフィックスのみ • 2014/06 頃に終了 • 今後は、5.4 or 5.5 を利用
  • 34. BEAR.Sunday (c) 2013 Masashi Shinbara @shin1x1 https://code.google.com/p/bearsunday/
  • 35. BEAR.Sunday (c) 2013 Masashi Shinbara @shin1x1 • @koriym さんが開発 • リソース指向のフレームワーク • phpnw で講演 • Litinum 作者も注目
  • 36. Ginq (c) 2013 Masashi Shinbara @shin1x1 https://github.com/akanehara/ginq
  • 37. Ginq (c) 2013 Masashi Shinbara @shin1x1 • @a.kanehara さんが開発 • LINQ to Object を PHP に • メソッドチェインで配列操作 • 遅延実行
  • 38. 注目のキーワード (c) 2013 Masashi Shinbara @shin1x1 • PhpStorm • Composer • PSR • Vagrant
  • 39. (c) 2013 Masashi Shinbara @shin1x1 まとめ
  • 40. まとめ (c) 2013 Masashi Shinbara @shin1x1 • PHPでオブジェクト指向開発 • PHPらしく貪欲に成長 • どう使うかはあなた次第
  • 41. @shin1x1 (c) 2013 Masashi Shinbara @shin1x1