phpコアから読み解くphp5.5

83
1 ヤフー株式会社 蒋池 東龍 (こもいけ とうりゅう) PHPコアから読み解く PHP5.5

Upload: yahoo

Post on 13-Dec-2014

2.830 views

Category:

Software


4 download

DESCRIPTION

PHPカンファレンス2014にて発表した内容です。

TRANSCRIPT

Page 1: PHPコアから読み解くPHP5.5

1

ヤフー株式会社

蒋池 東龍

(こもいけ とうりゅう)

PHPコアから読み解く PHP5.5

Page 2: PHPコアから読み解くPHP5.5

2

レジュメ

• 最初に(1分)

• PHPコアとは?(3分)

• PHP5.5の主な新機能や変更点(2分)

• yield のコスト(10分)

• boolval() の可否(8分)

• zend_execute の実体化(5分)

• 終わりに(1分)

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 3: PHPコアから読み解くPHP5.5

3 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

最初に

Page 4: PHPコアから読み解くPHP5.5

4

最初に

PHP5.5 以上を使っていますか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 5: PHPコアから読み解くPHP5.5

5

最初に

PHPコア という言葉を

聞いたことがありますか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 6: PHPコアから読み解くPHP5.5

6

最初に

Zend Engine という言葉を

聞いたことがありますか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 7: PHPコアから読み解くPHP5.5

7 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

PHPコアとは?

Page 8: PHPコアから読み解くPHP5.5

8

PHPコアとは?

PHPコアは

PHPの内部システムで

C言語によって

記述されています

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 9: PHPコアから読み解くPHP5.5

9

PHPコアとは?

PHPコアの

言語エンジンは

Zend Engine

と呼ばれています

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 10: PHPコアから読み解くPHP5.5

10

PHPコアとは?

Zend Engine は

PHPスクリプトを

字句解析・構文解析して

オペコードと呼ばれる

命令を作り出して実行します

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 11: PHPコアから読み解くPHP5.5

11

PHPコアとは?

OS

Apache

Apacheモジュール

PHPフレームワーク

zendライブラリ

phpライブラリ

モジュール スクリプト

PHPコア

php_* ライブラリ

zend_* ライブラリ

Zend Engine

字句解析 構文解析 実行

オペコード

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 12: PHPコアから読み解くPHP5.5

12

PHPコアとは?

PHPコアを知れば

PHPがどのように

動いているのか

理解できます

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 13: PHPコアから読み解くPHP5.5

13 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

PHP5.5の主な新機能や変更点

Page 14: PHPコアから読み解くPHP5.5

14

PHP5.5の主な新機能や変更点

PHP5.5の主な

新機能や変更点は

次の通りでした

(2014/8/28 に

PHP5.6 が current stable)

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 15: PHPコアから読み解くPHP5.5

15

PHP5.5の主な新機能や変更点

• ジェネレーターの追加

• finally キーワードの追加

• 新しいパスワードハッシュAPI(password_*)追加

• foreach が list() に対応

• empty() が任意の式に対応

• array リテラルと string リテラルのデリファレンス

• OPcache 拡張モジュールの追加

• array_column() 追加

• boolval() 追加

• json_last_error_msg() 追加

• zend_execute() オーバーライド不可

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 16: PHPコアから読み解くPHP5.5

16

PHP5.5の主な新機能や変更点

• ジェネレーターの追加 ← 新構文

• finally キーワードの追加

• 新しいパスワードハッシュAPI(password_*)追加

• foreach が list() に対応

• empty() が任意の式に対応

• array リテラルと string リテラルのデリファレンス

• OPcache 拡張モジュールの追加

• array_column() 追加

• boolval() 追加 ← 新関数

• json_last_error_msg() 追加

• zend_execute() オーバーライド不可 ← 内部変更点

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 17: PHPコアから読み解くPHP5.5

17

PHP5.5の主な新機能や変更点

赤字の項目について

利用の是非や注意点を

PHPコアの観点から

ご紹介します!

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 18: PHPコアから読み解くPHP5.5

18 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

yield のコスト

Page 19: PHPコアから読み解くPHP5.5

19

yield のコスト

yield を使っている方はいますか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 20: PHPコアから読み解くPHP5.5

20

yield のコスト

yield は簡単に

イテレータを

実装できる機能です

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 21: PHPコアから読み解くPHP5.5

21

yield のコスト

