コアポイント
- Ladderは、アプリケーションコードと同じ方法でデータベーススキーマの変更を追跡できるように、データベース移行を作成、実行、および管理するためのツールです。このツールは、任意の主要なフレームワークに統合でき、バージョン制御の変更と機能管理に使用できます。
- 移行は常に順番に実行され、ラダーは順番に移行を数え、データベース自体で実行された移行の記録を保存することでこれを保証し、以前の移行の再実行を妨げます。
- Ladderでは、デフォルトのユーザーアカウントなど、事前入力または「シード」データベースを作成することもできます。これは、LadderのKeyvalueストアを使用して行うことができ、後で参照するためにいくつかのデータを保存します。
- このツールは、データベース状態のステータスコマンド、データベース状態をダンプおよび復元するためのdiffおよびdiff-saveコマンド、および使用されるラダーのバージョンをチェックするためのバージョンコマンドなど、データベースを管理および監視するための追加のコマンドを提供します。
バージョン制御システムは、特にチームで作業する場合、コードの変更を追跡するために非常に貴重です。ただし、ほとんどのアプリケーションには、アプリケーションコード以上のものが含まれています。特に、パターンを変更する必要がある新しい機能を追加する場合、データベースの変更を管理することはより困難です。
モジュールで作業していると仮定し、データベーステーブルには追加の列が必要であることを認識してください。データベースクエリツールまたはコマンドラインを開き、その列を追加するだけです。ただし、これはバージョン制御アプリケーションコードのような変更の記録を残しません。これは、チームで作業するときに悪化する可能性があります。同僚が同じデータベースアップデートを実行せずにコードを変更すると、アプリケーションバージョンがクラッシュする可能性があります。これは、製品の更新をリリースするとさらに問題が発生します。これにより、同僚だけでなくユーザーにとってアプリが破損する可能性があるためです。
ソリューションの1つは、移行を使用して、データベーススキーマをコードに作成および変更する責任を転送することです。このようにして、変更はアプリケーションの残りの部分と一緒に管理でき、バージョン制御(バージョンを比較して監査証跡を維持できるなど)に慣れている機能を使用して、データベースの変更を処理できます。また、これらの変更を同じブランチまたはタグの一部にすることができるため、これらの変更をバージョンにシームレスに統合できます。
多くの主要なフレームワークには独自の移行実装がありますが、そうでない場合は、使用しない場合は、はしごを使用できます。
はしご紹介
Ladderは、データベースの移行を作成、実行、および管理するためのツールです。移行は単なるPHPクラスであるため、バージョン制御をアプリケーションの残りのコードでチェックインできます。
単一の移行でスキーマに多くの変更を加えることができますが、単一のテーブルまたは機能に移行を制限するのが最善です。
移行は常に順番に実行されます。したがって、数週間後に製品テーブルを作成して新しい移行を作成して、追加の列を追加して新しい移行を作成するとします。後者の前に前者を実行しようとすると、エラーが発生します。 Ladderは、移行に順番に移行し、データベース自体に移行を実行する記録(および時間)を保存することにより、この問題を解決します。
インストール
はしごは、BitbucketまたはComposerからダウンロードできます。ただし、起きて実行するにはいくつかのステップが必要です。
最も簡単な方法は(エレガントではないことを認めていますが)、プロジェクトルートからダウンロードまたはクローンを作成し、Ladderと呼ばれるディレクトリに配置することです。 Composerの使用に関する問題は、Composer Updateの実行が構成ファイルを上書きすることです。
5つの構成ファイルがあり、それぞれが手動で作成する必要があります。
cp ladder/config/config.php.example ladder/config/config.php cp ladder/config/database.php.example ladder/config/database.php cp ladder/config/diff.php.example ladder/config/diff.php cp ladder/config/editor.php.example ladder/config/editor.php cp ladder/config/table.php.example ladder/config/table.phpdatabase.php(データベース接続の詳細を含む)とeditor.phpを変更するだけで、希望するテキストエディターを指定し、作成時に新しい移行を自動的に開くことができます。
移行を作成
移行を作成してユーザーテーブルを作成することから始めましょう。コマンドラインについて
:これにより、Ladder/Migrations/00001_Create_Users_Tableという名前のファイルが作成されます。これには、コメントが発生したコメントの例がある基本構造が含まれています。 Ladder/config/editor.phpでauto-editをtrueに設定した場合、このファイルは指定されたテキストエディターですぐに開かれます。自由に移行を呼び出すことはできますが、一目でファイル名から移行が何をするかを見ることができると役立ちます。
php ladder/ladder.php create create_users_table
ここにファイルがどのように見えるか(明確にするためにコメントされたコードの行を削除しました):
移行が実行されたときにUP()メソッドを呼び、移行が巻かれたときのDown()メソッドを呼び出します。したがって、UP()メソッドとは逆の操作を常に実行する必要があります。この例では、up()メソッドはユーザーという名前のテーブルを作成し、down()メソッドは削除します。
class Create_Users_Table_Migration_00001 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->create_table('users') ->column('email', 'varchar', array('limit' => 128, 'null' => FALSE)) ->column('password', 'varchar', array('limit' => 32, 'null' => FALSE)); } public function down() { $this->table('users')->drop(); } }
create_table()メソッドは新しいテーブルへの参照を返しますが、テーブルクラスには新しい列を追加する列()メソッドがあります。スムーズなインターフェイスがあるため、それらをリンクして複数の列を同時に作成できます。 ID列がないことに気付くでしょう - これは自動的に作成されます - つまり、IDという名前の自動インクラメント整数プライマリキーです。
table()テーブルへの参照を返しますが、テーブルがまだ存在しない場合はテーブルも作成します。
別の移行を作成しましょう。今回は役割を作成しますテーブル:
ファイル自体:
php ladder/ladder.php create create_roles_table
ここで、実際に移行を実行する必要があります。これを行うには:
class Create_Roles_Table_Migration_00002 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->table('roles') ->column('nme', 'varchar', array('limit' => 128, 'null' => FALSE)); } public function down() { $this->table('roles')->drop(); } }
データベースを見ると、4つのテーブルがあります。
移行は自動的に作成され、どの移行が実行されたかを追跡する Migrations_kvdataも作成され、移行はキー価値ストレージに使用できます ユーザーと役割は、追加したテーブルです。php ladder/ladder.php migrateただし、役割の移行に細心の注意を払うと、名前の代わりにNMEと呼ばれる列が作成されることに気付くでしょう。この時点で、これを修正して、移行を「元に戻す」ことで、クラスを変更し、再度実行することができます。移行をロールバックするには:
cp ladder/config/config.php.example ladder/config/config.php cp ladder/config/database.php.example ladder/config/database.php cp ladder/config/diff.php.example ladder/config/diff.php cp ladder/config/editor.php.example ladder/config/editor.php cp ladder/config/table.php.example ladder/config/table.php番号2は、移動が戻ってくることを示しています。これは、主要なゼロなしで、移行ファイル名の接頭辞です。
今、あなたは単に修正を行い、再び移行を実行することができます:
php ladder/ladder.php create create_users_table移行テーブルには、ランニングコンテンツとUNRUNコンテンツの記録が保存されているため、最初の移行が再実行されることを心配する必要はありません。
再適用を使用するより速い方法もあります:
class Create_Users_Table_Migration_00001 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->create_table('users') ->column('email', 'varchar', array('limit' => 128, 'null' => FALSE)) ->column('password', 'varchar', array('limit' => 32, 'null' => FALSE)); } public function down() { $this->table('users')->drop(); } }これにより、2番目のMigration's Down()メソッドを一度に呼び出し、その後UP()メソッドを呼び出します。
しばらくして、ユーザーテーブルにステータスフィールドを含める必要がある新しい機能を開発します。これを行うには、新しい移行を作成する必要があります。
移行は次のようになります:
php ladder/ladder.php create create_roles_table
前と同様に、次のコマンドで実行してください:
class Create_Roles_Table_Migration_00002 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->table('roles') ->column('nme', 'varchar', array('limit' => 128, 'null' => FALSE)); } public function down() { $this->table('roles')->drop(); } }
ここで、データベースを確認すると、ユーザーテーブルに新しい列があることがわかります。
php ladder/ladder.php migrateデータベースシード
データベーススキーマを管理するための移行の記述に加えて、はしごを使用してデータベースを事前に入力する(つまり、シード)データベースを使用することもできます。
たとえば、create_users_table移行を拡張してデフォルトのルートユーザーアカウントを作成できます。
set()およびget()メソッドを使用して、LadderのKeyvalueストアを利用して、後で参照できるようにユーザーIDを保存していることに注意してください。
php ladder/ladder.php remove 2移行されたCSVファイルからデータをインポートすることもできます。たとえば、
csvデータを挿入する代わりに更新するには、これを行うことができます:
php ladder/ladder.php migrate
この場合、送信パラメーターは更新を実行することを意味し、3番目のパラメーターには、更新するレコードを決定するためのキーフィールドのリストが含まれています。
php ladder/ladder.php reapply 2
他のデータベースを追加
デフォルトのデータベースファイルラダー/config/database.phpは、おそらくステージングまたはリアルタイムのデータベースを追加する方法を示しています。たとえば、
このように使用する接続を指定できます:
php ladder/ladder.php create add_status_to_users_tableその他のコマンド
class Add_Status_To_Users_Table_Migration_00003 extends Migration { protected $min_version = '0.8.1'; public function up() { $this->table('users') ->column('status', 'integer', array('null' => FALSE, 'default' => 0)); } public function down() { $this->table('users')->drop_column('status'); } }
status
ステータスコマンドを使用してデータベースステータスを取得できます。
例の出力:(元のドキュメントが特定の出力コンテンツを提供していないため、出力の例はここでは省略されています)
php ladder/ladder.php migratediffとdiff-save (これらのコマンドが元のドキュメントで詳細に説明されているため、diffとdiff-saveコマンドの説明はここで省略されています)
バージョン
(バージョンのコマンドの説明は、元のドキュメントで詳細に説明されているため、ここでは省略されています)
概要
この記事では、データベーススキーマと事前入力データを維持するために使用されるラダーを紹介します。 (元のドキュメントには梯子が要約されているため、概要部分はここで省略されています)データベースバージョンのバージョンとはしごの移行に関するFAQ
(FAQセクションはここでは省略されています。元のドキュメントはすでに詳細なFAQを提供しているため)
以上がはしごの移行によるデータベースバージョン化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

メモ帳++7.3.1
使いやすく無料のコードエディター
