Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apricot:core:top

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン 両方とも次のリビジョン
apricot:core:top [2020/04/30 11:13]
y2sunlight
apricot:core:top [2020/05/09 16:45]
y2sunlight [Apricot コア作成の準備]
行 9: 行 9:
   * Apricot コア   * Apricot コア
     * Apricot コア作成の準備     * Apricot コア作成の準備
-    * [[apricot:core:applocation-class|Apricot アプリケーションクラス]]+    * [[apricot:core:application-class|Apricot アプリケーションクラス]]
     * [[apricot:core:basic-class|Apricot 各種基本コアクラス]]     * [[apricot:core:basic-class|Apricot 各種基本コアクラス]]
     * [[apricot:core:request-class|Apricot リクエストクラス]]     * [[apricot:core:request-class|Apricot リクエストクラス]]
     * [[apricot:core:response-class|Apricot レスポンスクラス]]     * [[apricot:core:response-class|Apricot レスポンスクラス]]
 +    * [[apricot:core:base-controller|Apricot ベースコントローラ]]
 +    * [[apricot:core:completion|Apricot コアの完成]]
   * [[apricot:app:top|Apricot アプリ]]   * [[apricot:app:top|Apricot アプリ]]
   * [[apricot:ext:top|Apricot 拡張]]   * [[apricot:ext:top|Apricot 拡張]]
- 
----- 
  
 まずは、apricotのコアを作る為に以下を準備します。 まずは、apricotのコアを作る為に以下を準備します。
行 23: 行 23:
   * コアフォルダ、名前空間、オートローディングの設定   * コアフォルダ、名前空間、オートローディングの設定
   * コア構築のヘルパーとなるグローバル関数とベースクラス   * コア構築のヘルパーとなるグローバル関数とベースクラス
-\\+ 
 +----
  
 ===== 環境設定 ===== ===== 環境設定 =====
行 56: 行 57:
 \\ \\
  
-===== コアフォルダ =====+===== フォルダの作成 ===== 
 + 
 +=== coreフォルダ ===
 以下に示すようにプロジェクトフォルダ下に、コア用のフォルダ core を作成し、その下に4つのフォルダ(Derivations, Exceptions, Foundation, helpers)を作成します。 以下に示すようにプロジェクトフォルダ下に、コア用のフォルダ core を作成し、その下に4つのフォルダ(Derivations, Exceptions, Foundation, helpers)を作成します。
  
行 70: 行 73:
 </code> </code>
  
-クラスを保存するフォルダはUpperCamelCaseそれ以外はsnake_caseを使用しています+  * core フォルダは[[https://www.php-fig.org/psr/psr-4/|PSR-4]]によるオートローディングのベースフォルダとなります。従って、core 下のフォルダ及びファイルはPSR-4の命名規則に従う必要があり、クラスを保存するフォルダ及びファイルはUpperCamelCaseを使用します。それ以外はsnake_caseを使用します。 
 + 
 +=== configフォルダ === 
 + 
 +同様に、アプリケーション設定用のフォルダ config を作成し、その下に2つのフォルダ(setting, setup)を作成します。 
 + 
 +<code> 
 +apricot [プロジェクト] 
 + | 
 + ├── config [設定ファイル] 
 +    | 
 +    ├── setting [機能別の一般設定] 
 +    └── setup   [機能別の起動設定] 
 +</code> 
 + 
 +=== assetsフォルダ === 
 + 
 +同様に、リソース用のフォルダ assets を作成し、その下に3つのフォルダ(lang, sql, veiws)を作成します。 
 + 
 +<code> 
 +apricot [プロジェクト] 
 + | 
 + ├── assets [リソース] 
 +    | 
 +    |── lang  [言語別の出力テキスト] 
 +    |── sql   [SQLファイル] 
 +    └── veiws [HTMLテンプレート] 
 +</code> 
 + 
 +=== var フォルダ === 
 + 
 +同様に、フォルダ var を作成し、その下に3つのフォルダ(cache, db, logs)を作成します。 
 + 
 +<code> 
 +apricot [プロジェクト] 
 + | 
 + ├── var 
 +    | 
 +    ├── cache [キャッシュ] 
 +    ├── db    [DBファイル(sqlite)] 
 +    └── logs  [ログ] 
 +</code>
  
 \\ \\
行 150: 行 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,500番台)の発生|
 +
 +<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 'true': return true;
 +        case 'false':return false;
 +        case 'empty':return '';
 +        case 'null' :return null;
 +    }
 +    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, $message);
 +}
 +</code>
 +
 +\\
 +
 +==== utilities.php ====
 +
 +utilities.php にはapricot内部で使用する様々な関数が実装さいれています。ほとんどの場合、アプリケーションから使用することはないと思います。使用法などは以下のソースコードを参照して下さい。
  
 {{fa>folder-open-o}} ** /apricot/core/helper ** {{fa>folder-open-o}} ** /apricot/core/helper **
行 294: 行 392:
     return (new \ReflectionClass($object))->getShortName();     return (new \ReflectionClass($object))->getShortName();
 } }
-</code> 
  
 +/**
 + * Get SQL text from a file
 + * @param string $filename
 + * @return array
 + */
 +function file_get_sql(string $filename):array
 +{
 +    if (!file_exists($filename)) return [];
  
-boilerplates.php へは関数を逐次追加します。現段階での内容は以下の通りです。+    // Read a file 
 +    $text = file_get_contents($filename); 
 +    $text = str_replace(["\r\n","\r"], "\n", $text);
  
-<code php boilerplates.php> +    // Remove comment 
-<?php+    $text = preg_replace("/\/\*.*?\*\//s", '', $text); 
 +    $text = preg_replace("/--.*?$/m", '', $text);
  
-/** +    // Split SQL text 
- * Abort +    $sql = preg_split("/\s*;\s*/", $text); 
- * @param int $code +    array_walk($sqlfunction(&$item){ 
- @param string $message +        $item trim($item); 
- * @throws \Core\Exceptions\HttpException +    }); 
- */ +    $sql = array_filter($sqlfunction($val)
-function abort(int $codestring $message=null+        return !empty(trim($val)); 
-{ +    }); 
-    throw new Core\Exceptions\HttpException($code, $message);+    return $sql;
 } }
 </code> </code>
apricot/core/top.txt · 最終更新: 2020/06/03 10:02 by tanaka