Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:core:basic-class

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:core:basic-class [2020/05/08 15:14]
y2sunlight [初期設定ファイル]
apricot:core:basic-class [2020/06/03 11:39] (現在)
tanaka [ErrorBagクラス]
行 16: 行 16:
     * [[apricot:core:completion|Apricot コアの完成]]     * [[apricot:core:completion|Apricot コアの完成]]
   * [[apricot:app:top|Apricot アプリ]]   * [[apricot:app:top|Apricot アプリ]]
-  * [[apricot:app:ext|Apricot 拡張]] +  * [[apricot:ext:middleware|Apricot 拡張]]
- +
-\\+
  
 次に、Applicationクラス以外の基本的なコアクラスを作ります。ここで作成する多くのクラスはシングルトンとして実装します。 次に、Applicationクラス以外の基本的なコアクラスを作ります。ここで作成する多くのクラスはシングルトンとして実装します。
行 282: 行 280:
  
   * name --- ログの名前(既定値は 環境変数APP_NAMEの値)   * name --- ログの名前(既定値は 環境変数APP_NAMEの値)
-  * path --- ログの出力パス(既定値は var/log/)+  * path --- ログの出力パス(既定値は var/logs/)
   * level --- ログの出力レベル(既定値は 'debug')   * level --- ログの出力レベル(既定値は 'debug')
   * max_files --- ログファイルの最大保存数(0は無制限)   * max_files --- ログファイルの最大保存数(0は無制限)
行 648: 行 646:
   * renderer.initialize --- 初期化コードをレンダリングするか否か(既定値はtrue)   * renderer.initialize --- 初期化コードをレンダリングするか否か(既定値はtrue)
   * renderer.stacked_data --- スタックデータをレンダリングするか否か(既定値はtrue)   * renderer.stacked_data --- スタックデータをレンダリングするか否か(既定値はtrue)