イテレータは

データの要素に

アクセスするための

仕組みです

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 22: PHPコアから読み解くPHP5.5

22

yield のコスト

3つのファイルに

それぞれ別の処理を行う

スクリプトを例にとって

みてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 23: PHPコアから読み解くPHP5.5

23

yield のコスト

yield を使わないスクリプト

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 24: PHPコアから読み解くPHP5.5

24

yield のコスト

$file = fopen('./sample1.txt', 'r');

while(false !== ($line = fgets($file) ) ){

$line = trim($line);

$text = $tmp . $line . "¥n";

echo($text); $tmp = $line;

}

fclose($file);

現在の行に前の行を

加えて表示 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 25: PHPコアから読み解くPHP5.5

25

yield のコスト

$file = fopen('./sample2.txt', 'r');

while(false !== ($line = fgets($file) ) ){

$line = trim($line);

$text = strtoupper($line) . "¥n";

echo($text);

}

fclose($file);

現在の行を

大文字にして表示

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 26: PHPコアから読み解くPHP5.5

26

yield のコスト

$file = fopen('./sample3.txt', 'r');

while(false !== ($line = fgets($file) ) ){

$line = trim($line);

$text = $line . ':' . md5($line) . "¥n";

echo($text);

}

fclose($file);

現在の行と

md5 を表示

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 27: PHPコアから読み解くPHP5.5

27

yield のコスト

ファイルをオープンして

1行ずつ読み込み

ファイルをクローズする

処理を毎回行っています

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 28: PHPコアから読み解くPHP5.5

28

yield のコスト

yield を使ったスクリプト

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 29: PHPコアから読み解くPHP5.5

29

yield のコスト

function file_lines($_filename){

$file = fopen($_filename, 'r');

while(false !== ($line = fgets($file) ) ){

$line = trim($line);

yield $line;

}

fclose($file);

}

ファイルをオープンして

1行ずつ読み込み

ファイルをクローズ Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 30: PHPコアから読み解くPHP5.5

30

yield のコスト

foreach(file_lines('./sample1.txt') as $line){

$text = $tmp . $line . "¥n";

echo($text);

$tmp = $line;

} 現在の行に前の行を

加えて表示

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 31: PHPコアから読み解くPHP5.5

31

yield のコスト

foreach(file_lines('./sample2.txt') as $line){

$text = strtoupper($line) . "¥n";

echo($text);

}

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

現在の行を

大文字にして表示

Page 32: PHPコアから読み解くPHP5.5

32

yield のコスト

foreach(file_lines('./sample3.txt') as $line){

$text = $line . ':' . md5($line) . "¥n";

echo($text);

} 現在の行と

md5 を表示

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 33: PHPコアから読み解くPHP5.5

33

yield のコスト

yield を使えば

共通するイテレーション処理を

1度定義するだけでよいです

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 34: PHPコアから読み解くPHP5.5

34

yield のコスト

yield を使わない

スクリプトの

オペコードを

確認してみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 35: PHPコアから読み解くPHP5.5

35

yield のコスト

0 SEND_VAL

1 SEND_VAL

2 DO_FCALL

3 ASSIGN

4 SEND_VAR

5 DO_FCALL

6 ASSIGN

7 IS_NOT_IDENTICAL

8 JMPZ

9 SEND_VAR

10 DO_FCALL

11 ASSIGN

12 CONCAT

13 CONCAT

14 ASSIGN

15 ECHO

16 ASSIGN

17 JMP

18 SEND_VAR

19 DO_FCALL

……

60 RETURN

オペコードは

60個

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 36: PHPコアから読み解くPHP5.5

36

yield のコスト

yield を使った

スクリプトの

オペコードを

確認してみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 37: PHPコアから読み解くPHP5.5

37

yield のコスト

0 RECV

1 SEND_VAR

2 SEND_VAL

3 DO_FCALL

4 ASSIGN

5 SEND_VAR

6 DO_FCALL

7 ASSIGN

8 IS_NOT_IDENTICAL

9 JMPZ

10 SEND_VAR

11 DO_FCALL

12 ASSIGN

13 YIELD

14 JMP

15 SEND_VAR

16 DO_FCALL

17 GENERATOR_RETURN

関数の

オペコードは

17個

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 38: PHPコアから読み解くPHP5.5

38

yield のコスト

0 INIT_FCALL_BY_NAME

