PHPackages                             seikouhou/php-app-exception - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. seikouhou/php-app-exception

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

seikouhou/php-app-exception
===========================

php exception extended for application.

0.8.1(7y ago)04MITPHPPHP ~5.6

Since May 3Pushed 7y ago1 watchersCompare

[ Source](https://github.com/seikouhou/php-app-exception)[ Packagist](https://packagist.org/packages/seikouhou/php-app-exception)[ RSS](/packages/seikouhou-php-app-exception/feed)WikiDiscussions master Synced 4d ago

READMEChangelog (2)Dependencies (4)Versions (3)Used By (0)

php-app-exception
=================

[](#php-app-exception)

[![Build Status](https://camo.githubusercontent.com/9eda677926b7c0ba39dabb8c0ca86ab1d76f7695fd42239f2c2ecdf13ff90e16/68747470733a2f2f7472617669732d63692e6f72672f7365696b6f75686f752f7068702d6170702d657863657074696f6e2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/seikouhou/php-app-exception)[![codecov](https://camo.githubusercontent.com/e41a00bdc438ffd6b64f1d73b22fec50d1d121d6d4f396293521aa44d9c6a736/68747470733a2f2f636f6465636f762e696f2f67682f7365696b6f75686f752f7068702d6170702d657863657074696f6e2f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/seikouhou/php-app-exception)[![Latest Stable Version](https://camo.githubusercontent.com/2377ba3fb046492ec73947272680acc00b9251d9b424232e3ab6a0a52077c348/68747470733a2f2f706f7365722e707567782e6f72672f7365696b6f75686f752f7068702d6170702d657863657074696f6e2f762f737461626c653f666f726d61743d666c6174)](https://packagist.org/packages/seikouhou/php-app-exception)[![License](https://camo.githubusercontent.com/0e1a5b8c5bf63b1498aea5f92f9ad7b1dd6b2290f8daf3f968fd2cfb747b46d0/68747470733a2f2f706f7365722e707567782e6f72672f7365696b6f75686f752f7068702d6170702d657863657074696f6e2f6c6963656e73653f666f726d61743d666c6174)](LICENSE)

This repository is PHP exception extended for application

Overview
--------

[](#overview)

phpで例外主体のﾌﾟﾛｸﾞﾗﾐﾝｸﾞを容易にする為の例外ｾｯﾄです。

Description
-----------

[](#description)

当例外ｾｯﾄは、ﾒｿｯﾄﾞ、関数が非正常系処理結果を全て例外で返すことを容易にする為のものです。

ここでいう非正常系処理結果とは正常な処理結果以外全ての事を指します。つまり、会員名簿を読み出す関数などの場合は、会員名簿を読み出すことができた場合のみが正常処理で、その他の場合(認証ｴﾗｰが発生した、DBに障害が発生した、会員名簿が未登録だったなども)は全て非正常系の処理結果となります。

一般的な方法では、進行不能な致命的なｴﾗｰ発生時のみ例外を投げ、その他のｴﾗｰ通知は戻り値で偽を返すなどと言った方法でしたが、今回推奨する方法は、当例外ｾｯﾄを使用し、非正常系の処理結果については全て例外で返すという方法です。

このやり方のﾒﾘｯﾄとして下記のようなものがあげられます。

- ﾛｼﾞｯｸの見通しが良くなる

    全ての非正常処理はcatch節で処理する事になるので、正常処理を扱うﾒｲﾝﾛｼﾞｯｸとの分離がより明確となり、ﾛｼﾞｯｸの見通しが向上します。
- ｴﾗｰの表現力が上がる

    ｴﾗｰが例外で渡されるということは、\\Exceptionｸﾗｽが持つ、getMessageﾒｿｯﾄﾞ、getCodeﾒｿｯﾄﾞ、getFileﾒｿｯﾄﾞ、getLineﾒｿｯﾄﾞ、getTraceﾒｿｯﾄﾞ等使える事になるので、例外発生時の状況がより詳細に取得でき、ﾃﾞﾊﾞｯｸﾞ時の助けになります。 また、当例外ｾｯﾄに同梱されているphpｴｸｽﾃﾝｼｮﾝを導入する事により、例外発生時のﾛｰｶﾙｽｺｰﾌﾟの変数のｽﾅｯﾌﾟｼｮｯﾄ(ｸﾞﾛｰﾊﾞﾙｽｺｰﾌﾟのｽﾅｯﾌﾟｼｮｯﾄはphpｴｸｽﾃﾝｼｮﾝ無しでもOK)を取得する事も可能です。
- ｴﾗｰの見逃しが少なくなる

    戻り値ﾍﾞｰｽでのｴﾗｰ通知は、当然ながら戻り値を受け取ってｴﾗｰであるかどうか判定しなければなりません。 これはﾒｿｯﾄﾞ、関数の呼び出し回数が増えれば増えるほどｺｰﾄﾞのｺｽﾄとなって跳ね返ってきます。 例外ﾍﾞｰｽのｴﾗｰ通知であればcatch節でまとめて処理できるｹｰｽも増え、ｺｰﾄﾞの効率化になります。 また、戻り値のﾁｪｯｸは書き手によっては見逃されがちでもあり、例外の通知に関しては、意図的に無視しない限り見逃すことは出来ませんので、ｴﾗｰの発見に関しては優位になります。

当例外ｾｯﾄは、上記方法を容易にする為の各種機能を備えています。

Requirement
-----------

[](#requirement)

- composer
- php5.6+ (php7は未検証)
- ext-mbstring
- ext-json (phpの標準で組み込まれているはず)
- ext-dom (ｿｰｽの修正を行い、単体ﾃｽﾄをしたい場合のみ必要)
- ext-xsl (ｿｰｽの修正を行い、ﾄﾞｷｭﾒﾝﾄの更新をしたい場合のみ必要)

Installation
------------

[](#installation)

php-app-exceptionはPackagistから利用可能です。

composerを経由した導入を推奨いたします。

`composerでの導入`

```
# cd /path/to/project ← php-app-exceptionを導入したいﾌﾟﾛｼﾞｪｸﾄのﾌｫﾙﾀﾞへ移動
# composer init -q ← まだcomposerが導入されていないのなら
# composer require seikouhou/php-app-exception

```

また、例外発生時のﾛｰｶﾙｽｺｰﾌﾟの変数のｽﾅｯﾌﾟｼｮｯﾄを取得したい場合は、付属のphpｴｸｽﾃﾝｼｮﾝを導入して下さい。

`CentOS7.6での導入例`

```
# sudo yum -y --enablerepo=remi,remi-php56 install php-devel gcc ← remiの導入が必要
# cd /path/to/project/vendor/seikouhou/php-app-exception/src/extension
# phpize
# ./configure
# make
# sudo make install
# cat  /dev/null
> ; Enable app_exception extension module
> extension=app_exception.so
> EOD
# php -m | grep '_AppException'
_AppException ← これが表示されればOK

```

実際に利用するには、phpのｽｸﾘﾌﾟﾄ中でcomposerのｵｰﾄﾛｰﾀﾞｰを読み込んでご利用下さい。

```