- 
-\\ 
- 
-===== ORM ====== 
- 
-ORマッパーには[[basic-library:idiorm:1.5|Idiorm]]を使用します。Idiormは元々シングルトンとして実装してあるのでそのまま使えます。使い方やメソッドについてはIdiormの[[https://idiorm.readthedocs.io/en/latest/|マニュアル]]を参照して下さい。 
- 
-\\ 
- 
-==== 設定ファイル ==== 
- 
-{{fa>folder-open-o}} ** /apricot/config/setting ** 
-<code php idiorm.setting.php> 
-<?php 
-return 
-[ 
-    'sqlite' => [ 
-        'db_file' => var_dir('db/apricot.sqlite'), 
-        'connection_string' => 'sqlite:'.var_dir('db/apricot.sqlite'), 
-        'caching' => true, 
-        'logging' => true, 
-    ], 
-]; 
-</code> 
- 
-設定はデータベース毎に行います。apricotではSQLiteを使用します。 
- 
-  * SQLite.db_file --- SQLiteなどのファイル共有型DBの場合に設定 (既定値は var/db/apricot.sqlite') 
-  * SQLite.connection_string --- 接続文字列 
-  * SQLite.caching --- キャッシングの有無 
-  * SQLite.logging --- ロギングの有無 
- 
-詳しくは以下を参照して下さい:\\  
-https://idiorm.readthedocs.io/en/latest/configuration.html#id1 
- 
- 
-\\ 
- 
-==== 初期設定ファイル ==== 
- 
-Idiorm(ORMクラス)には以下の初期設定ファイルが存在します。 
- 
-{{fa>folder-open-o}} ** /apricot/config/setup ** 
-<code php idiorm.setup.php> 
-<?php 
-//------------------------------------------------------------------- 
-// ORM(idirom)の初期設定 
-//------------------------------------------------------------------- 
-return function():bool 
-{ 
-    // データベースファイルの準備 
-    $db_file = config('idiorm.sqlite.db_file'); 
-    if (!file_exists($db_path=dirname($db_file))) 
-    { 
-        mkdir($db_path,null,true); 
-    } 
- 
-    // DBファイルの存在確認 
-    $new_db_file = !file_exists($db_file); 
- 
-    // データベース接続 
-    ORM::configure([ 
-        'connection_string' => config('idiorm.sqlite.connection_string'), 
-        'caching' => config('idiorm.sqlite.caching',false), 
-        'logging' => false, 
-        'logger' => function($log_string, $query_time) 
-        { 
-            // SQL debug logging 
-            \Core\Log::info("SQL",[$log_string]); 
-        }, 
-    ]); 
- 
-    //------------------------------------------- 
-    // 初期データの作成 
-    //------------------------------------------- 
-    if ($new_db_file) 
-    { 
-        $sql_text = file_get_sql(assets_dir('sql/create.sql')); 
-        if (!empty($sql_text)) 
-        { 
-            foreach($sql_text as $sql) 
-            { 
-                ORM::get_db()->exec($sql); 
-            } 
-        } 
-    } 
- 
-    //------------------------------------------- 
-    // テーブルが空の時、初期ユーザを作成する 
-    //------------------------------------------- 
-    $user = ORM::for_table('user')->find_one(); 
-    if ($user===false) 
-    { 
-        // オートインクリメントのクリア 
-        ORM::get_db()->exec("delete from sqlite_sequence where name='user'"); 
- 
-        // 初期ユーザ作成 
-        $user = ORM::for_table('user')->create(); 
-        $user->account = app('auth.initial_user.account'); 
-        $user->password = password_hash(app('auth.initial_user.password'), PASSWORD_DEFAULT); 
-        $user->email = 'root@sample.com'; 
-        $user->note = 'Initial User'; 
-        $user->set_expr('created_at', "datetime('now')"); 
-        $user->set_expr('updated_at', "datetime('now')"); 
-        $user->save(); 
-    } 
- 
-    // SQLログ開始 
-    ORM::configure('logging' , config('idiorm.sqlite.logging',false)); 
-    return true; // Must return true on success 
-}; 
-</code> 
- 
-初期設定ファイルでは以下の事をおこないます: 
- 
-  * データベースの保存フォルダが存在しない場合は作成します 
-  * データベースへの接続 
-  * 初期データの作成 (後述します:今のところはTODO:です) 
-  * SQLログの開始 (logging設定がtrueの場合) 
  
 \\ \\
行 831: 行 710:
 </code> </code>
  
-Viewクラスはテンプレートファイルのパス、コンパイル後のHTMLファイルのパス及び実行モードをBladeOneのコンストラクタに渡しているだけです。それらの値は、設定ファイル(bladeone.setting.php)から取得します。+Viewクラスはテンプレートファイルのパス、コンパイル後のHTMLファイルのパス及び実行モードをBladeOneのコンストラクタに渡しているだけです。それらの値は、設定ファイル(bladeone.setting.php)から取得します。
    
 \\ \\
行 1055: 行 934:
 </code> </code>
  
-> この関数名は **__** です。2つ並んだアンダースコアはPythonプログラマーの間では ''dunders'' (double underscoreの意) と呼ばれ特別なクラス内メンバに付加されますが、ここではそのような意味はなくトランスレータを表す関数名としてLaravelに準じました。+> この関数名は <nowiki>__</nowiki> です。2つ並んだアンダースコアはPythonプログラマーの間では ''dunders'' (double underscoreの意) と呼ばれ特別なクラス内メンバに付加されますが、ここではそのような意味はなくトランスレータを表す関数名としてLaravelに準じました。
  
 \\ \\
行 1068: 行 947:
  
 ^メソッド^機能^ ^メソッド^機能^
-|%%_ _%%construct($errors=null, string $name=self::DEFAULT_NAME)|エラーバッグの生成|+|<nowiki>__</nowiki>construct($errors=null, string $name=self::DEFAULT_NAME)|エラーバッグの生成|
 |count(string $name=null):int|エラー数の取得| |count(string $name=null):int|エラー数の取得|
 |has(string $key, string $name=self::DEFAULT_NAME):bool|キーによるエラーの存在確認| |has(string $key, string $name=self::DEFAULT_NAME):bool|キーによるエラーの存在確認|
 |get(string $key, string $name=self::DEFAULT_NAME)|キーによるエラーの取得| |get(string $key, string $name=self::DEFAULT_NAME)|キーによるエラーの取得|
 |all(string $name=null):array|全てのエラーの取得| |all(string $name=null):array|全てのエラーの取得|
-|put($errors)|xxxx| +|put($errors)|ラー配列設定|
- +
-<fs small><fc #ff0000>※コンストクタのアンダスコアにはWiki都合上、空白を挿入しています</fc></fs>+
  
 >エラーバッグは[[https://www.php.net/manual/ja/class.iteratoraggregate.php|IteratorAggregateインターフェース]]を実装してるのでforeach()などのIteratorを使用した構文が使用できます。但し、Countable インターフェイス は実装していないので、count関数ではなくErrorBag@countメソッドを使用して下さい。 >エラーバッグは[[https://www.php.net/manual/ja/class.iteratoraggregate.php|IteratorAggregateインターフェース]]を実装してるのでforeach()などのIteratorを使用した構文が使用できます。但し、Countable インターフェイス は実装していないので、count関数ではなくErrorBag@countメソッドを使用して下さい。
行 1108: 行 985:
      * @param string $name Bag name      * @param string $name Bag name
      */      */
-    public function _ _construct($errors=null, string $name=self::DEFAULT_NAME)+    public function __construct($errors=null, string $name=self::DEFAULT_NAME)
     {     {
         $this->name = $name;         $this->name = $name;
apricot/core/basic-class.1588918461.txt.gz · 最終更新: 2020/05/08 15:14 by y2sunlight