1 SEND_VAL

2 DO_FCALL_BY_NAME

3 FE_RESET

4 FE_FETCH

5 OP_DATA

6 ASSIGN

7 CONCAT

8 CONCAT

9 ASSIGN

10 ECHO

11 ASSIGN

12 JMP

13 SWITCH_FREE

……

44 NOP

45 RETURN

メイン処理の

オペコードは45個

全部で62個 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 39: PHPコアから読み解くPHP5.5

39

yield のコスト

yield を使ったスクリプトと

使わないスクリプトの

処理速度を比べてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 40: PHPコアから読み解くPHP5.5

40

yield のコスト

……と、その前に

どちらの方が早いと

思いますか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 41: PHPコアから読み解くPHP5.5

41

yield のコスト

yield を使うスクリプト

0.0034639835357666 usec

yield を使わないスクリプト

0.004425048828125 usec

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 42: PHPコアから読み解くPHP5.5

42

yield のコスト

yield を使うと……

• コードがすっきりする

• 処理が速くなる (遅くならない)

• オペコードは短くならない (共通部分に依存する)

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 43: PHPコアから読み解くPHP5.5

43

yield のコスト

簡単にイテレータを

実装できるので

積極的に使いましょう!

結論

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 44: PHPコアから読み解くPHP5.5

44 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

boolval() の可否

Page 45: PHPコアから読み解くPHP5.5

45

boolval() の可否

boolval() を使っている方はいますか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 46: PHPコアから読み解くPHP5.5

46

boolval() の可否

boolval() は

boolean として

値を取得できる

関数です

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 47: PHPコアから読み解くPHP5.5

47

boolval() の可否

値の型を変換する

cast と

同じ機能です

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 48: PHPコアから読み解くPHP5.5

48

boolval() の可否

様々な型の値を

変換するスクリプトを

例にとってみてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 49: PHPコアから読み解くPHP5.5

49

boolval() の可否

cast を使ったスクリプト

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 50: PHPコアから読み解くPHP5.5

$max = 1000; $arr = array('aaa', 'bbb' , 'ccc'); class A{}; $ca = new A(); for($i = 0; $i < $max; $i++){ $ret = (bool)(1000); $ret = (bool)('abc'); $ret = (bool)($arr); $ret = (bool)($ca); }

50

boolval() の可否

色々な値を

cast

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 51: PHPコアから読み解くPHP5.5

51

boolval() の可否

boolval() を使ったスクリプト

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 52: PHPコアから読み解くPHP5.5

$max = 1000; $arr = array('aaa', 'bbb' , 'ccc'); class A{}; $ca = new A(); for($i = 0; $i < $max; $i++){ $ret = boolval(1000); $ret = boolval('abc'); $ret = boolval($arr); $ret = boolval($ca); }

52

boolval() の可否

色々な値を

boolval()

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 53: PHPコアから読み解くPHP5.5

53

boolval() の可否

cast を使った

スクリプトの

オペコードを

みてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 54: PHPコアから読み解くPHP5.5

54

boolval() の可否

……

16 CAST

17 ASSIGN

18 CAST

19 ASSIGN

20 CAST

21 ASSIGN

22 CAST

23 ASSIGN

24 JMP

25 RETURN

オペコードは

25個

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 55: PHPコアから読み解くPHP5.5

55

boolval() の可否

boolval() を

使ったスクリプトの

オペコードを

みてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 56: PHPコアから読み解くPHP5.5

56

boolval() の可否

……

16 SEND_VAL

17 DO_FCALL

18 ASSIGN

19 SEND_VAL

20 DO_FCALL

21 ASSIGN

22 SEND_VAR

23 DO_FCALL

24 ASSIGN

25 SEND_VAR

26 DO_FCALL

27 ASSIGN

28 JMP

29 RETURN

オペコードは

29個

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 57: PHPコアから読み解くPHP5.5

57

boolval() の可否

cast を使ったスクリプトと

boolval() を使ったスクリプトの

処理速度を比べてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 58: PHPコアから読み解くPHP5.5

58

boolval() の可否

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

……と、その前に

どちらの方が早いと

思いますか?

Page 59: PHPコアから読み解くPHP5.5

59

boolval() の可否

boolval() を使ったスクリプト

0.0013551712036133 usec

cast を使ったスクリプト

0.0006558895111084 usec

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 60: PHPコアから読み解くPHP5.5

