このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
apricot:core:top [2020/04/30 11:59] y2sunlight [ヘルパー] |
apricot:core:top [2020/05/15 22:06] y2sunlight [Apricot コア作成の準備] |
||
---|---|---|---|
行 9: | 行 9: | ||
* Apricot コア | * Apricot コア | ||
* Apricot コア作成の準備 | * Apricot コア作成の準備 | ||
- | * [[apricot: | + | * [[apricot: |
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
+ | * [[apricot: | ||
+ | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
- | * [[apricot: | + | * [[apricot: |
- | + | ||
- | ---- | + | |
まずは、apricotのコアを作る為に以下を準備します。 | まずは、apricotのコアを作る為に以下を準備します。 | ||
行 23: | 行 23: | ||
* コアフォルダ、名前空間、オートローディングの設定 | * コアフォルダ、名前空間、オートローディングの設定 | ||
* コア構築のヘルパーとなるグローバル関数とベースクラス | * コア構築のヘルパーとなるグローバル関数とベースクラス | ||
- | \\ | + | |
+ | ---- | ||
===== 環境設定 ===== | ===== 環境設定 ===== | ||
行 72: | 行 73: | ||
</ | </ | ||
- | > core フォルダは[[https:// | + | * core フォルダは[[https:// |
=== configフォルダ === | === configフォルダ === | ||
- | プロジェクトフォルダ下に、アプリケーション設定用のフォルダ config を作成し、その下に2つのフォルダ(setting, | + | 同様に、アプリケーション設定用のフォルダ config を作成し、その下に2つのフォルダ(setting, |
< | < | ||
行 87: | 行 88: | ||
</ | </ | ||
- | > フォルダ及びファイル名は全てsnake_caseを使用します。 | + | === assetsフォルダ |
+ | |||
+ | 同様に、リソース用のフォルダ assets を作成し、その下に3つのフォルダ(lang, | ||
+ | |||
+ | < | ||
+ | apricot [プロジェクト] | ||
+ | | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | === var フォルダ === | ||
+ | |||
+ | 同様に、フォルダ var を作成し、その下に3つのフォルダ(cache, | ||
+ | |||
+ | < | ||
+ | apricot [プロジェクト] | ||
+ | | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
\\ | \\ | ||
行 167: | 行 194: | ||
グローバル関数を保存するためのPHPファイルを core\helper に作成します。目的別に2種類のPHPファイルがあります。 | グローバル関数を保存するためのPHPファイルを core\helper に作成します。目的別に2種類のPHPファイルがあります。 | ||
- | * utilities.php --- PHPの基本的な組み込み関数を拡張する目的 | ||
* boilerplates.php --- apricotでよく使用される定型文的なコードパターンを関数化したもの\\ ( apricotではボイラープレートと呼んでいる ) | * boilerplates.php --- apricotでよく使用される定型文的なコードパターンを関数化したもの\\ ( apricotではボイラープレートと呼んでいる ) | ||
+ | |||
+ | * utilities.php --- PHPの組み込み関数を拡張した関数群\\ ( apricot内部で使用することが主な目的 ) | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== boilerplates.php ==== | ||
+ | boilerplates.php へは関数を逐次追加します。現段階での内容は以下の通りです。 | ||
+ | |||
+ | ^関数^機能^ | ||
+ | |env($key, $default = null)|環境変数(.envファイル設定値)の取得| | ||
+ | |abort(int $code, string $message=null)|HTTP例外(400, | ||
+ | |||
+ | <code php boilerplates.php> | ||
+ | <?php | ||
+ | /** | ||
+ | * Get Environment Variable | ||
+ | * @param string $key | ||
+ | * @param mixed $default | ||
+ | * @return mixed environment Variable | ||
+ | */ | ||
+ | function env($key, $default = null) | ||
+ | { | ||
+ | $value = getenv($key); | ||
+ | if ($value === false) | ||
+ | { | ||
+ | return $default; | ||
+ | } | ||
+ | | ||
+ | switch (strtolower($value)) | ||
+ | { | ||
+ | case ' | ||
+ | case ' | ||
+ | case ' | ||
+ | case ' | ||
+ | } | ||
+ | return $value; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Abort | ||
+ | * @param int $code | ||
+ | * @param string $message | ||
+ | * @throws \Core\Exceptions\HttpException | ||
+ | */ | ||
+ | function abort(int $code, string $message=null) | ||
+ | { | ||
+ | throw new Core\Exceptions\HttpException($code, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== utilities.php ==== | ||
+ | |||
+ | utilities.php にはapricot内部で使用する様々な関数が実装さいれています。ほとんどの場合、アプリケーションから使用することはないと思います。使用法などは以下のソースコードを参照して下さい。 | ||
{{fa> | {{fa> | ||
行 311: | 行 392: | ||
return (new \ReflectionClass($object))-> | return (new \ReflectionClass($object))-> | ||
} | } | ||
- | </ | ||
- | |||
- | boilerplates.php へは関数を逐次追加します。現段階での内容は以下の通りです。 | ||
- | |||
- | <code php boilerplates.php> | ||
- | <?php | ||
/** | /** | ||
- | * Get Environment Variable | + | * Get snake_case from UpperCamelCase or lowerCamelCase |
- | * @param string $key | + | * @param string $camel |
- | * @param mixed $default | + | * @return |
- | * @return | + | |
*/ | */ | ||
- | function | + | function |
{ | { | ||
- | | + | |
- | | + | |
- | { | + | $snake = preg_replace('/ |
- | return | + | |
- | | + | |
- | + | ||
- | switch | + | |
- | { | + | |
- | case 'true': return true; | + | |
- | case ' | + | |
- | case ' | + | |
- | case ' | + | |
- | } | + | |
- | return $value; | + | |
} | } | ||
/** | /** | ||
- | | + | |
- | * @param int $code | + | * @param string $filename |
- | * @param string $message | + | * @return array |
- | * @throws \Core\Exceptions\HttpException | + | |
*/ | */ | ||
- | function | + | function |
{ | { | ||
- | | + | |
+ | |||
+ | // Read a file | ||
+ | $text = file_get_contents($filename); | ||
+ | $text = str_replace([" | ||
+ | |||
+ | // Remove comment | ||
+ | $text = preg_replace("/ | ||
+ | $text = preg_replace("/ | ||
+ | |||
+ | // Split SQL text | ||
+ | $sql = preg_split("/ | ||
+ | array_walk($sql, | ||
+ | $item = trim($item); | ||
+ | }); | ||
+ | $sql = array_filter($sql, | ||
+ | return !empty(trim($val)); | ||
+ | }); | ||
+ | return $sql; | ||
} | } | ||
</ | </ |