Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:core:top

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
最新のリビジョン 両方とも次のリビジョン
apricot:core:top [2020/04/30 12:07]
y2sunlight [ヘルパー]
apricot:core:top [2020/06/03 09:59]
tanaka [ヘルパー]
行 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:middleware|Apricot 拡張]]
- +
-----+
  
 まずは、apricotのコアを作る為に以下を準備します。 まずは、apricotのコアを作る為に以下を準備します。
行 23: 行 23:
   * コアフォルダ、名前空間、オートローディングの設定   * コアフォルダ、名前空間、オートローディングの設定
   * コア構築のヘルパーとなるグローバル関数とベースクラス   * コア構築のヘルパーとなるグローバル関数とベースクラス
-\\+ 
 +----
  
 ===== 環境設定 ===== ===== 環境設定 =====
行 72: 行 73:
 </code> </code>
  
-core フォルダは[[https://www.php-fig.org/psr/psr-4/|PSR-4]]によるオートローディングのベースフォルダとなります。従って、core 下のフォルダ及びファイルはPSR-4の命名規則に従う必要があり、クラスを保存するフォルダ及びファイルはUpperCamelCaseを使用します。それ以外はsnake_caseを使用します。+  * core フォルダは[[https://www.php-fig.org/psr/psr-4/|PSR-4]]によるオートローディングのベースフォルダとなります。従って、core 下のフォルダ及びファイルはPSR-4の命名規則に従う必要があり、クラスを保存するフォルダ及びファイルはUpperCamelCaseを使用します。それ以外はsnake_caseを使用します。
  
 === configフォルダ === === configフォルダ ===
  
-プロジェクトフォルダ下に、アプリケーション設定用のフォルダ config を作成し、その下に2つのフォルダ(setting, setup)を作成します。+同様に、アプリケーション設定用のフォルダ config を作成し、その下に2つのフォルダ(setting, setup)を作成します。
  
 <code> <code>
行 87: 行 88:
 </code> </code>
  
-フォルダ及びファイル名は全てsnake_case使用します。+=== assetsフォルダ === 
 + 
 +同様に、リソース用のフォルダ assets を作成し、その下に3つのフォルダ(lang, sql, views)を作成します。 
 + 
 +<code> 
 +apricot [プロジェクト] 
 + | 
 + ├── assets [リソース] 
 +    | 
 +    |── lang  [言語別の出力テキスト] 
 +    |── sql   [SQLファイル
 +    └── views [HTMLテンプレート] 
 +</code> 
 + 
 +=== var フォルダ === 
 + 
 +同様に、フォルダ var 作成し、その下に3つのフォルダ(cache, db, logs)を作成します。 
 + 
 +<code> 
 +apricot [プロジェクト] 
 + | 
 + ├── var 
 +    | 
 +    ├── cache [キャッシュ] 
 +    ├── db    [DBファイル(sqlite)] 
 +    └── logs  [ログ] 
 +</code>
  
 \\ \\
行 165: 行 192:
 ===== ヘルパー ===== ===== ヘルパー =====
  
-グローバル関数を保存するためのPHPファイルを core\helper に作成します。目的別に2種類のPHPファイルがあります。+グローバル関数を保存するためのPHPファイルを core\helpers に作成します。目的別に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 ====
 +
 +utilities.php にはapricot内部で使用する様々な関数が実装さいれています。ほとんどの場合、アプリケーションから使用することはないと思います。使用法などは以下のソースコードを参照して下さい。
 +
 {{fa>folder-open-o}} ** /apricot/core/helper ** {{fa>folder-open-o}} ** /apricot/core/helper **
 <code php utilities.php> <code php utilities.php>
行 312: 行 392:
     return (new \ReflectionClass($object))->getShortName();     return (new \ReflectionClass($object))->getShortName();
 } }
-</code> 
  
-==== 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 + * Get snake_case from UpperCamelCase or lowerCamelCase 
- * @param string $key + * @param string $camel 
- * @param mixed $default + * @return string|null
- * @return mixed environment Variable+
  */  */
-function env($key, $default = null)+function snake_case(string $camel =null)
 { {
-    $value = getenv($key); +    if (!isset($camel)) return null; 
-    if ($value === false) + 
-    { +    $snake preg_replace('/([A-Z])/', '_$1', $camel)
-        return $default+    return ltrim(strtolower($snake)'_');
-    +
-     +
-    switch (strtolower($value)+
-    { +
-        case 'true': return true; +
-        case 'false':return false; +
-        case 'empty':return ''; +
-        case 'null' :return null; +
-    } +
-    return $value;+
 } }
  
 /** /**
- Abort + Get SQL text from a file 
- * @param int $code + * @param string $filename 
- * @param string $message + * @return array
- * @throws \Core\Exceptions\HttpException+
  */  */
-function abort(int $code, string $message=null)+function file_get_sql(string $filename):array
 { {
-    throw new Core\Exceptions\HttpException($code, $message);+    if (!file_exists($filename)) return []; 
 + 
 +    // Read a file 
 +    $text = file_get_contents($filename); 
 +    $text = str_replace(["\r\n","\r"], "\n", $text); 
 + 
 +    // Remove comment 
 +    $text = preg_replace("/\/\*.*?\*\//s", '', $text); 
 +    $text = preg_replace("/--.*?$/m", '', $text)
 + 
 +    // Split SQL text 
 +    $sql = preg_split("/\s*;\s*/", $text); 
 +    array_walk($sql, function(&$item){ 
 +        $item = trim($item); 
 +    }); 
 +    $sql = array_filter($sql, function($val){ 
 +        return !empty(trim($val)); 
 +    }); 
 +    return $sql;
 } }
 </code> </code>
apricot/core/top.txt · 最終更新: 2020/06/03 10:02 by tanaka