Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
pecl-AOPの紹介 | PPTX
Recommended
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PDF
PDF
PDF
PDF
PDF
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
PDF
effective modern c++ chapeter36
PPTX
PPT
PPT
PPTX
Javascript with Generative Art
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
Python で munin plugin を書いてみる
PDF
Effective Modern C++ 読書会 Item 35
PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
ちょっと詳しくJavaScript 特別編【悪霊の神々】
PPT
PDF
Swift 2.0 の Error Handling #yhios
PDF
PHP language update 201211
PDF
PDF
PPTX
PPTX
More Related Content
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PDF
PDF
PDF
PDF
PDF
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
PDF
effective modern c++ chapeter36
What's hot
PPTX
PPT
PPT
PPTX
Javascript with Generative Art
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
Python で munin plugin を書いてみる
PDF
Effective Modern C++ 読書会 Item 35
PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
ちょっと詳しくJavaScript 特別編【悪霊の神々】
PPT
PDF
Swift 2.0 の Error Handling #yhios
PDF
PHP language update 201211
PDF
PDF
Viewers also liked
PPTX
PPTX
KEY
PDF
PDF
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
PDF
PDF
PDF
composerの遅さをまじめに考える #phpstudy
PDF
PSR-3 Logger Interfaceの紹介
PDF
Scrutinizer CIでPHPも静的解析 #phpstudy
PDF
PDF
PDF
開発者を支える生産性向上チームの取り組み -CI, Browser Test, Tools and Infrastructure-
PDF
WordCamp Kansai 2015 CI ハンズオン
PDF
PDF
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
PDF
Similar to pecl-AOPの紹介
KEY
EC-CUBE + PHPUnit で 実践テスト駆動開発
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
PDF
PDF
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
PPTX
Php development efficiency improvement
PDF
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PDF
PDF
KEY
PDF
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
PDF
PDF
PDF
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
PDF
PDF
Object-oriented Programming / Exception handling
PDF
PDF
PPT
PDF
PDF
Recently uploaded
PDF
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
PDF
第25回FA設備技術勉強会_自宅で勉強するROS・フィジカルAIアイテム.pdf
PDF
visionOS TC「新しいマイホームで過ごすApple Vision Proとの新生活」
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):東京大学情報基盤センター テーマ1/2/3「Society5.0の実現を目指す『計算・データ・学習...
PDF
安価な ロジック・アナライザを アナライズ(?),Analyze report of some cheap logic analyzers
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):株式会社アルゴグラフィックス テーマ1「ARGO北見テクノセンターのご紹介」
PPTX
pecl-AOPの紹介 1. 2. 4. 5. 6. try {
doSomething();
//…
} catch (OutOfBoundsException $e) {
recoverError($e);
} catch (RangeException $e) {
recoverError($e);
}
例外処理
7. class A {
よくある光景
function a() {
try {
doSomething();
//…
} catch (RuntimeException $e) {
processError($e);
}
}
function b() {
try {
doSomething();
//…
} catch (RuntimeException $e) {
processError($e);
}
}
function c() {
try {
doSomething();
//…
} catch (RuntimeException $e) {
processError($e);
}
}
}
8. 例外処理の問題
いくらエラーの回復処理を関数化しても、
try ~ catchブロック自体は何度も書く
ことに
DRY(Don't Repeat Yourself)じゃない
「これ、さっきも書いたコードだな…」
9. クラス分割や関数分割だけだとうまくモ
ジュール化できないもの
横断的関心事=Aspect
10. こういうパターンが多い
function a() {
try {
doSomething();
//…
} catch (RuntimeException $e) {
processError($e);
}
}
こう分割できたらいいのに…
try { function a() {
//… doSomething();
} catch (RuntimeException $e) { //…
processError($e); }
}
12. 13. AOP用語(pecl-AOPの場合)
Advice
Aspectをモジュール化したもの。pecl-AOP
ではコールバック関数で実装
Joinpoint
Adviceを織り込める場所。
weave
AdviceをJoinpointに差し込むこと。
14. 15. 16. class A {
function a() {
try {
doSomething();
//…
} catch (RuntimeException $e) {
processError($e);
}
}
function b() {
try {
doSomething();
//…
} catch (RuntimeException $e) {
processError($e);
}
}
function c() {
try {
doSomething();
//…
} catch (RuntimeException $e) {
processError($e);
}
}
}
17. class A {
DRYになったね!
function a() {
doSomething();
//…
}
function b() {
doSomething();
//…
}
function c() {
doSomething();
//…
}
}
aop_add_around('A->*()', function (AopJoinpoint $joinpoint) {
try {
return $joinpoint->process();
} catch (RuntimeException $e) {
//エラー処理
}
});
18. 対応Joinpoint
before any method / function call
after any method / function call
around any method / function call
During the arousing of an exception
of any method / function
after any method / function call,
should the method terminate
normally or not (triggers an
exception or not)
19. 20. 関数キャッシュ
関数自体にキャッシュシステムを組み込む
add_aop_around('A->*()', function (AopJoinpoint $joinpoint) {
$key = $joinpoint->getClassName() . '->' . $joinpoint->getMethodName();
$cache = apc_fetch($key, $success);
if ($success) {
return $cache;
}
$result = $joinpoint->process();
apc_store($key, $result);
return $result;
});
22. 23. 24. 25. 27. pecl-AOP面白いよ
超強力 & 凶悪
テストのお供に
書きにくいコードをすっきりDRYに
PHPのゆるさが5割増しになるのが悩ま
しい
28.