Recommended
PDF
PDF
PDF
PDF
PDF
effective modern c++ chapeter36
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PDF
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
PDF
PDF
ちょっと詳しくJavaScript 特別編【悪霊の神々】
PDF
PDF
PHP language update 201211
PDF
PDF
PDF
PDF
PPT
PPTX
Javascript with Generative Art
PDF
Python で munin plugin を書いてみる
PPT
PDF
PDF
PPT
PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
Swift 2.0 の Error Handling #yhios
PDF
PDF
Effective Modern C++ 読書会 Item 35
PPTX
PDF
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
PPTX
More Related Content
PDF
PDF
PDF
PDF
PDF
effective modern c++ chapeter36
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PDF
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
What's hot
PDF
PDF
ちょっと詳しくJavaScript 特別編【悪霊の神々】
PDF
PDF
PHP language update 201211
PDF
PDF
PDF
PDF
PPT
PPTX
Javascript with Generative Art
PDF
Python で munin plugin を書いてみる
PPT
PDF
PDF
PPT
PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
Swift 2.0 の Error Handling #yhios
PDF
PDF
Effective Modern C++ 読書会 Item 35
PPTX
Viewers also liked
PDF
『はじめてのフレームワークとしてのFuelPHP 改訂版(第2版)』のポイント
PPTX
PDF
PSR-3 Logger Interfaceの紹介
PDF
PDF
PDF
PDF
Scrutinizer CIでPHPも静的解析 #phpstudy
KEY
PDF
composerの遅さをまじめに考える #phpstudy
PDF
PDF
開発者を支える生産性向上チームの取り組み -CI, Browser Test, Tools and Infrastructure-
PPTX
PDF
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
PDF
PDF
WordCamp Kansai 2015 CI ハンズオン
PDF
PDF
Similar to pecl-AOPの紹介
PDF
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
PDF
PDF
PDF
Object-oriented Programming / Exception handling
PDF
PDF
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
PDF
PPT
PDF
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
PDF
PDF
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
PDF
PPTX
Php development efficiency improvement
PDF
KEY
PDF
KEY
EC-CUBE + PHPUnit で 実践テスト駆動開発
PDF
PDF
Recently uploaded
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
PDF
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
PPTX
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
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.