Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:core:top

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:core:top [2020/04/30 12:11]
y2sunlight
apricot:core:top [2020/06/03 10:02] (現在)
tanaka [utilities.php]
行 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ファイルがあります。
  
   * boilerplates.php --- apricotでよく使用される定型文的なコードパターンを関数化したもの\\ ( apricotではボイラープレートと呼んでいる )   * boilerplates.php --- apricotでよく使用される定型文的なコードパターンを関数化したもの\\ ( apricotではボイラープレートと呼んでいる )
-  * utilities.php --- PHPの基本的な組み込み関数を拡張する目的+ 
 +  * utilities.php --- PHPの組み込み関数を拡張した関数群\\ ( apricot内部で使用することが主な目的 
 + 
 +\\
  
 ==== boilerplates.php ==== ==== boilerplates.php ====
行 219: 行 249:
 ==== utilities.php ==== ==== utilities.php ====
  
-utilities.php にはapricot内部で使用する様々な関数が実装さいれています。ほとんどの場合、アプリケーションから使用することはないと思ます。使用法などは以下のソースコードを参照して下さい。+utilities.php にはapricot内部で使用する様々な関数が実装さいれています。ほとんどの場合、アプリケーションから使用することはないと思ます。使用法などは以下のソースコードを参照して下さい。
  
-{{fa>folder-open-o}} ** /apricot/core/helper **+{{fa>folder-open-o}} ** /apricot/core/helpers **
 <code php utilities.php> <code php utilities.php>
 <?php <?php
行 361: 行 391:
 { {
     return (new \ReflectionClass($object))->getShortName();     return (new \ReflectionClass($object))->getShortName();
 +}
 +
 +/**
 + * Get snake_case from UpperCamelCase or lowerCamelCase
 + * @param string $camel
 + * @return string|null
 + */
 +function snake_case(string $camel =null)
 +{
 +    if (!isset($camel)) return null;
 +
 +    $snake = preg_replace('/([A-Z])/', '_$1', $camel);
 +    return ltrim(strtolower($snake), '_');
 +}
 +
 +/**
 + * Get SQL text from a file
 + * @param string $filename
 + * @return array
 + */
 +function file_get_sql(string $filename):array
 +{
 +    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.1588216315.txt.gz · 最終更新: 2020/04/30 12:11 by y2sunlight