このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 最新のリビジョン 両方とも次のリビジョン | ||
apricot:app:top [2020/05/09 08:55] y2sunlight |
apricot:app:top [2020/05/26 16:36] y2sunlight [appフォルダ] |
||
---|---|---|---|
行 14: | 行 14: | ||
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
- | * [[apricot: | + | * [[apricot: |
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
- | * [[apricot: | + | * [[apricot: |
- | \\ | ||
まずは、apricotのアプリを作る為に以下を準備します。 | まずは、apricotのアプリを作る為に以下を準備します。 | ||
行 32: | 行 31: | ||
==== appフォルダ ==== | ==== appフォルダ ==== | ||
- | 以下に示すようにプロジェクトフォルダ下に、アプリ用のフォルダ app を作成し、その下に7つのフォルダ(Controllers, | + | 以下に示すようにプロジェクトフォルダ下に、アプリ用のフォルダ app を作成し、その下に7つのフォルダ(Controllers, |
< | < | ||
行 40: | 行 39: | ||
| | ||
| | ||
+ | | ||
+ | | ||
+ | | ||
| | ||
| | ||
行 45: | 行 47: | ||
| | ||
| | ||
- | | + | |
</ | </ | ||
行 214: | 行 216: | ||
\\ | \\ | ||
+ | ===== 例外クラス ===== | ||
+ | |||
+ | まず最初に、アプリで発生する例外を様々な例外クラスのベースとなる ApplicationException を Exceptionクラス から派生させて作ります。 | ||
+ | |||
+ | {{fa> | ||
+ | <code php ApplicationException.php> | ||
+ | <?php | ||
+ | |||
+ | namespace App\Exceptions; | ||
+ | |||
+ | use Exception; | ||
+ | |||
+ | /** | ||
+ | * アプリケーション例外 | ||
+ | */ | ||
+ | class ApplicationException extends Exception | ||
+ | { | ||
+ | /** | ||
+ | * User error message | ||
+ | * @var string | ||
+ | */ | ||
+ | private $user_message; | ||
+ | |||
+ | /** | ||
+ | * Create ApplicationException | ||
+ | * @param string $user_message | ||
+ | * @param string $internal_message | ||
+ | * @param int $code | ||
+ | * @param \Throwable $previous | ||
+ | */ | ||
+ | public function __construct(string $user_message=null, | ||
+ | { | ||
+ | $this-> | ||
+ | parent:: | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Get user error message | ||
+ | * @return string | ||
+ | */ | ||
+ | public function getUserMessage() | ||
+ | { | ||
+ | return $this-> | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * コンストラクタの引数のエラーメッセージが、ユーザ表示用( $user_message )と内部用( $internal_message )の2つがあります。 | ||
+ | * ユーザ表示用のメッセージは、'' | ||
+ | * コンストラクタ内で使用されているボイラープレート '' | ||
+ | |||
+ | 次に、ApplicationException から継承した楽観的ロック例外クラス OptimissticLockException を作ります。 | ||
+ | |||
+ | {{fa> | ||
+ | <code php OptimissticLockException.php> | ||
+ | <?php | ||
+ | |||
+ | namespace App\Exceptions; | ||
+ | |||
+ | /** | ||
+ | * 楽観的ロック例外 | ||
+ | */ | ||
+ | class OptimissticLockException extends ApplicationException | ||
+ | { | ||
+ | /** | ||
+ | * Create Optimisstic Lock | ||
+ | * @param string $message | ||
+ | * @param \Exception $previous | ||
+ | */ | ||
+ | public function __construct() | ||
+ | { | ||
+ | parent:: | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * コンストラクタ内で使用されているボイラープレート '' | ||
+ | |||
+ | このようにして、アプリで発生する例外は ApplicationException から継承して作るようにします。 | ||
+ | |||
+ | \\ | ||
===== HTMLレイアウト ===== | ===== HTMLレイアウト ===== | ||
行 274: | 行 357: | ||
{{-- | {{-- | ||
- | @if(app_has(' | + | @if(app('auth.menu',false)) |
<ul class=" | <ul class=" | ||
<a id=" | <a id=" | ||
- | {{user()-> | + | {{AuthUser:: |
</a> | </a> | ||
<div class=" | <div class=" | ||
行 316: | 行 399: | ||
</ | </ | ||
- | <footer class=" | + | <footer class=" |
{!! DebugBar:: | {!! DebugBar:: | ||
</ | </ | ||
行 334: | 行 417: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
* テンプレード変数 '' | * テンプレード変数 '' | ||
* フラッシュ変数 '' | * フラッシュ変数 '' | ||
* 最後尾に [[apricot: | * 最後尾に [[apricot: | ||
+ | * **ボイラープレート** | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | >''< | + | >''< |
HTMLテンプレートに関しては本編[[http:// | HTMLテンプレートに関しては本編[[http:// | ||
+ | |||
+ | |||
\\ | \\ | ||
行 409: | 行 501: | ||
\\ | \\ | ||
- | ===== スタブコントローラ | + | ===== スタブ画面 |
- | アプリの準備として最後に、スタブコントローラ(StabController)を作り、ルーティングからコントローラアクションの起動までをテストしてみます。 | + | アプリの準備として最後にスタブ画面を作り、ルーティングからコントローラアクションの起動までをテストしてみます。 |
==== ルーティング ==== | ==== ルーティング ==== | ||
行 465: | 行 557: | ||
* @return \Core\Foundation\Response | * @return \Core\Foundation\Response | ||
*/ | */ | ||
- | function index(int $no=null) | + | |
{ | { | ||
$title = "Stub {$no}"; | $title = "Stub {$no}"; | ||
行 479: | 行 571: | ||
* **render(string $view=null, array $variables=[])** | * **render(string $view=null, array $variables=[])** | ||
- $view : テンプレート名\\ 上例では assets/ | - $view : テンプレート名\\ 上例では assets/ | ||
- | - $variables : テンプレート変数の連想配列 | + | - $variables : テンプレート変数の連想配列\\ 上例では [$title, |
\\ | \\ | ||
行 501: | 行 593: | ||
{{-- コンテンツ --}} | {{-- コンテンツ --}} | ||
@section(' | @section(' | ||
- | @foreach($messages as $message) | + | |
- | < | + | |
- | @endforeach | + | < |
+ | @endforeach | ||
+ | @endif | ||
@endsection | @endsection | ||
</ | </ | ||
行 510: | 行 604: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
HTMLテンプレートに関しては本編[[http:// | HTMLテンプレートに関しては本編[[http:// |