60

boolval() の可否

boolval() を使うと……

• コールバックとして渡せる

• 処理が遅くなる

• オペコードが多くなる

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 61: PHPコアから読み解くPHP5.5

61

boolval() の可否

できる限り

cast を使いましょう!

結論

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 62: PHPコアから読み解くPHP5.5

62 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

zend_execute の実体化

Page 63: PHPコアから読み解くPHP5.5

63

zend_execute の実体化

execute 系関数は

オペコードを実行する

非常に重要な関数です

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 64: PHPコアから読み解くPHP5.5

64

zend_execute の実体化

実行処理を

オーバーライドする時に

熟知が必要です

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 65: PHPコアから読み解くPHP5.5

65

zend_execute の実体化

PHP5.5 以前と以後では

扱い方が異なるので

みてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 66: PHPコアから読み解くPHP5.5

66

zend_execute の実体化

PHP5.5 以前

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 67: PHPコアから読み解くPHP5.5

// execute は関数 ZEND_API void execute( zend_op_array *op_array TSRMLS_DC); // zend_execute は関数ポインタ ZEND_API void (*zend_execute)( zend_op_array *op_array TSRMLS_DC);

67

zend_execute の実体化

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 68: PHPコアから読み解くPHP5.5

// zend_execute に execute を代入 zend_execute = execute; // zend_execute を実行 zend_execute(...);

68

zend_execute の実体化

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 69: PHPコアから読み解くPHP5.5

69

zend_execute の実体化

PHP5.5 以後

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 70: PHPコアから読み解くPHP5.5

// execute_ex は関数 ZEND_API void execute_ex( zend_execute_data *execute_data TSRMLS_DC) // zend_execute_ex は関数ポインタ ZEND_API void (*zend_execute_ex)( zend_execute_data *execute_data TSRMLS_DC);

70

zend_execute の実体化

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 71: PHPコアから読み解くPHP5.5

// zend_execute_ex に execute_ex を代入 zend_execute_ex = execute_ex; // zend_execute は zend_execute_exを実行する関数 ZEND_API void zend_execute( zend_op_array *op_array TSRMLS_DC); // zend_execute を実行 zend_execute(...);

71

zend_execute の実体化

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 72: PHPコアから読み解くPHP5.5

72

zend_execute の実体化

PHP5.5 以前と以後の

execute 系関数を

比べてみましょう

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 73: PHPコアから読み解くPHP5.5

73

zend_execute の実体化

シンボル 説明 PHP5.5 以前

PHP5.5 以後

execute_ex 関数の実体 × ○

zend_execute_ex execute_ex を代入 × △

execute 関数の実体 ○ ×

zend_execute PHP5.5 以前と 以後で存在するが 扱いは異なる

△ ○

○:関数 △:関数ポインタ ×:なし

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 74: PHPコアから読み解くPHP5.5

74

zend_execute の実体化

役割 PHP5.5 以前 PHP5.5 以後

実行関数 execute execute_ex

関数ポインタ zend_execute zend_execute_ex

ラッパー関数 - zend_execute

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

内部的な _ex 系関数に移行したが

zend_execute は健在

Page 75: PHPコアから読み解くPHP5.5

75

zend_execute の実体化

zend_execute()

(*zend_execute_ex)() = execute_ex()

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 76: PHPコアから読み解くPHP5.5

76

zend_execute の実体化

実行処理を

オーバーライド

したければ……

• zend_execute_ex に 関数のポインタを代入する

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 77: PHPコアから読み解くPHP5.5

77

zend_execute の実体化

execute 系関数の

取り扱いに

気を付けましょう!

結論

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 78: PHPコアから読み解くPHP5.5

78 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

終わりに

Page 79: PHPコアから読み解くPHP5.5

79

終わりに

構文や関数について

新しい気付きや興味は

得られましたか?

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 80: PHPコアから読み解くPHP5.5

80

終わりに

PHP に対する

理解が深まるので

PHPコアについて

是非興味をもってください!

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 81: PHPコアから読み解くPHP5.5

81

ありがとうございました

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 82: PHPコアから読み解くPHP5.5

82

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Page 83: PHPコアから読み解くPHP5.5

83 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Yahoo! JAPANブースにお立ち寄りください

アンケートにご回答いただいた方に

Yahoo! JAPANオリジナルグッズを

差し上げています